Я новичок в php, и я прочитал почти все форумы, но результата нет !!! Я пытаюсь получить некоторые данные из моего mySql db, используя форму html и файл php. Форма html, называемая select.htm, выглядит следующим образом:
<form name="choose" method = "POST" action = search.php> <table> <tr> <tr><td height="3"></td></tr> <td width="60"><font1>Denomination</font1></td> <td><Select name = denom> <option value="" selected>All</option> <option value="half">Half Cents</option> <option value="large">Large Cents</option> <option value="bust">Bust Dollars</option> <option value="morgan">Morgan Dollars</option> </Select></td></tr> <tr> <tr><td height="3"></td></tr> <td width="60"><font1>Year</font1></td> <td><Select name = year> <option value="" selected>All</option> <option value="1793"><font4>1793</font></option> <option value="1794">1794</option> <option value="1795">1795</option> <option value="1796">1796</option> </Select></td></tr> <tr> <tr><td height="3"></td></tr> <td width="60"><font1>Picture</font1></td> <td><Select name = picture> <option value="" selected>All</option> <Option value="liberty">Liberty Cap</Option> <Option value="draped">Draped Bust</Option> <Option value="classic">Classic Head</Option> <Option value="chain">Chain Reverse</Option> </Select></td></tr> <tr><td height="3" colspan="2"></td></tr> <tr><td><font1>Text</b></font1></td> <td><input name=text type=text></td></tr> </Select></td></tr> <tr><td><input name=look type=submit value=Submit></td></tr> </form>
И файл php, называемый search.php, выглядит следующим образом:
<html> <body> <?php $username="root"; $password=""; $database="xxxxxxxx"; mysql_connect(localhost,$xxxxxx,$xxxxxx); @mysql_select_db($database) or die( "Unable to select database"); $query="SELECT * FROM coins"; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); echo "<b><center>US Coins</center></b><br><br>"; $i=0; while ($i < $num) { $denom=$_POST["denom"]; $year=$_POST["year"]; $picture=$_POST["picture"]; $text=$_POST["text"]; echo "$denom<br>Year: $year<br>Picture: $picture<br>Text: $text<br><br>"; $i++; } ?> </body> </html>
в<html> <body> <?php $username="root"; $password=""; $database="xxxxxxxx"; mysql_connect(localhost,$xxxxxx,$xxxxxx); @mysql_select_db($database) or die( "Unable to select database"); $query="SELECT * FROM coins"; $result=mysql_query($query); $num=mysql_numrows($result); mysql_close(); echo "<b><center>US Coins</center></b><br><br>"; $i=0; while ($i < $num) { $denom=$_POST["denom"]; $year=$_POST["year"]; $picture=$_POST["picture"]; $text=$_POST["text"]; echo "$denom<br>Year: $year<br>Picture: $picture<br>Text: $text<br><br>"; $i++; } ?> </body> </html>
Я получаю вывод в количестве строк в моей базе данных, с параметрами, которые я выбрал:
половина Год: 1793 Картина: Текст:
половина Год: 1793 Картина: Текст:
…….. продолжается.
Я не мог решить проблему. Все помощь будет очень оценена …
Sarp
Вам понадобится код лучше, если вы захотите найти свою ошибку.
1) http://validator.w3.org – поместите свой HTML-код в эту форму и сначала исправьте ВСЕ ошибки.
2) Разберите все PHP-код перед запуском HTML. Кроме того, пользователь увидит только половину загруженной страницы за секунду. И это не совсем чисто.
3) @mysql_select_db ($ database) или die () неверно. Обрабатывайте ошибки PHP.
4) Используйте mysql_fetch_assoc
вместо mysql_numrows
.
Вы можете поблагодарить меня за очистку своего грязного кода позже.
<?php $host = 'localhost'; $username="root"; $password=""; $database="xxxxxxxx"; $connection = @mysql_connect($host,$username,$password); $selection = @mysql_select_db($database, $connection); if(!$connection || !$selection){ echo 'Connection failed. Contact webmaster and ask if his connection settings are okay.'; } $query = "SELECT * FROM coins"; $mysqlquery = mysql_query($query); if($mysqlquery){ // Query succeed! :D $result = mysql_fetch_assoc($mysqlquery); // We'll parse em later } else { echo 'MySQL Query failed! Give the webmaster a slap for his bad coding.'; } mysql_close(); // We've handeled all the PHP stuff, now we can get started with printing everything ?> <html> <body> <?php echo '<b><center>US Coins</center></b><br><br>'; // This HTML code needs cleanup too $i = 0; while($i < $num){ echo htmlspecialchars($_POST['denom']).'<br>Year: '. htmlspecialchars($_POST['year']) .'<br>Picture: '. htmlspecialchars($_POST['picture']) .'<br>Text: '. $_POST['text'] .'<br><br>'; $i++; } ?> </body> </html>
$_POST
содержит значения, представленные в форме . Нет причин печатать его в цикле, так как в вашем случае каждый ключ имеет одно значение. Если вы хотите вывести данные из ваших результатов MySQL, вам нужно будет использовать что-то вроде mysql_fetch_array
в цикле while, а затем вывести значения каждого из возвращаемых массивов.
Хорошим местом для начала является PHP MySQL Manual, в котором содержится рабочий пример, из которого вы можете легко вывести основы (даже если вам не нравится R'ing TFM).
Если у вас нет данных в вашей базе данных, запрос вернет пустой результат. Поэтому убедитесь, что у вас есть данные в базе данных.
попробуй что-нибудь вроде этого …
$num=mysql_fetch_array(mysql_query("select * from coins")) while ($i<$num) { echo $num . "<br />"; }