Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Проблема с UPDATE
 
 автор: burobd1   (17.07.2009 в 12:01)   письмо автору
 
 

Здравствуйте,
не получается обновить таблицу вот код:

if(isset($_POST['edit'])){
                    $id_post = $_POST['id_form'];
                    if(!isset($_POST['editing'])){
                    $q_edit = mysql_query("SELECT * FROM tbl_posts WHERE id_p='".$id_post."'");
                    if(mysql_num_rows($q_edit)==1){
                    $r_edit = mysql_fetch_array($q_edit);                   
                    echo'<h4>Editing</h4>';
                    echo'<form action="" method="POST">';
                    echo'<input type="text" name="name_author" value="'.$r_edit['name_author'].'"><br />';
                    echo'<textarea cols="20" rows="5" wrap="on" name="message">'.$r_edit['message'].'</textarea>';
                    echo'<input type="submit" name="editing" value="Изменить">';
                    echo'</form>';                    
                    }
                    }else{
                    $id_post = $_POST['id_form'];
                    $edit = isset($_POST['name_author'])?mysql_escape_string($_POST['name_author']):NULL;
                    $text = isset($_POST['message'])?mysql_escape_string($_POST['message']):NULL;
                    $q_edit1 = mysql_query("UPDATE tbl_posts SET name_author='".$edit."',message='".$text."' WHERE id_p='".$id_post."' AND theme_id='".$id_t."'")or die("не получилось");
                    header('refresh: 0; url='.$SERVER['PHP-SELF'].'');
                    }
                    }                

хочу чтобы данные заменялись теми которые в форме, но когда я нажимаю изменить то ничего не происходит...посоветуйте пожалуйсто, что не так. Спасибо

  Ответить  
 
 автор: psychomc   (17.07.2009 в 12:15)   письмо автору
 
   для: burobd1   (17.07.2009 в 12:01)
 

я бы взял, вывел текст запроса на экран и посмотрел бы составлен ли он пракильно. если всё вроде правильно - запустил бы на всякий случай в phpmyadmin.
еще можно http://www.softtime.ru/dic/id_dic=94&id_group=2

  Ответить  
 
 автор: ride   (17.07.2009 в 12:20)   письмо автору
 
   для: burobd1   (17.07.2009 в 12:01)
 

сюда
 echo'<form action="" method="POST">';
                    echo'<input type="text" name="name_author" value="'.$r_edit['name_author'].'"><br />';
                    echo'<textarea cols="20" rows="5" wrap="on" name="message">'.$r_edit['message'].'</textarea>';
                    echo'<input type="submit" name="editing" value="Изменить">';
                    echo'</form>';   


добавьте инпут
echo'<form action="" method="POST">';
echo'<input type="text" name="id_form" value="'.$id_form.'"><br />';
                    echo'<input type="text" name="name_author" value="'.$r_edit['name_author'].'"><br />';
                    echo'<textarea cols="20" rows="5" wrap="on" name="message">'.$r_edit['message'].'</textarea>';
                    echo'<input type="submit" name="editing" value="Изменить">';
                    echo'</form>';   

  Ответить  
 
 автор: burobd1   (17.07.2009 в 13:11)   письмо автору
 
   для: ride   (17.07.2009 в 12:20)
 

Извиняюсь это я не дописал, у меня есть эта строчка только чуть раньше:

<form action="" method="POST">
                    <input type="hidden" name="id_form" value="'.$r_p['id_p'].'">
                    <input type="submit" name="delete" value="delete">
                    <input type="submit" name="edit" value="edit">
                    </form>


Спасибо всем за ответы щас буду разбираться, посмотрб структуру и попытаюсь вывести ошибки!

  Ответить  
 
 автор: ride   (17.07.2009 в 13:26)   письмо автору
 
   для: burobd1   (17.07.2009 в 13:11)
 

это другое.
там, где я указал добавить у вас нету этой строчки.
просто добавьте и проверьте

  Ответить  
 
 автор: adpakm   (17.07.2009 в 12:22)   письмо автору
 
   для: burobd1   (17.07.2009 в 12:01)
 

Что-то в условии у тебя не правильно!
попробуй так:
if(!isset($_POST['edit']))
{
}
просто у тебя условие:
if(isset($_POST['edit']))
{ ....}
else{
$id_post = $_POST['id_form'];

Получается если не установлено значение пост, то прочитать из пост.....
+ header('refresh: 0; url='.$SERVER['PHP-SELF'].''); для меня вобще не понятен...

  Ответить  
 
 автор: burobd1   (17.07.2009 в 14:11)   письмо автору
 
   для: adpakm   (17.07.2009 в 12:22)
 

Я этим пытаюсь показать,что:
если нажата кнопка edit(она у меня еще раньше), то вывести форму

if(!isset($_POST['editing'])){             
                    echo'<h4>Editing</h4>';
                    echo'<form action="" method="POST">';
                    echo'<input type="text" name="name_author" value="'.$r_edit['name_author'].'"><br />';
                    echo'<textarea cols="20" rows="5" wrap="on" name="message">'.$r_edit['message'].'</textarea>';
                    echo'<input type="submit" name="editing" value="Изменить">';
                    echo'</form>';                    
                    }
                    }else{
                    $id_post = $_POST['id_form'];
                    $edit = isset($_POST['name_author'])?mysql_escape_string($_POST['name_author']):NULL;
                    $q_edit1 = mysql_query("UPDATE tbl_posts SET name_author='".$edit."',message='".$_POST['message']."' WHERE id_p='".$id_post."' AND theme_id='".$id_t."'")or die("hovno hovno");
                    header('refresh: 0; url='.$SERVER['PHP-SELF'].'');
                    }
                    }      

строчка if(!isset($_POST['editing'])){ у меня значит если не нажата кнопка Изменить то вывести форму если нажата то изменить данные.

а header('refresh: 0; url='.$SERVER['PHP-SELF'].''); я просто делаю переадресацию на этуже страницу, чтобы она обновилась с новыми данными.

  Ответить  
 
 автор: burobd1   (17.07.2009 в 14:27)   письмо автору
 
   для: burobd1   (17.07.2009 в 14:11)
 

попробовал вставить вот эту строчку

<input type="text" name="id_form" value="'.$id_form.'">

но ничего не получилось(

Я вот щас смотрю у меня такое ощущение что else вот здесь:

}else{ 
                    $id_post = $_POST['id_form']; 
                    $edit = isset($_POST['name_author'])?mysql_escape_string($_POST['name_author']):NULL; 
                    $q_edit1 = mysql_query("UPDATE tbl_posts SET name_author='".$edit."',message='".$_POST['message']."' WHERE id_p='".$id_post."' AND theme_id='".$id_t."'")or die("hovno hovno"); 
                    header('refresh: 0; url='.$SERVER['PHP-SELF'].''); 
                    } 


вообще не выполняется, потомучто я попытался туда вписать просто echo и опять ничего..

  Ответить  
 
 автор: root   (17.07.2009 в 14:39)   письмо автору
 
   для: burobd1   (17.07.2009 в 14:27)
 

По Вашей логике если у Вас нажата кнопка 'editing', то откуда должен взяться $_POST['edit'], который у Вас "где-то" раньше? И соответственно это условие Вы не проходите.
А вообще тяжело по кусочкам скрипта определить.

  Ответить  
 
 автор: burobd1   (17.07.2009 в 14:44)   письмо автору
 
   для: root   (17.07.2009 в 14:39)
 

щас весь покажу, у меня две кнопки сначало edit а потом editing:

$id_t = $_GET['id_theme'];
                    $q_post = mysql_query("SELECT * FROM tbl_themes WHERE id = '".$id_t."' ORDER BY id DESC");
                    if(mysql_num_rows($q_post)==1){
                    while($r_post = mysql_fetch_array($q_post)){
                    echo '
                    <table>
                      <tr>
                          <td width="100" height="200">'.htmlspecialchars($r_post['name_author']).'</td>
                          <td width="200" height="200">'.htmlspecialchars($r_post['name']).'</td>
                          <td width="500" height="200">'.htmlspecialchars($r_post['message']).'
                          <form action="" method="POST">
                          <input type="submit" name="delete" value="delete">
                          </form>
                          </td>
                      </tr>
                    </table>
                    ';
                    }
                    }else{echo 'nic neni';}
                    
                    $q_p = mysql_query("SELECT * FROM tbl_posts WHERE theme_id = '".$id_t."' ORDER BY id_p ASC");
                    while($r_p = mysql_fetch_array($q_p)){
                    echo '<table>';
                    echo '  <tr>';
                    echo '      <td width="100" height="200">'.htmlspecialchars($r_p['name_author']).'</td>';
                    echo '      <td width="200" height="200">'.htmlspecialchars($r_p['name']).'</td>';
                    echo '      <td width="500" height="200">'.htmlspecialchars($r_p['message']).'
                    <form action="" method="POST">
                    <input type="hidden" name="id_form" value="'.$r_p['id_p'].'">
                    <input type="submit" name="delete" value="delete">
                    <input type="submit" name="edit" value="edit">
                    </form>
                    </td>';
                    echo '  </tr>';
                    echo '</table>';
                    }                   
                    if(isset($_POST['delete'])){
                    $id_post = $_POST['id_form'];
                    $q_del = mysql_query("DELETE FROM tbl_posts WHERE id_p='".$id_post."'");
                    header('refresh: 0; url='.$SERVER['PHP-SELF'].'');
                    }
                    if(isset($_POST['edit'])){
                    $id_post = $_POST['id_form'];
                    if(!isset($_POST['editing'])){
                    $q_edit = mysql_query("SELECT * FROM tbl_posts WHERE id_p='".$id_post."'");
                    if(mysql_num_rows($q_edit)==1){
                    $r_edit = mysql_fetch_array($q_edit);                   
                    echo'<h4>Editing</h4>';
                    echo'<form action="" method="POST">';
                    echo'<input type="text" name="name_author" value="'.$r_edit['name_author'].'"><br />';
                    echo'<textarea cols="20" rows="5" wrap="on" name="message">'.$r_edit['message'].'</textarea>';
                    echo'<input type="submit" name="editing" value="Изменить">';
                    echo'</form>';                    
                    }
                    }else{
                    $id_post = $_POST['id_form'];
                    $edit = isset($_POST['name_author'])?mysql_escape_string($_POST['name_author']):NULL;
                    $q_edit1 = mysql_query("UPDATE tbl_posts SET name_author='".$edit."',message='".$_POST['message']."' WHERE id_p='".$id_post."' AND theme_id='".$id_t."'")or die("hovno hovno");
                    header('refresh: 0; url='.$SERVER['PHP-SELF'].'');
                    }
                    }                  
                    ?>

  Ответить  
 
 автор: root   (17.07.2009 в 15:11)   письмо автору
 
   для: burobd1   (17.07.2009 в 14:44)
 

Лучше создайте отдельную страницу для edit'a.
Если нет, то:
if(isset($_POST['edit']) || isset($_POST['editing']))
и заметьте, что Ваша форма 'Editing' не отправляет id_post.

  Ответить  
 
 автор: burobd1   (17.07.2009 в 15:36)   письмо автору
 
   для: root   (17.07.2009 в 15:11)
 

Все работает спасибо большое)
написал как и сказали:
if(isset($_POST['edit']) || isset($_POST['editing']))

  Ответить  
 
 автор: root   (17.07.2009 в 15:37)   письмо автору
 
   для: burobd1   (17.07.2009 в 15:36)
 

также я написал "Лучше создайте отдельную страницу для edit'a."
И поверьте, так будет лучше :-)

  Ответить  
 
 автор: burobd1   (17.07.2009 в 15:41)   письмо автору
 
   для: root   (17.07.2009 в 15:37)
 

спасибо за совет обязательно напишу) тоже думал но решил пока в этой оставить)

  Ответить  
 
 автор: burobd1   (17.07.2009 в 15:43)   письмо автору
 
   для: burobd1   (17.07.2009 в 15:41)
 

для формы где edit или где editing? создать страницу? Я думал создать в action где у меня кнопка editing страницу новую.

  Ответить  
 
 автор: Root   (17.07.2009 в 15:52)   письмо автору
 
   для: burobd1   (17.07.2009 в 15:43)
 

Да, для 'editing' новую страницу. На эту страницу передавайте параметр id.
форма edit не нужна вообще.

  Ответить  
 
 автор: burobd1   (17.07.2009 в 16:02)   письмо автору
 
   для: Root   (17.07.2009 в 15:52)
 

тоесть можно сделать вместо формы edit просто ссылки да? но я в этой форме передаю данные о id поста к которому я обращаюсь(удалить или изменить):

$q_p = mysql_query("SELECT * FROM tbl_posts WHERE theme_id = '".$id_t."' ORDER BY id_p ASC");
                    while($r_p = mysql_fetch_array($q_p)){
                    echo '<table>';
                    echo '  <tr>';
                    echo '      <td width="100" height="200">'.htmlspecialchars($r_p['name_author']).'</td>';
                    echo '      <td width="200" height="200">'.htmlspecialchars($r_p['name']).'</td>';
                    echo '      <td width="500" height="200">'.htmlspecialchars($r_p['message']).'
                    <form action="" method="POST">
                    <input type="hidden" name="id_form" value="'.$r_p['id_p'].'">
                    <input type="submit" name="delete" value="delete">
                    <input type="submit" name="edit" value="edit">
                    </form>

  Ответить  
 
 автор: root   (17.07.2009 в 16:07)   письмо автору
 
   для: burobd1   (17.07.2009 в 16:02)
 

да, просто ссылки, и в ссылках передавайте параметры.

  Ответить  
 
 автор: burobd1   (17.07.2009 в 16:08)   письмо автору
 
   для: root   (17.07.2009 в 16:07)
 

блин действительно, спасибо большое туплю))

  Ответить  
 
 автор: ride   (17.07.2009 в 15:21)   письмо автору
 
   для: burobd1   (17.07.2009 в 14:44)
 

вместо header('refresh: 0; url='.$SERVER['PHP-SELF'].''); напишите echo 'id_form='.$id_frorm;
и скажите результат

  Ответить  
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования