[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Помогите решить проблему с выборкой из базы.
gen552
Всем добрый день. Пытаюсь создать простой публикатор новостей. Однажды мне повезло и он заработал. Затем я начал изучать и пробовать реализовывать добавление и вывод изображений. Где то что то зацепил, и теперь когда я пытаюсь вывести новость в форму для её коректировки, в поля ничего не выводится, то есть форма пустая.

Я подозреваю что проблема где то здесь:

PHP
$result mysql_query("SELECT * FROM article WHERE id='$id'",$db);
$myrow mysql_fetch_array($result);


хотя могу быть неправ.

Помогите пожалуйста! Уже две недели сижу и пытаюсь решить эту проблему.
Я новичок, по этому не знаю нужны ли Вам ещё какие нибудь дополнительные файлы. Если да, то выложу.
Но хочу сказать, что всё остальное работает: вывод добавленой новости, добавление самой новости , удаление новости. Проблема именно в выводе информации в поля для её изменения.

Вот сам код:

PHP
<?php
$db 
mysql_connect ("localhost","root","");
mysql_select_db ("blog",$db);

$result mysql_query("SELECT * FROM article WHERE id='$id'",$db);
$myrow mysql_fetch_array($result);


HTML
<form name="Form1" method="post" action="update.php" enctype="multipart/form-data" id="Form1">
<input value="<?php echo $myrow['title'];?>" type="text" id="title" style="position:absolute;left:170px;top:19px;width:360px;font-family:Arial;font-size:13px;z-index:80" size="60" name="title" value="">
<textarea name="opis" id="opis" style="position:absolute;left:6px;top:78px;width:525px;height:90px;font-family:Arial;font-size:13px;z-index:81" rows="4" cols="84"><?php echo $myrow['opis'];?></textarea>
<textarea name="articles" id="article" style="position:absolute;left:6px;top:201px;width:525px;height:200px;font-family:Arial;font-size:13px;z-index:82" rows="11" cols="84">
<?php echo $myrow['articles'];?></textarea>
<input value="<?php echo $myrow['date'];?>" type="text" id="date" style="position:absolute;left:170px;top:420px;width:360px;font-family:Arial;font-size:13px;z-index:83" size="60" name="date" value="">
<input value="<?php echo $myrow['author'];?>" type="text" id="author" style="position:absolute;left:170px;top:458px;width:360px;font-family:Arial;font-size:13px;z-index:84" size="60" name="author" value="">
<input value="<?php echo $myrow['image'];?>" type="file" id="image" style="position:absolute;left:170px;top:498px;width:360px;height:23px;font-family:Arial;font-size:13px;z-index:85" name="image">


<div id="wb_Text1" style="position:absolute;left:21px;top:22px;width:115px;height:16px;z-index:86" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Название статьи</b></font></div>
<div id="wb_Text2" style="position:absolute;left:21px;top:52px;width:131px;height:16px;z-index:87" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Краткое описание</b></font></div>
<div id="wb_Text3" style="position:absolute;left:21px;top:176px;width:52px;height:16px;z-index:88" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Статья</b></font></div>
<div id="wb_Text4" style="position:absolute;left:21px;top:423px;width:121px;height:16px;z-index:89" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Дата публикации</b></font></div>
<div id="wb_Text5" style="position:absolute;left:21px;top:461px;width:96px;height:16px;z-index:90" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Автор статьи</b></font></div>
<div id="wb_Text6" style="position:absolute;left:21px;top:501px;width:97px;height:16px;z-index:91" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Изображение</b></font></div>
<input name="id" type="hidden" value="[b]<?php echo $myrow['id'];?>[/b]">
<input type="submit" id="send" name="Send" value="Сохранить" style="position:absolute;left:220px;top:544px;width:96px;height:25px;font-family:Arial;font-size:13px;z-index:92">
</form>


Простите что здесь куча всякого.... Спасибо.



Спустя 18 минут, 7 секунд (7.10.2009 - 16:51) Gabriel написал(а):
бб-кодами пользуемся

Спустя 23 минуты, 18 секунд (7.10.2009 - 17:15) glock18 написал(а):
Вероятно, на сервере отключена директива register_globals. подключить ее можно в php.ini. Или переписать обращение к переменным из глобальным массивам.

Спустя 32 секунды (7.10.2009 - 17:15) sergeiss написал(а):
Да... 2 недели сидеть и "париться"... У меня нет слов smile.gif

Вот давай рассмотрим одну строку:

HTML
<input value="<?php echo $myrow['date'];?>" type="text" id="date" style="position:absolute;left:170px;top:420px;width:360px;font-family:Arial;font-size:13px;z-index:83" size="60" name="date" value="[color=orange]</span>">


Для большей наглядности распишем ее по-другому, чисто "в научных целях".
HTML
<input
value
="<?php echo $myrow['date'];?>"
type="text"
id="date"
style="position:absolute;left:170px;top:420px;width:360px;font-family:Arial;font-size:13px;z-index:83"
size="60"
name="date"
value="<span style='color:orange'>[/color]">

Так... Имя и айди - есть, тип - есть... Ба! А это что? wink.gif В конце стоит value="", которое перезаписывает ту величину, которая была заявлена в начале строки...

Как ты думаешь, что надо сделать с value? Я бы предложил перетащить его из начала описания инпута в его конец. И сделать только один экземпляр value для каждого инпута biggrin.gif .

PS. Решишь эту проблему - всё остальное, скорее всего, будет работать исправно.

Спустя 3 часа, 20 минут, 11 секунд (7.10.2009 - 20:35) gen552 написал(а):
Нет, не работает.

Я добавил следующую строчку:

HTML
if (isset($_GET['id'])) {$id = $_GET['id'];}


Теперь данные попадают в форму как положено. Но при нажатии на кнопку обновить, обновляются все статьи. То есть если в базе 12 статей, все они будут одинаковые.
Ошибка где то сдесь. user posted image


HTML
$db = mysql_connect ("localhost","root","");
mysql_select_db ("blog",$db);

if (isset($_GET['id'])) {$id = $_GET['id'];}

$result = mysql_query("SELECT * FROM article WHERE id='$id'",$db);
$myrow = mysql_fetch_array($result);


Может кто то согласится принять у меня все все файлы и исправить ошибку и пояснить в чём она.
Честно, нет сил моих.

а ещё мучаться с добавлением изображения в базу.....

Спустя 18 минут, 33 секунды (7.10.2009 - 20:54) twin написал(а):
А причем тут этот запрос... Где запрос на обновление?

Спустя 31 секунда (7.10.2009 - 20:55) Gabriel написал(а):
PHP
$id mysql_real_escape_string( isset($_POST['id'])?$_POST['id']:NULL );

ну может меторы для начала уровняеш? ато форма пост а ИД гет

Спустя 3 минуты, 27 секунд (7.10.2009 - 20:58) twin написал(а):
Цитата
ну может меторы для начала уровняеш? ато форма пост а ИД гет

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

Спустя 9 минут, 38 секунд (7.10.2009 - 21:08) sergeiss написал(а):
А то, что я написал про value - скорректировал?

И вообще. Покажи этот код, как он выглядит в настоящее время.

Спустя 56 минут, 21 секунда (7.10.2009 - 22:04) gen552 написал(а):
Ладно, чуствую здесь я просто инфу неправильно подаю.
Давайте по порядку:

Ниже приведён код который выводит список новостей из базы данных. Этот файл у меня значится как edit_article.php

PHP
<?php
$db 
mysql_connect ("localhost","root","");
mysql_select_db ("blog",$db);

if (isset(
$_GET['id'])) {$id $_GET['id'];}

$result mysql_query("SELECT id,title FROM article",$db);
$myrow mysql_fetch_array($result);
?>
<meta charset=Windows-1251">

<div id="Layer1" style="overflow:scroll;overflow-x:auto;width:100%;height:100%;z-index:1">

<div id="wb_Table1" style="width:99%;height:100px;z-index:0;" align="center">
<table width="99%" border="1" cellpadding="3" cellspacing="3" bordercolor="#FF0000" id="Table1">

<?php

do {
printf ('<tr><td align="left" valign="middle" bgcolor="#C0C0C0" bordercolor="#FF0000" height="24"> 
     <font style="font-size:13px" color="#FF0000" face="Arial"><b><a href="edit_form_article.php?id=%s">%s</a></b></font>
</td>
</tr>'
,$myrow["id"],$myrow["title"]); 

}

while (
$myrow mysql_fetch_array($result));

?>



Представте себе обычный список. Вот я захотел одну новость обновить или поменять допустим заголовок. Выбираю новость №12 и нажимаю на неё, то есть как вы догадались просто обычная ссылка:

HTML
PHP
<font style=\"font-size:13px\" color=\"#FF0000\" face=\"Arial\"><b><a href=\"edit_form_article.php?id=%s\">%s</a></b></font>


С выводом списка статей проблем нет. Тут всё гуд.

После я попадаю на страницу под именем "edit_form_article.php", где расспологается та самая форма, в которой должна быть выведена информация по новости №12. Но она не выводится. Форма просто пустая.

А вот та самая форма (я выставлял этот код уже выше)

PHP
<?php
$db 
mysql_connect ("localhost","root","");
mysql_select_db ("blog",$db);

$result mysql_query("SELECT * FROM article WHERE id='$id'",$db);
$myrow mysql_fetch_array($result);


HTML
<form name="Form1" method="post" action="update.php" enctype="multipart/form-data" id="Form1">
<input value="<?php echo $myrow['title'];?>" type="text" id="title" style="position:absolute;left:170px;top:19px;width:360px;font-family:Arial;font-size:13px;z-index:80" size="60" name="title" value="">
<textarea name="opis" id="opis" style="position:absolute;left:6px;top:78px;width:525px;height:90px;font-family:Arial;font-size:13px;z-index:81" rows="4" cols="84"><?php echo $myrow['opis'];?></textarea>
<textarea name="articles" id="article" style="position:absolute;left:6px;top:201px;width:525px;height:200px;font-family:Arial;font-size:13px;z-index:82" rows="11" cols="84">
<?php echo $myrow['articles'];?></textarea>
<input value="<?php echo $myrow['date'];?>" type="text" id="date" style="position:absolute;left:170px;top:420px;width:360px;font-family:Arial;font-size:13px;z-index:83" size="60" name="date" value="">
<input value="<?php echo $myrow['author'];?>" type="text" id="author" style="position:absolute;left:170px;top:458px;width:360px;font-family:Arial;font-size:13px;z-index:84" size="60" name="author" value="">
<input value="<?php echo $myrow['image'];?>" type="file" id="image" style="position:absolute;left:170px;top:498px;width:360px;height:23px;font-family:Arial;font-size:13px;z-index:85" name="image">


<div id="wb_Text1" style="position:absolute;left:21px;top:22px;width:115px;height:16px;z-index:86" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Название статьи</b></font></div>
<div id="wb_Text2" style="position:absolute;left:21px;top:52px;width:131px;height:16px;z-index:87" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Краткое описание</b></font></div>
<div id="wb_Text3" style="position:absolute;left:21px;top:176px;width:52px;height:16px;z-index:88" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Статья</b></font></div>
<div id="wb_Text4" style="position:absolute;left:21px;top:423px;width:121px;height:16px;z-index:89" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Дата публикации</b></font></div>
<div id="wb_Text5" style="position:absolute;left:21px;top:461px;width:96px;height:16px;z-index:90" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Автор статьи</b></font></div>
<div id="wb_Text6" style="position:absolute;left:21px;top:501px;width:97px;height:16px;z-index:91" align="left">
<font style="font-size:13px" color="#FF0000" face="Arial"><b>Изображение</b></font></div>
<input name="id" type="hidden" value="[b]<?php echo $myrow['id'];?>[/b]">
<input type="submit" id="send" name="Send" value="Сохранить" style="position:absolute;left:220px;top:544px;width:96px;height:25px;font-family:Arial;font-size:13px;z-index:92">
</form>


А это обработчик "update.php":

PHP
<?php
$db 
mysql_connect ("localhost","root","");
mysql_select_db ("blog",$db);

if (isset(
$_POST['title']))       {$title $_POST['title'];        if ($title == '')    {unset($title);    } }
if (isset(
$_POST['opis']))        {$opis $_POST['opis'];          if ($opis == '')     {unset($opis);     } }
if (isset(
$_POST['articles']))    {$articles $_POST['articles'];  if ($articles == '') {unset($articles); } }
if (isset(
$_POST['date']))        {$date $_POST['date'];          if ($date == '')     {unset($date);     } }
if (isset(
$_POST['author']))      {$author $_POST['author'];      if ($author == '')   {unset($author);   } }     

if (isset(
$title) && isset($opis) && isset($articles) && isset($date) && isset($author))
{
$result mysql_query ("UPDATE article SET title='$title', opis='$opis', articles='$articles', date='$date', author='$author'");
if (
$result == 'true') {echo "<font style='font-size:13px' color='#FF0000' face='Arial'><b> Статья успешно обновлена!</b></font>";}
else {echo 
"<font style='font-size:13px' color='#FF0000' face='Arial'><b>Статья не обновлена!</b></font>";}

}
else
{ echo 
"<font style='font-size:13px' color='#FF0000' face='Arial'><b>Введена не вся информация. Статья не обновлена!</b></font>"; }


Но он в принципе работает.

Когда я добавил эту строчку:

PHP
if (isset($_GET['id'])) {$id $_GET['id'];}


новости стали выводится как положено. Но при нажатии на кнопку "обновить" в базе обновляются все новости, то есть все 24 (допустим) новости имеют такое же содержание как новость №12.

sergeiss, не помогло. Да и раньше работало вместе с этим
HTML
value=""
без проблем.

Просто информация не хочет вытаскиваться по
HTML
ID
. А если и вытаскивается, то потом сохраняет одно и тоже полностью во всех ячейках БД.



Спустя 13 минут, 52 секунды (7.10.2009 - 22:18) sergeiss написал(а):
А то, что я тебя "носом тыкал" в ошибку (см. моё сообщение в этой теме в 18:15) - это ничего, нормально? smile.gif Или я сам собой там разговаривал? Или тебе указал на ошибку? Которую ты даже и не подумал исправить. А так и оставил всё, как есть.

И в запросе на апдейт ты не указываешь условие WHERE, поэтому обновляется вся таблица, все строки.

Спустя 1 час, 31 минута, 22 секунды (7.10.2009 - 23:49) gen552 написал(а):
Получилось! smile.gif

Оказывается я забыл добавить в "upload.php" следующие строки:

PHP
if (isset($_POST['id']))    {$id$_POST[id];}


Ну и конечно же WHERE ... smile.gif

Как всегда, истина где то рядом, а я её не вижу.

Всем большое спасибо за помощь.

Отдельная благодарность sergeiss. Только я так и не понял суть ошибки (см. моё сообщение в этой теме в 18:15).

Я там ничего не исправлял. Что там не так? Ведь всё ж работает. Хотя то
HTML
value
в конце я всё ж таки убрал. Всё равно оно там никчему.

Ребята, мне ещё предстоит с добавлением изображения помучаться.

Я так понял нужно вставить код добавления изображения в "upload.php". Но как это правильно сделать?

Последние мои попытки сделать это, венчались решением двух недельной проблемой вывода информации из БД.

Помогите пожалуйста.

Всё что я могу на сегодняшний день сделать это вот:

PHP
<?php
$db 
mysql_connect ("localhost","root","");
mysql_select_db ("blog",$db);


if (isset(
$_POST['title']))       {$title $_POST['title'];        if ($title == '')    {unset($title);    } }
if (isset(
$_POST['opis']))        {$opis $_POST['opis'];          if ($opis == '')     {unset($opis);     } }
if (isset(
$_POST['articles']))    {$articles $_POST['articles'];  if ($articles == '') {unset($articles); } }
if (isset(
$_POST['date']))        {$date $_POST['date'];          if ($date == '')     {unset($date);     } }
if (isset(
$_POST['author']))      {$author $_POST['author'];      if ($author == '')   {unset($author);   } }


if (isset(
$title) && isset($opis) && isset($articles) && isset($date) && isset($author))
{
$result mysql_query ("INSERT INTO article (title,opis,articles,date,author) VALUES ('$title','$opis','$articles','$date','$author')");


if (
$result == 'true') {echo "<font style='font-size:13px' color='#FF0000' face='Arial'><b> Статья успешно опубликована!</b></font>";}
else {echo 
"<font style='font-size:13px' color='#FF0000' face='Arial'><b>Статья не опубликована!</b></font>";}

}
else
{ echo 
"<font style='font-size:13px' color='#FF0000' face='Arial'><b>Введена не вся информация. Статья не опубликована!</b></font>"; }


А это уже сам код добавления изображения (продолжение кода):

PHP
// Каталог, в который мы будем принимать файл:
$uploaddir 'images/';
$uploadfile $uploaddir.basename($_FILES['uploadfile']['name']);

// Копируем файл из каталога для временного хранения файлов:
if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile))
{
echo 
"<h3>Файл успешно загружен на сервер</h3>";
}
else { echo 
"<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }


Файл добавляется в папку. Проблем нет. Но ведь если в БД нет ссылки на изображение (а её нет), значит картинка не будет отображаться.

Вот я на этом застрял. Что делать?

Я сначала подумал отдельное поле добавить в форму, где помимо загрузки файла, нужно ещё в ручную и путь к изображению указывать. Ну например images/avatr.jpg.

Таким образом изображение загружается в папку, а путь в БД.

Но как то хочется чтобы, загрузил картинку и она отобразилась. smile.gif
Без всяких указаний пути к файлу.



Спустя 13 минут, 32 секунды (8.10.2009 - 00:03) Gabriel написал(а):
PHP
$home_url "http://mysite.com/";
$updir "images/".$_FILES['uploadfile']['name'];

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

Спустя 15 минут, 9 секунд (8.10.2009 - 00:18) sergeiss написал(а):
Цитата (gen552 @ 8.10.2009 - 00:49)
Только я так и не понял суть ошибки (см. моё сообщение в этой теме в 18:15)

Поясняю. Я взял твой код, и целиком вставил его в ДримВивер 8. А он в тех строках, где был двойной value, не сделал цветовую раскраску blink.gif Я стал искать, и нашел причину. При удалении лишнего value всё стало сразу же нормально. То есть, с двойным value редактор просто не понимал, где что находится.
Далее. Учитывая, что ДримВивер ну очень хорошо продуманная система, делаем вывод: какой-нибудь браузер также может не понять, что тут. Тот факт, что у тебя работало ранее, ни о чем не говорит. Потому что это могло быть в твоем браузере. Но в другом браузере всё могла бы быть по-другому.

Короче говоря smile.gif Если есть неоднозначность, ее надо устранить.

PS. А вот пример разной работы браузеров. Из личной практики.

Делаю текстовое поле. Пишу для него name, но забываю про id. В процессе работы идет обращение через функцию JS document.getElementById(...).
И вот Опера, в которой я обычно тестирую, всё воспринимает нормально!!! Т.е. при наличии name и отсутствии id предполагает, что id равен name. А в ИЭ, как оказалось, нужно всё указать в явном виде.
Спасибо одному юзеру smile.gif Он не просто указал на ошибку (не срабатывала фича), но и назвал ее причину.

Спустя 3 часа, 41 минута, 6 секунд (8.10.2009 - 03:59) gen552 написал(а):
Да, про браузеры это я тоже слышал. Обязательно проверю.
Только вот я в NotePade++ всё тестирую. Там тоже цветовая раскраска есть. Но видать не настолько умная... Показала что всё ок! smile.gif
Быстрый ответ:

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