簡體   English   中英

如何將變量添加到while循環中導致php

[英]How to add variables to while loop results in php

您好,我知道我是php和編碼的新手,但是我在論壇和視頻中找了幾天,但仍然沒有找到明確的答案。 在嘗試打擾您之前,我已經進行了徹底的搜索。

我有3個div

<div id="left_div"></div>
<div id="middle_div"></div>
<div id="right_div"></div>

我有一個while循環,將一些顏色數據輸出到left_div

$query = mysql_query("SELECT * FROM colorstyle");
while($data = mysql_fetch_array($query)){
echo "$data[1]";
 }

當我回顯數據時,我的結果是

藍色

紅色

綠色

紫色

等等,如果用戶看不到他們的顏色,他們可以更新數據庫的顏色表。

注意*顏色數據庫可供所有用戶使用

middle_div我有一個帶有ADD和Delete按鈕的表單


流程:

用戶轉到color_update_page.php

left_div顯示全局數據庫中可用的顏色。

right_div顯示用戶從全局數據庫中選擇並添加到數據庫中顏色表中的顏色

當用戶看到他們希望在添加顏色left_div ,他們單擊顏色,然后單擊添加按鈕middle_div ,而且它在添加到表中根據其顏色數據庫right_div


我如何做到這一點

為了使while循環結果可點擊,我使用了html並在輸出中添加了一個按鈕

$query = mysql_query("SELECT * FROM colorstyle");
while($data = mysql_fetch_array($query)){
echo "<button value=\"$data[1]\" > </button><br>";
 }

為了將按鈕的值添加到表單中,我在按鈕旁邊添加了帶有按鈕值的輸入字段,這樣,我就不必擔心用戶必須在輸入字段中填寫值...所以現在看起來像這樣

$query = mysql_query("SELECT * FROM colorstyle");
while($data = mysql_fetch_array($query)){
echo "<input type='text' value=\"$data[1]\"><button value=\"$data[1]\" > </button><br>";
 }

下一步,我將有一個隱藏的輸入來捕獲回顯輸入字段的值.....所以現在代碼看起來像這樣

$query = mysql_query("SELECT * FROM colorstyle");
while($data = mysql_fetch_array($query)){
echo "<input type='text' value=\"$data[1]\"><button value=\"$data[1]\" > </button>
<br>";
 }

   <input type="text" value="" style="display:none">......  lets call this this_will_change

然后,我將要使用javascript和onclick函數來更改userInput的值...。因此,當用戶單擊生成回顯的按鈕時,來自生成的回顯輸入的值將傳輸到該字段並更改了隱藏的字段。然后,當單擊添加按鈕時,用戶色表將被更新...

繼承人的JavaScript和相應的PHP ...

請注意: id='userInput'已添加到生成的輸入標簽中。...並且id="this_will_change"已添加到隱藏的輸入字段中。

<script type=\"text/javascript\">
   function changeText2(){
   var userInput = document.getElementById('$data[1]').value;
   document.getElementById('this_will_change').innerHTML = $data[1];
   }
</script>

<?php
       $query = mysql_query("SELECT * FROM colorstyle");
while($data = mysql_fetch_array($query)){
echo "<input id='userInput' type='text' value=\"$data[1]\"><button value=\"$data[1]\" onclick='changeText2()'  > </button>
<br>";
 }

   <input type="text" value="" style="display:none" id="this_will_change">......  
?>

我面臨的問題:

我不知道我無法在while循環數組之外訪問數據....所以我在echo的while循環中添加了代碼。 當我查看視圖源代碼時,這不僅很凌亂,而且可以看到JavaScript重復了while循環。

另外,為了使其正常工作,我還必須將ADD和Delete表單添加到while循環中,從而循環並復制該表單。

我試圖解決這個問題,並將while循環結果放入此變量中

$query = mysql_query("SELECT * FROM colors");

while($data = mysql_fetch_array($query)){
echo "$data[0]";
$results[] = $data['0']
}
$results = implode("<br> ",$results);
echo "<button>$results</button>";

這樣就可以了,但是它會將整個數組呼應到一個大的單個按鈕中……與之前分離數組的所有結果時不同。


我在問什么?

我該如何動態地向while循環的每個結果中添加一個變量。由於我不知道用戶想要添加哪種顏色,所以除非我與用戶手動進行操作,否則我無法添加帶有值的普通變量。添加顏色,那么我將不得不手動創建變量

這意味着while循環的結果是否為

藍色

紅色

橙色等

我如何將其更改為

$blue = 'blue';

$red = 'red';

$orange = 'orange';

