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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Обновление записи в базе 
:(
    Опции темы
alexpzas
Дата 1.11.2009, 00:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Проблема состоит в том, что в условии 

Код


if (!isset ($id))
{
    $result = mysql_query ("SELECT  title,id FROM mooves");
    $myrow = mysql_fetch_array ($result);
    do 
    {
        printf ("<p><a href='edit_moov.php?id=%s'>%s</a></p>",$myrow["id"],$myrow["title"]);
    }
    while ($myrow = mysql_fetch_array ($result));
}
else
{
    
        
$result = mysql_query ("SELECT  * FROM mooves WHERE id=$id");
$myrow = mysql_fetch_array ($result);
    
print <<<HERE

<form name="form1" method="post" action="update_moov.php">
          <p>
            <label>
            <center>
              <p><strong>Введите название фильма</strong><br>
                  <input value="$myrow[title]" type="text" name="title" id="title">
                  <br>  
                  <br>
                  <strong>Введите краткое описание</strong><br>
                  <input value="$myrow[meta_d]" type="text" name="meta_d" id="meta_d">
                  <br>
                  <br>
                  <strong>Введите ключевые слова<br>
                    </strong>
                  <input value="$myrow[meta_k]" type="text" name="meta_k" id="meta_k">
                  <br>
                  <br>
                  <strong>Введите дату обновления</strong><br>
                  <input value="$myrow[date]" name="date" type="text" id="date" value="2009-10-09">
                  <br>
                  <br>
                  <strong>Введите краткое описание фильма с тэгами абзацев</strong>
                  <textarea name="discription" id="discription" cols="60" rows="5">
                  $myrow[discription] </textarea>
                  <br>
                  <br>         
                  <strong>Введите текст описания фильма</strong>
                  <textarea name="text" id="text" cols="60" rows="15">
                  $myrow[text]</textarea>
                  <br>
                  <strong><br>
                    Введите автора обновления</strong><br>
                  <input value="$myrow[autor]" type="text" name="autor" id="autor">
                  </p>
              <p><strong>Введите путь к рисунку с тэгами</strong></p>
              <p>
                <input  value= "$myrow[IMAGE]" type="text" name="IMAGE" id="IMAGE">
                <br>
                
                <input name="id" type="hidden" value="$myrow[id]">
                  <br>
                  <input type="submit" name="submint" id="submint" value="Сохранить изминения">
                  <br>
                </p>
            </center>
            </label>
          </p>
        </form>

HERE;
}





не срабатывает выполнение когда  id существует , то-есть смысл таков : на страницу выводится перечень записей в базе в виде ссылок, при нажатии на ссылку должна выводиться форма со всеми полями по  данной записи , но получается бок, при нажатии на ссылку ничего не происходит.
Помогите пожалуйста  smile 


Это сообщение отредактировал(а) skyboy - 1.11.2009, 02:20
PM MAIL   Вверх
bars80080
Дата 1.11.2009, 01:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



во-первых, код принято выделять нужной подстветкой (кнопка код над формой)

во-вторых, в представленном коде id не существует. где она инициализируется?
PM MAIL WWW   Вверх
alexpzas
Дата 1.11.2009, 01:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Сори за подсветку, исправлюсь , а id  обьявляется туточки 


Код

<?php include ("blocks/bd.php");?>

где bd.php
Код

<?php 
$db = mysql_connect ("localhost","qqq","111");
mysql_select_db("phpsite",$db);
mysql_query("SET NAMES 'cp1251';");
?>

наскоко я понимаю, когда происходит подключение к базе
PM MAIL   Вверх
Ипатьев
Дата 1.11.2009, 02:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



подключение к базе происходит.
но никакая переменная $id при этом не устанавливается.
Может быть, переменная должна придти из формы?
PM MAIL   Вверх
capitan
Дата 1.11.2009, 14:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Цитата(alexpzas @ 1.11.2009,  01:25)
наскоко я понимаю, когда происходит подключение к базе

Вы сами пишите код или скопипастили его?
Судя по тексту переменная $id должна получаться так:
Код

$id = (float)$_GET['id'];


Я такой строки вообще не увидел.
PM MAIL WWW ICQ   Вверх
bars80080
Дата 1.11.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(capitan @  1.11.2009,  13:04 Найти цитируемый пост)
Судя по тексту переменная $id должна получаться так:
Выделить всёкод PHP
1:
    
$id = (float)$_GET['id'];

нет, форма пост и в ней есть hidden поле name="id"

Код

if(isset($_POST['id'])) $id = intval($_POST['id']);

зачем дробное число для целого?
PM MAIL WWW   Вверх
capitan
Дата 1.11.2009, 14:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



bars80080,  нет. Судя по тексту: то-есть смысл таков : на страницу выводится перечень записей в базе в виде ссылок, при нажатии на ссылку должна выводиться форма со всеми полями по  данной записи.  Вывод идет через $_GET[]   
Код

<p><a href='edit_moov.php?id=%s'>%s</a></p>
 

Через $_POST  Шлется уже сама форма.

По поводу float:
Выполните код:
Код

<?      
$num = '12345678910';
echo intval($num).'<br />';
echo (float)$num;
?>


получите результат:
2147483647
12345678910

Поле id обычно auto_increment. Есть вероятность, что когда-то мы поймаем такую багу с intval($num)


Это сообщение отредактировал(а) capitan - 1.11.2009, 14:24
PM MAIL WWW ICQ   Вверх
bars80080
Дата 1.11.2009, 14:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



Цитата(capitan @  1.11.2009,  13:17 Найти цитируемый пост)
Есть вероятность, что когда-то мы поймаем такую багу с intval($num)

в больших сомнениях. не думаю, что товарищ разрабатывает настолько нагруженный сервис.
PM MAIL WWW   Вверх
alexpzas
Дата 2.11.2009, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Переменная действительно должна прийти из формы, интересно то что при нажатии на ссылку 
в браузере устанавливается 
http://localhost/phpsite/admin/edit_moov.php?id=1
 где как видно id всетаки с базы тянет, но форма получается не вызывается и не заполняется данными. Если же в условии поставить 
Код

if ( isset ($id))

тоесть бех ! (без отрицания), то форма выводится . НО.. при этом выдаёт ошибку

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\WebSerwer\htdocs\phpsite\admin\edit_moov.php on line 39
где 39 строка это 
Код

$myrow = mysql_fetch_array ($result);

попытка вытянуть как раз эти значения.
На форме действительно присутствует скрытая метка 
Код

<input name="id" type="hidden" value="$myrow[id]">

по которой соответственно и должен происходить переход по базе.
И ещё id - автоинкремент
PM MAIL   Вверх
Ипатьев
Дата 2.11.2009, 20:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2232
Регистрация: 5.7.2009

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



Попробуйте прочитать ответы
PM MAIL   Вверх
bars80080
Дата 2.11.2009, 22:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



или хотя бы тупо скопировать решения
PM MAIL WWW   Вверх
alexpzas
Дата 2.11.2009, 22:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



Я все равно не допонимаю, чего не не хватает, мож и торможу но ...
 ставлю условие 
Код

if(!isset($_GET['id'])) 

теперь выводится список , при клике на ссылку выводится форма но с пустыми значениями и с базы ничего не тянет при этом опять выдает ошибку
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\WebSerwer\htdocs\phpsite\admin\edit_moov.php on line 40
Код

$myrow = mysql_fetch_array ($result);

тоесть упорно не хочет вытягиваться массив значений как я понимаю.
И ещё я понимаю что я где-то туплю , и это лежит на поверхности , но упорно не замечаю.
Помогите пож, застрял на такой фигне,и дальше стопорится работа smile

Добавлено через 4 минуты
Хух ребята , допёр, пасибо за помощь,
провтыкал
Код

    $id = (float)$_GET['id']; перед 
        $result = mysql_query ("SELECT  * FROM mooves WHERE id=$id");
        $myrow = mysql_fetch_array ($result);

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


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



попробуйте

Код

if(isset($_REQUEST['id'])) $id = intval($_REQUEST['id']);
var_dump($_REQUEST);

что покажет?
PM MAIL WWW   Вверх
alexpzas
Дата 2.11.2009, 23:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



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

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



показывает  array(1) { ["id"]=>  string(1) "2" }   при выборе ссылки. 

Всем спасибо за помощь в решении проблемы  smile 
PM MAIL   Вверх
bars80080
Дата 2.11.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

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



теперича советую заменить $_REQUEST на $_POST и посмотреть что получится.

и оставить _POST

а также подумать почему так. (подсказка: это в форме написано)

Добавлено через 33 секунды
да, уточняю: не использовать $_REQUEST. старайтесь избегать его
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Базы Данных | Следующая тема »


 




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


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

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