[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не получается найти ошибку
OleKh
Учу php по учебнику. Учебник на английском. Название задания LISTING 12.6 Using mysql_query() to Alter Rows in a Database. Скрипт не работает. Вероятно, ошибка в <option value="">?


echo "<option value=\"$a_row->id\"";
if (isset($id) && $id == $a_row->id)
echo "SELECTED";
echo "> $a_row->domain\n";

}



<html>
<head>
<title></title>
</head>
<body>



[php]
<?php

$domain = $_POST['domain'];
$id = $_POST['id'];

$user="root";
$pass="";
$db="sample";
$link=mysql_connect("localhost", $user, $pass);
if (!$link)
die ("Couldn't connect to MySQL");
mysql_select_db($db, $link)
or die ("Couldn't open $db:". mysql_error());

if (isset ($domain) && isset ($id)){
$query="UPDATE domains SET domain = '$domain' where id= '$id' ";
$result=mysql_query($query);
if (!$result)
die ("Couldn't update:".mysql_error());
echo "<h1>Table updated:" .mysql_affected_rows()."
row(s) changed </h1><p>"
;

}
?>

<form
action="<? echo $_SERVER['$PHP_SELF']?>" method="POST">
<select
name="id">
<?

$result=mysql_query("SELECT domain, ID FROM domains");
while ($a_row = mysql_fetch_object($result) ){

echo "<option value=\"$a_row->id\"";
if (isset($id) && $id == $a_row->id)
echo "SELECTED";
echo "> $a_row->domain\n";

}
mysql_close($link);
?>
</select>
<input
type="text" name="domain">

</form>
</body>
</html>




Спустя 24 минуты, 41 секунда (5.04.2012 - 00:22) Placido написал(а):
Для того чтобы разобраться в чем ошибка, нужно привести хотя бы текст ошибки.
См. http://phpforum.su/index.php?showtopic=2459, пункты 1-4 и 6.

Спустя 9 часов, 15 минут, 26 секунд (5.04.2012 - 09:37) OleKh написал(а):
Текста ошибки нет. Форма выводится. В <select>выводится список domain, а в <input> должен вводится новый domain, который должен заменить domain из <select> и должно выводится сообщение - Table updated:1 row(s) changed. А фактически постоянно выводится Table updated:0row(s) changed и в базе ничего не меняется.

Спустя 49 минут, 19 секунд (5.04.2012 - 10:26) Jack_White написал(а):
Привет, сильно не вдавался в скрипт, книга жесткая код некорректный в моральном плане.
А по теме ты писал:
Цитата (OleKh @ 4.04.2012 - 20:57)
if (isset ($domain) && isset ($id)){
    $query="UPDATE domains SET domain = '$domain' where id= '$id' ";
// у тебя в базе id не INT типа? а то параметр $id передается как строка может в этом проблема?
    $result=mysql_query($query);
    if (!$result)
        die ("Couldn't update:".mysql_error());
    echo "<h1>Table updated:" .mysql_affected_rows()."
    row(s) changed  </h1><p>";

}


Спустя 2 часа, 24 минуты, 49 секунд (5.04.2012 - 12:51) Guest написал(а):
Скрипт вдруг заработал. После того, как появилась ошибка на эту строку, я добавил $id в кавычки (метод проб и ошибок:)). Ошибка не выдавалась, но скрипт не работал. Потом я добавил скобки. Затем убрал скобки и кавычки - и заработал, хотя изначально $id без кавычек (то есть не строка) не срабатывал. Наверное пробел был лишний.

$query="UPDATE domains SET domain = '$domain' where id= '$id' ";


Всем спасибо за участие в теме.

Спустя 20 минут, 47 секунд (5.04.2012 - 13:12) OleKh написал(а):
Нашел ошибку - id должно было быть вместо ID:

$result=mysql_query("SELECT domain, ID FROM domains");

Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.