繁体   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