php mysql_fetch_array работает с полем ввода html? - PullRequest
0 голосов
/ 18 марта 2010

это весь мой PHP-код:

<?php if(empty($_POST['selid']))
        {echo "no value selected";  }
        else 
        {
            $con = mysql_connect("localhost","root","");
            if(mysql_select_db("cdcol", $con))
                {
                    $sql= "SELECT * FROM products where Id = '$_POST[selid]'";

                    if($result=mysql_query($sql))
                    {   

                        echo "<form name=\"updaterow\" method=\"post\" action=\"dbtest.php\">";
                        while($row = mysql_fetch_array($result))
                        { 
                        echo "Id :<input type=\"text\" name=\"ppId\" value=".$row['Id']." READONLY></input></br>";
                        echo "Name :<input type=\"text\" name=\"pName\" value=".$row['Name']."></input></br>";
                        echo "Description :<input type=\"text\" name=\"pDesc\" value=".$row['Description']."></input></br>";
                        echo "Unit Price :<input type=\"text\" name=\"pUP\" value=".$row['UnitPrice']."></input></br>";
                        echo "<input type=\"hidden\" name=\"mode\" value=\"Update\"/>";

                        }
                        echo "<input type=\"submit\" value=\"Update\">";
                        echo "</form>";
                    }
                    else {echo "Query ERROR";}
                }
        }
?>

ПРОБЛЕМА вот, .... если значение, которое я получаю из базы данных с помощью mysql_fetch_array($result), выглядит так:

тогда; в поле ввода отображается только «мое» слово (или цифра) после того, как «ПРОБЕЛ» (то есть пробел) не отображается? может ли поле ввода, как указано выше, отображать данные двумя или более словами (разделенными пробелами)?

Ответы [ 2 ]

1 голос
/ 18 марта 2010
echo "Unit Price :<input type=\"text\" name=\"pUP\" value=\"".$row['UnitPrice']."\"></input></br>";

Вам необходимо заключить value в кавычки.

1 голос
/ 18 марта 2010

html-парсер не может знать, что означает значение = abc def. Он должен анализировать его как два атрибута: атрибут value со значением abc и атрибут def без значения.

Вы должны заключить значение в кавычки, например,
Вы также должны закодировать "как & quot; в пределах значения. В противном случае html-парсер снова запутается, так как он не может знать, что второе" in value = "abc" def "не является разделителем, а частью содержимого Для этого вы можете использовать htmspecialchars () .

1012 *, например *

while($row = mysql_fetch_array($result))
{
  printf('
    Id :<input type="text" name="ppId" value="%s" READONLY></input><br>
    Name :<input type="text" name="pName" value="%s"></input><br>
    Description :<input type="text" name="pDesc" value="%s"></input><br>
    Unit Price :<input type="text" name="pUP" value="%s"></input><br>";
    <input type="hidden" name="mode" value="Update"/>',
    htmlspecialchars($row['Id']),
    htmlspecialchars($row['Name']),
    htmlspecialchars($row['Description']),
    htmlspecialchars($row['UnitPrice'])
  );
}
...