我知道必須有一種方法來完成此操作,因為我在其他網站上看到了類似的版本。 就像在iOffer.com上一樣。 如果有一個國家不希望出售給您,則可以在left_div單擊該國家(然后突出顯示該國家)...然后在middle_div添加..........以及您的清單受限制的國家/地區將會更新。


我調查的內容:

我已經研究了變量變量,但是每個人都說不應該這樣做,而且我不太理解。

我已經閱讀了許多使用AJAX的方法,但我還沒有。

是的,我知道MySQLi,OOP和jQuery更適合編碼,但我想在使用mysql和javascript之前先掌握一下。 我想使用mysql對這個網站進行編碼,然后使用這些技術升級網站。.如果需要,請嘗試限制對javascript和mysql的響應。

道歉:

很抱歉,我對php的無知已久。 但是我讀了很多遍,以至於海報從未清楚地描述他們所遇到的問題以及他們要解決的問題。 希望我很清楚並且沒有煩惱。 預先感謝您的幫助。

外觀如下:

<head>
  <style>

 div{
 text-align:center;
 }

 li{
 list-style:none;
 }

 #color_select{
 overflow:auto;
 width:706px;

 #color_select li{
 float:left;

 #left_div{
 border:1px solid black;
 width:300px;

 #middle_div{
 border:1px solid black;
 width:100px;

 #right_div{
 border:1px solid black;
 width:300px;
}
 </style>
</head>

        <body>
<nav id="color_select">
    <ul>
       <li>
          <div id="left_div">
          <label>Available Colors</label>
          </div>
      </li>
      <li>
          <div id="middle_div">
          <label>Available Colors</label>
          </div>
      </li>
      <li>
          <div id="right_div">
          <label>Available Colors</label>
          </div>
      </li>
    </ul>
</nav>
</body>


</html>

完全不使用javascript ,這就是我考慮的解決方法:

  • 從數據庫中獲取顏色到單個變量$colours
  • 通過訪問POST變量獲取已經選擇的顏色( $coloursSelected = $_POST['colours']
  • 開始您的表單( <form method="post">
  • 創建一個隱藏的div( style="display: none;"
  • 循環遍歷顏色並將其作為復選框元素添加到隱藏的div中( <input type="checkbox" name="colours[]" value="{$colour}" /> )-您需要確保selected="selected"如果已選擇selected="selected"屬性(以$coloursSelected
  • 為您的三欄做HTML
  • 在第一列中,將循環顯示所有顏色和所選顏色之間的差異( $unselectedColours = array_diff($colours, $coloursSelected);
  • 將這些顏色作為按鈕返回到頁面,如下所示:

    <input type="submit" name="added" value="{$color}" />

  • 在右側列中,以類似的方式循環選擇已經選擇的顏色並按回顯按鈕:

    <input type="submit" name="removed" value="{$color}" />

這缺少一些關鍵步驟,因為這不是“為您編寫”網站。 您應該在var_dump($_POST)添加一個var_dump($_POST) ,以便您了解發生了什么。

我希望這能將您推向正確的方向。

每當您看到重復的內容時,通常意味着您做錯了什么。

您的方法在這里是錯誤的-無需多次查詢數據庫。 您只提取一次數據,將其放入一個數組中,然后一直使用該數組。

我看到您在這里嘗試過類似的操作:

$query = mysql_query("SELECT * FROM colors");

while($data = mysql_fetch_array($query)){
echo "$data[0]";
$results[] = $data['0']
}
$results = implode("<br> ",$results);
echo "<button>$results</button>";

一個回聲將打印一件事-這是一個帶有內爆數組的按鈕。 不好。 您想遍歷所有結果並為每個結果創建一個按鈕。 所以:

$query = mysql_query("SELECT * FROM colors");

while($data = mysql_fetch_array($query)){
    echo "$data[0]";
    $results[] = $data['0']
}
for($i = 0; $i < count($results); $i++) {
    echo '<button>', $results[$i], '</button><br/>';
}

現在,這將輸出如下內容:

<button>Blue</button><br/>
<button>Red</button><br/>
<button>Orange</button><br/>

這里的一個好主意是在這些按鈕上添加一些JavaScript控件。 讓我們添加一個onclick處理程序,該處理程序將調用某些函數並將顏色索引作為參數傳遞。 修改后的循環現在看起來像這樣:

for($i = 0; $i < count($results); $i++) {
    echo "<button onclick='buttonClicked($i)'>", $results[$i], '</button><br/>';
}

順便說一句,jQuery在編碼方面並不比普通的JavaScript更好-易於學習,是的……但是速度也越來越慢(庫的大小),最后,它仍然使用普通的JavaScript。 如果您對JavaScript有扎實的知識,而不僅僅是jQuery,那么您一定會是一個更好的開發人員。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM