Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> не выполняется UPDATE запрос 
:(
    Опции темы
Enya
Дата 6.11.2006, 16:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Что делает этот код?
Делает выборку данных из таблицы.
Размещает в определённых полях.
Что нужно?
Что бы внесённые изменения в полях, сохранялись в БД.
Чего код не делает?
Именно не сохраняет новую инфу в БД.
Код

$sql="SELECT * FROM objects";
            $result=mysql_query($sql) or die("SQL Select Error");
            $count=mysql_num_rows($result);
                    
                ?>
                    <table width="500" border="0" cellspacing="1" cellpadding="0" align="center">
                        <form name="form1" method="post" action="control.php?type=2">
                            <tr>
                            <td>
                                <table width="500" border="0" cellspacing="1" cellpadding="0">
                                    <tr>
                                        <td align="center"><strong>Id</strong></td>
                                        <td align="center"><strong>Object Name</strong></td>
                                        <td align="center"><strong>Object type</strong></td>
                                        <td align="center"><strong>Object</strong></td>
                                    </tr>
                                <?php
                                    while($rows=mysql_fetch_array($result)){
                                ?>
                                    <tr>
                                        <td align="center"><? $id[]=$rows['id']; ?><? echo $rows['id']; ?></td>
                                        <td align="center"><input name="obj01[]" type="text" id="obj01" value="<? echo $rows['obj01']; ?>"></td>
                                        <td align="center"><input name="obj02[]" type="text" id="obj02" value="<? echo $rows['obj02']; ?>"></td>
                                        <td align="center"><input name="obj03[]" type="text" id="obj03" value="<? echo $rows['obj03']; ?>"></td>
                                    </tr>
                                <?php
                                    }
                                ?>
                                    <tr>
                                        <td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
                                    </tr>
                                </table>
                            </td>
                            </tr>
                        </form>
                    </table>
                    <?php
                    
                if(isset($_POST['Submit'])){
                    for($i=0;$i<$count;$i++){
                        $sql_up="UPDATE objects SET obj01='$obj01[$i]', obj02='$obj02[$i]', obj03='$obj03[$i]' WHERE id='$id[$i]'";
                        $result_up=mysql_query($sql_up);
                    }
                }
                if(isset($result_up)){
                    header("location:control.php");
                }

Вот не нравиться вот эта строчка
Код

$sql_up="UPDATE objects SET obj01='$obj01[$i]', obj02='$obj02[$i]', obj03='$obj03[$i]' WHERE id='$id[$i]'";
Пишел, пол Notice переменная не определена.
 smile Чё такое?!

Добавлено @ 17:03 
Код

CREATE TABLE `objects` (
  `id` int(11) NOT NULL auto_increment,
  `obj01` varchar(100) NOT NULL default '',
  `obj02` varchar(100) NOT NULL default '',
  `obj03` varchar(100) NOT NULL default '',
  PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf-8; 



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Nbuth
Дата 6.11.2006, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.11.2006
Где: Москва

Репутация: нет
Всего: нет



Ну во первых, id у тебя в посте вообще не передается, строчки 18-27 надо заменить примерно так:
Код

while($rows=mysql_fetch_array($result)){
    ?>
    <tr>
        <td align="center"><input name="id[]" type="hidden" value="<?=$rows['id'];?>"><? echo $rows['id']; ?></td>
        <td align="center"><input name="obj01[]" type="text" id="obj01" value="<? echo $rows['obj01']; ?>"></td>
        <td align="center"><input name="obj02[]" type="text" id="obj02" value="<? echo $rows['obj02']; ?>"></td>
        <td align="center"><input name="obj03[]" type="text" id="obj03" value="<? echo $rows['obj03']; ?>"></td>
        </tr>
    <?php
}


ну и сам запрос надо переделать примерно так:
Код

$sql_up="UPDATE objects SET obj01='".$_POST['obj01'][$i]."', obj02='".$_POST['obj02'][$i]."', obj03='".$_POST['obj03'][$i]."' WHERE id=".$_POST['id'][$i].";";


и прейдется перенести ещё UPDATE запрос на верх страницы, иначе у тебя header("location:control.php"); не сработает
PM MAIL ICQ   Вверх
Enya
Дата 6.11.2006, 22:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Странно. А вот в этом уроке написано так:Updating multiple rows in mysql


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
check
Дата 6.11.2006, 23:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Цитата(Enya @  6.11.2006,  22:16 Найти цитируемый пост)
в этом уроке написано так
Там показан запрос в общем виде.  SQL-запрос это строка,  
поэтому переменные туда нужно подставлять как в строку.

PM MAIL   Вверх
Nbuth
Дата 6.11.2006, 23:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.11.2006
Где: Москва

Репутация: нет
Всего: нет



Enya, ну во первых, в этом уроке все написано, с учетом того что register_globals стоит в On, а у тебя наверняка в off
во вторых переменая id у них и в этом примере не передается, х.з., наверно очепятка у них там какая, или ещё, что. (для проверки можешь сунуть в обработчик кнопки такой текст ?><pre><? print_r($_POST); ?></pre><? и увидешь что там передается, а что нет)
ну и в последних, думаю если ты оставишь header("location:update_multiple.php"); на том месте, где он сейчас стоит, то столкнешся, примерно с таким сообщением: Warning: Cannot modify header information - headers already sent by ...

З.Ы.: так что выкинь этот урок, впринципе, ничего хорошего я в нем вообще не увидел, ни  одного толкового коментария, ни одного описания функции ... 

PM MAIL ICQ   Вверх
check
Дата 7.11.2006, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 610
Регистрация: 3.4.2006

Репутация: 2
Всего: 23



Цитата(Nbuth @  6.11.2006,  20:56 Найти цитируемый пост)
и прейдется перенести ещё UPDATE запрос на верх страницы, иначе у тебя header("location:control.php"); не сработает 
А причем тут запрос?
Ошибка возникнет из-за того что заголовки отправляются после вывода в браузер.  Но это легко лечится буферизацией вывода: первой строчкой в скрипте пишешь ob_start(); последней ob_end_flush();

PM MAIL   Вверх
Nbuth
Дата 7.11.2006, 09:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.11.2006
Где: Москва

Репутация: нет
Всего: нет



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

а если вообще уберем header(), то получим страницу со старыми данными, что тоже как-то не особо  smile 

Это сообщение отредактировал(а) Nbuth - 7.11.2006, 09:12
PM MAIL ICQ   Вверх
Enya
Дата 7.11.2006, 10:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Nbuth, теперь данные в таблицу вставляются.
Но при следующем редактирование в поля не вставляются уже существующие данные (из SELECT запроса), кликаю на редактирование а поля пустые, хотя в БД записи есть. И если не все поля заполнены то он их перезапишет пустыми.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
Nbuth
Дата 7.11.2006, 11:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 6
Регистрация: 6.11.2006
Где: Москва

Репутация: нет
Всего: нет



Enya, покажи код, так трудно говорить, что у тебя там
PM MAIL ICQ   Вверх
Enya
Дата 7.11.2006, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



Nbuth, вот
Код

echo '<h3>Edit objekt</h3>';
        echo '<li><a href="'.$_SERVER['PHP_SELF'].'?type=1">Добавить запись</a>';
        echo '<li><a href="'.$_SERVER['PHP_SELF'].'?type=3">Удаление объектов</a>';
        echo '<li><a href="'.$_SERVER['PHP_SELF'].'">Вернуться</a>';
        
            $sql="SELECT * FROM objects";
            $result=mysql_query($sql) or die("SQL Select Error");
            $count=mysql_num_rows($result);
                    
                ?>
                    <table width="500" border="0" cellspacing="1" cellpadding="0" align="center">
                        <form name="form1" method="post" action="control.php?type=2">
                            <tr>
                            <td>
                                <table width="500" border="0" cellspacing="1" cellpadding="0">
                                    <tr>
                                        <td align="center"><strong>Id</strong></td>
                                        <td align="center"><strong>Object Name</strong></td>
                                        <td align="center"><strong>Object type</strong></td>
                                        <td align="center"><strong>Object</strong></td>
                                    </tr>
                                <?php
                                    while($rows=mysql_fetch_array($result)){
                                ?>
                                    <tr>
                                        <td align="center"><input name="id[]" type="hidden" value="<?=$rows['id'];?>"><? echo $rows['id']; ?></td>
                                        <td align="center"><input name="obj01[]" type="text" id="obj01" value="<? echo $rows['obj01']; ?>"></td>
                                        <td align="center"><input name="obj02[]" type="text" id="obj02" value="<? echo $rows['obj02']; ?>"></td>
                                        <td align="center"><input name="obj03[]" type="text" id="obj03" value="<? echo $rows['obj03']; ?>"></td>
                                    </tr>
                                <?php
                                    }
                                ?>
                                    <tr>
                                        <td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
                                    </tr>
                                </table>
                            </td>
                            </tr>
                        </form>
                    </table>
                    <?php
                    
                if(isset($_POST['Submit'])){
                    for($i=0;$i<$count;$i++){
                        $sql_up="UPDATE objects SET obj01='".$_POST['obj01'][$i]."', obj02='".$_POST['obj02'][$i]."', obj03='".$_POST['obj03'][$i]."' WHERE id=".$_POST['id'][$i].";";
                        $result_up=mysql_query($sql_up);
                    }
                }
                if(isset($result_up)){
                    header("location:control.php");
                }



--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 7.11.2006, 11:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Enya, попробуй так:
Код

<?php

if (isset($_POST['Submit'])) {
    $count = sizeof($_POST['id']);
    for ($i = 0; $i < $count; $i++) {
        $sql = 'UPDATE 
                    `objects` 
                SET 
                    `obj01` = \''.$_POST['obj01'][$i].'\', 
                    `obj02` = \''.$_POST['obj02'][$i].'\', 
                    `obj03` = \''.$_POST['obj03'][$i].'\' 
                WHERE 
                    `id` = '.$_POST['id'][$i];
        mysql_query($sql);
    }

    header('location: control.php');
   
} else {

    $sql    = "SELECT * FROM `objects` ORDER BY `id` DESC";
    $result = mysql_query($sql) or die("SQL Select Error");
    $count  = mysql_num_rows($result);
                    
?>

    <table width="500" border="0" cellspacing="1" cellpadding="0" align="center">
    <form name="form1" method="post" action="control.php?type=2">
    <tr><td>
        <table width="500" border="0" cellspacing="1" cellpadding="0">
            <tr><td align="center"><strong>Id</strong></td>
                <td align="center"><strong>Object Name</strong></td>
                <td align="center"><strong>Object type</strong></td>
                <td align="center"><strong>Object</strong></td>
            </tr>
            
            <?php
            
            while ($obj = mysql_fetch_object($result)) {
            
            ?>
            
            <tr><td align="center"><input type="hidden" name="id[]" value="<?=$obj->id?>"><?=$obj->id?></td>
                <td align="center"><input name="obj01[]" type="text" id="obj01" value="<?=$obj->obj01?>"></td>
                <td align="center"><input name="obj02[]" type="text" id="obj02" value="<?=$obj->obj02?>"></td>
                <td align="center"><input name="obj03[]" type="text" id="obj03" value="<?=$obj->obj03?>"></td>
            </tr>
            
            <?php
            }
            ?>
            <tr><td colspan="4" align="center"><input type="submit" name="Submit" value="Submit"></td>
            </tr>
        </table>
    </td></tr>
    </form>
    </table>
    
<?php
}
?>
                
?>



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Enya
Дата 7.11.2006, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



-=Ustas=-, что-то не то. Не сохраняет.
Вот сам Control


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 7.11.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Цитата(Enya @  7.11.2006,  14:01 Найти цитируемый пост)
-=Ustas=-, что-то не то. Не сохраняет.


Всмысле не сохраняет?!



--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Enya
Дата 7.11.2006, 15:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 386
Регистрация: 5.10.2005

Репутация: нет
Всего: нет



-=Ustas=-, я же ссылку дала.
Попробуй сам.
Ну, нажимаю редактировать.
Вбиваю данные в поля.
Данные не попадают в БД.
Смотрелда в ручную.


--------------------

Утсанвлен Денвер
1. PHP Version 5.1.6
2. MySQL 5.0.18-max
3. phpMyAdmin 2.6.1
PM MAIL WWW ICQ   Вверх
-=Ustas=-
Дата 7.11.2006, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ustix IT Group
****


Профиль
Группа: Участник Клуба
Сообщений: 2222
Регистрация: 21.1.2005
Где: Краснодар

Репутация: 32
Всего: 69



Enya, нормально все сохраняется. Только что пробовал.


--------------------
В искаженном мире все догмы одинаково произвольны, включая догму о произвольности догм.
-----
PM WWW ICQ Skype   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1303 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.