[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Запрос mysql в php цикле
AlexG
Здравствуйте, срочно нужна помощь с проблемой.
Сам новичок в php, проблема маленькая, но не вижу ее.



<?php
error_reporting(E_ALL);
$dbhostname = "localhost";
$dbusername = "root";
$dbpassword = "23075";
$dbName = "table";
$table = "table";
$db = mysql_connect($dbhostname,$dbusername,$dbpassword) or die("Can't connect the server");
mysql_select_db($dbName, $db) or die(mysql_error());
$result = mysql_query("SELECT * FROM $table WHERE w_status='WAITING'", $db) or die(mysql_error());

while($rows=mysql_fetch_assoc($result))
{
print ("
<form action='' method='post' enctype='multipart/form-data'>
<input type='submit' name='del' value='Delete'>
<input type='text' name='info'>
<input type='submit' name='inf' value='Add info'>
</form>

<div class='spoilerTitle'>"
.$rows['w_thread']."</div>

<TABLE>
<TR>
<b>"
.$rows['w_thread']."</b>
<TD style='text-align:center'>Description:</TD>
<TD style='text-align:center'>Info:</TD>
</TR>
<TR>
<TD>"
.$rows['w_desc']."</TD>
<TD>"
.$rows['w_info']."</TD>
</TR>
</TABLE>
<hr>"
);
}

$id = $rows['w_id'];
$info = $_POST['inf'];
if(isset($_POST['del'])) {
mysql_query("DELETE FROM $table WHERE w_id='$id'");
}
if(isset($_POST['inf'])) {
mysql_query("UPDATE $table SET w_info VALUE '$info' WHERE w_id='$id'");
}
?>

Страница работает, но при нажатии на кнопки - ничего не происходит.
А должна обновляться инфа в таблице mysql. Прошу помочь, в чем проблема и как нужно правильно использовать DELETE\UPDATE в циклах.



Спустя 1 минута, 46 секунд (8.05.2012 - 11:00) TranceIT написал(а):
action у формы выставить забыли

Спустя 10 минут, 31 секунда (8.05.2012 - 11:10) nugle написал(а):
TranceIT
ты чего? action стоит, у него обновление на той же странице
AlexG, сделай var_dump($_POST); посмотри, что внутри массива

Спустя 2 минуты, 47 секунд (8.05.2012 - 11:13) TranceIT написал(а):
Дак на той же странице вроде action="?"...

UPD: А да, че то тупанул...

Спустя 4 минуты, 26 секунд (8.05.2012 - 11:17) Guest написал(а):
}

}; - Что закрывает?
?>

Спустя 7 минут, 39 секунд (8.05.2012 - 11:25) Adamant написал(а):
ну почему вы при написании и отладке скрипта не включаете вывод всех ошибок от интерпретатора. Сами же себе жизнь усложняете. А так бы просто читали бы все сообщения, что у вас не так, то ли скобку пропустили то ли еще что.

Ставьте первой строчкой в скрипт - error_reporting(E_ALL);

А еще лучше на своем локалхосте в php.ini файле выставите
error_reporting = E_ALL

И вообще нормальный редактор (или IDE) должен уже в момент неправильного написания кода показывать, где у вас синтаксическая ошибка, еще до запуска скрипта.

Спустя 18 минут, 54 секунды (8.05.2012 - 11:44) AlexG написал(а):
Если тут и есть ошибка, то только при редактировании его ЗДЕСЬ.
Никаких ошибок не выводит, я пробовал error_reporting(E_ALL);

Спустя 3 минуты, 48 секунд (8.05.2012 - 11:48) m4a1fox написал(а):
Так что там var_dump($_POST) показывает. СправкаЖ Его в верх страницы надо положить.

Спустя 3 минуты, 48 секунд (8.05.2012 - 11:51) AlexG написал(а):
Сначала array(0) { }
После нажатия на Delete: array(2) { ["del"]=> string(6) "Delete" ["info"]=> string(0) "" }
После нажатия на Add info с текстом test: array(2) { ["del"]=> string(6) "Delete" ["info"]=> string(4) "test" }

Спустя 2 часа, 27 минут, 26 секунд (8.05.2012 - 14:19) AlexG написал(а):
Мне все еще нужна помощь sad.gif

Спустя 4 часа, 30 минут, 54 секунды (8.05.2012 - 18:50) Kuliev написал(а):
AlexG
Все правильно ничего работать и не должно судя из вашего кода.

А все по тому что...

//Вот эта часть кода $ID = NULL ; $info = NULL
$id = $rows['w_id'];
$info = $_POST['inf'];

//***
if(isset($_POST['del'])) {
mysql_query("DELETE FROM $table WHERE w_id='$id'");
}
if(isset($_POST['inf'])) {
mysql_query("UPDATE $table SET w_info VALUE '$info' WHERE w_id='$id'");
}


Спустя 18 минут, 42 секунды (8.05.2012 - 19:08) AlexG написал(а):

<?php
error_reporting(E_ALL);
$dbhostname = "localhost";
$dbusername = "root";
$dbpassword = "123456";
$dbName = "web";
$table = "table";
$db = mysql_connect($dbhostname,$dbusername,$dbpassword) or die("Can't connect the server");
mysql_select_db($dbName, $db) or die(mysql_error());
$result = mysql_query("SELECT * FROM $table WHERE w_status='WAITING'", $db) or die(mysql_error());

while($rows=mysql_fetch_assoc($result))
{
print ("
<form action='' method='post' enctype='multipart/form-data'>
<input type='submit' name='del' value='Delete'>
<input type='text' name='info'>
<input type='submit' name='inf' value='Add info'>
</form>

<div class='spoilerTitle'>"
.$rows['w_thread']."</div>

<TABLE>
<TR>
<b>"
.$rows['w_thread']."</b>
<TD style='text-align:center'>Description:</TD>
<TD style='text-align:center'>Info:</TD>
</TR>
<TR>
<TD>"
.$rows['w_desc']."</TD>
<TD>"
.$rows['w_info']."</TD>
</TR>
</TABLE>
<hr>"
);
$id = $rows['w_id'];
if(isset($_POST['del'])) {
mysql_query("DELETE FROM $table WHERE w_id='$id'");
}
if(isset($_POST['inf'])) {
$info = $_POST['inf'];
mysql_query("UPDATE $table SET w_info VALUE '$info' WHERE w_id='$id'");
}
}

?>

Так?

Спустя 4 часа, 28 минут, 50 секунд (8.05.2012 - 23:37) Kuliev написал(а):
AlexG

Вот так...

<?php
error_reporting(E_ALL);

$dbhostname = "localhost";
$dbusername = "root";
$dbpassword = "123456";
$dbName = "web";
$table = "table";

$db = mysql_connect($dbhostname,$dbusername,$dbpassword) or die("Can't connect the server");
mysql_select_db($dbName, $db) or die(mysql_error());

$sql = "SELECT *
FROM `"
. $table ."`
WHERE `w_status`='WAITING'"
;
$result = mysql_query($sql) or die(mysql_error() .'<br />'. $sql);

while($row = mysql_fetch_assoc($result))
{
// Единственное у тебя ID таблицы всегда будет последний
// Точнее ID последней записи в таблице

$id = $rows['w_id'];

print ("
<form action='' method='post' enctype='multipart/form-data'>
<input type='submit' name='del' value='Delete'>
<input type='text' name='info'>
<input type='submit' name='inf' value='Add info'>
</form>

<div class='spoilerTitle'>"
.$row['w_thread']."</div>

<TABLE>
<TR>
<b>"
. $row['w_thread'] ."</b>
<TD style='text-align:center'>Description:</TD>
<TD style='text-align:center'>Info:</TD>
</TR>
<TR>
<TD>"
. $row['w_desc'] ."</TD>
<TD>"
. $row['w_info'] ."</TD>
</TR>
</TABLE>
<hr>"
);


}

if(isset($_POST['del']))
{
$sql = "DELETE FROM `". $table ."`
WHERE `w_id` = "
. (int)$id;
$result = mysql_query($sql) or die(mysql_error() .'<br />'. $sql);

heder("Location: http://". $_SERVER['HTTP_HOST'] ."/");
exit();
}

if(isset($_POST['inf']))
{
$sql = "UPDATE `". $table ."`
SET `w_info` = '"
. mysql_real_escape_string($_POST['info']) ."'
WHERE `w_id` = "
. (int)$id;
$result = mysql_query($sql) or die(mysql_error() .'<br />'. $sql);

heder("Location: http://". $_SERVER['HTTP_HOST'] ."/");
exit();
}
?>


Только $ID у тебя при таком раскладе будет всегда последней строкой в таблице

Спустя 6 часов, 35 минут, 3 секунды (9.05.2012 - 06:12) AlexG написал(а):
Большое спасибо, но как пофиксить $id?

Спустя 7 часов, 11 минут, 10 секунд (9.05.2012 - 13:24) Kuliev написал(а):
Цитата (AlexG @ 9.05.2012 - 06:12)
Большое спасибо, но как пофиксить $id?

Не понял насчет пофиксить $ID
Используй скрытые поля для идентификации сообщений...

Спустя 1 час, 20 минут, 16 секунд (9.05.2012 - 14:44) AlexG написал(а):
Ох.. Мне нужно сделать что-то вроде такого:
user posted image
Из mysql берется таблица со столбцами: ID, TEXT, INFO и выписываются в виде таблицы каждая.
Над каждой таблице присутствует кнопка DEL(Delete), строка для ввода текста и кнопка Info(submit) которая производит действие для введенного текста в строке. При нажатии на удалить - строка из БД удаляется.
При вводе, скажем TWO в первой таблице и нажатии на Info, у нас в БД меняется именно у этой строки INFO с ONE на TWO. Страница при любых действиях обновляется.

Это похоже на записи, которые можно удалять и менять им один из столбцов. Но проблема: ВСЕ кнопки работают только для одной строки - последней\первой, а не для КАЖДОЙ строки. Вот в чем сама проблема. И мне ее очень нужно решить. Уже 3 дня голову ломаю.

Спустя 1 час, 27 минут, 18 секунд (9.05.2012 - 16:11) Kuliev написал(а):
AlexG
Добавь в форму скрытое поле и передавай ему ID поста.


<input type='hidden" name="ID" value="'.$row['id'].'">

Спустя 45 минут, 23 секунды (9.05.2012 - 16:56) AlexG написал(а):
ОГРОМНОЕ спасибо!
Быстрый ответ:

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