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

Форум MySQL

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

 

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

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

тема: Неработает цикл do-while
 
 автор: scan54   (21.03.2009 в 07:24)   письмо автору
 
 

Народ помогите.Решил обучиться самостоятельно делать простой сайт на PHP.Взял у сына
диск Евгения Попова-Все технические моменты онлайн бизнеса в видеоформате 2.
PHP и MYSQL для начинающих.
9 урок в простом пхп сайте неработает цикл do-while ,
Повторял уроки с 1 по 9 7 раз, угрохал 8 дней и не пашет.
Рассерчал нашёл на диске его пхп скрипт( lessons.php ),
Переписал его к себе со всеми поправками на свой ( texn.php ).
И всё равно пишется такая же ошибка.
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
И
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
В строках между которыми находится цикл do-while.

  Ответить  
 
 автор: а-я   (21.03.2009 в 08:29)   письмо автору
 
   для: scan54   (21.03.2009 в 07:24)
 

на всякий случай перевод

Вы передаете функции mysql_fetch_array() не ответ запроса.
Покажите код. и для работы с ответом кажется не пойдет do-while, используют while или for

  Ответить  
 
 автор: scan54   (21.03.2009 в 15:21)   письмо автору
 
   для: а-я   (21.03.2009 в 08:29)
 

Вот полный код всей странички на которой я застрял.Спасибо за внимание к моей проблеме.
<?php
include ("blocks/bd.php"); /*Соединяемся с базой*/
$result = mysql_query("SELECT title,meta_d,meta_k,text FROM settings WHERE page='lessons'",$db);
$myrow = mysql_fetch_array($result);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta name="description" content="<?php echo $myrow['meta_d']; ?>">
<meta name="keywords" content="<?php echo $myrow['meta_k']; ?>">

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
<title><?php echo $myrow['title']; ?></title>
<link href="style.css" rel="stylesheet" type="text/css">
</head>

<body>
<table width="690" border="0" align="center" cellpadding="0" cellspacing="0" bgcolor="#FFFFFF" class="main_border">

<!--Подключаем шапку сайта-->
<? include("blocks/header.php"); ?>

<tr>
<td><table width="690" border="0" cellspacing="0" cellpadding="0">
<tr>
<!--Подключаем левый блок сайта-->
<? include ("blocks/lefttd.php"); ?>
<td valign="top">
<p><?php echo $myrow['text']; ?> </p>


<?php

$result = mysql_query ("SELECT id,title,description,author,date FROM lessons",$db);

$myrow = mysql_fetch_array ($result);

do {

printf ("<table align='center' class='lesson'>

<tr>
<td class='lesson_title'>
<p class='lesson_name'><a href='view_lesson.php?id=%s'>%s</a></p>
<p class='lesson_adds'>Дата добавления: %s</p>
<p class='lesson_adds'>Автор урока: %s</p></td>
</tr>

<tr>
<td>%s</td>
</tr>

</table><br><br>", $myrow["id"], $myrow["title"],$myrow["date"],$myrow["author"],$myrow["description"]);

}

while ($myrow = mysql_fetch_array ($result));
?>


<p>&nbsp;</p></td>
</tr>
</table></td>
</tr>
<!--Подключаем нижний графический элемент-->
<? include ("blocks/footer.php"); ?>
</table>
</body>
</html>

  Ответить  
 
 автор: а-я   (21.03.2009 в 16:13)   письмо автору
 
   для: scan54   (21.03.2009 в 15:21)
 

попробуйте использовать такую конструкцию для запросов.

<?
$sql 
'
SELECT 
 `title`,
 `meta_d`,
 `meta_k`,
 `text`
FROM
 `settings` 
WHERE
 `page` = "lessons"
'

$result mysql_query($sql,$db) or die(mysql_error());
?>

так сразу покажет запрос с ошибкой.

и мне кажется у Вас просто нет данных в БД.
запрос пришел пустой, а в коде нет проверки на пустой ответ.
а сразу идет попытка получение ответа.
автор скорее всего просто заглушил подобные ошибки.

  Ответить  
 
 автор: scan54   (21.03.2009 в 19:14)   письмо автору
 
   для: а-я   (21.03.2009 в 16:13)
 

Спасибо. Я правда ещё слабак в своих начинаниях, но введя ваш код на страничку
получил ошибку,при перенесении которой с экрана Adobe Dreamweaver(а)на блокнот
получил вот такое описание:

Notice: Undefined variable: db in z:\home\localhost\www\moisite\texn.php on line 13
[ убрать подсказку | никогда больше не показывать ]

Это предупреждение, вероятнее всего, возникает вследствие высокого уровня контроля
ошибок в PHP, по умолчанию установленного в Денвере (E_ALL). Такой режим вывода
ошибок является рекомендуемым и сильно помогает при отладке скриптов. Однако
множество готовых скриптов требуют более низкого уровня ошибок.

Вы можете установить более слабый контроль ошибок одним из следующих способов:

Впишите в скрипты строчку:
Error_Reporting(E_ALL & ~E_NOTICE);
Этот способ особенно удобен, если в скрипте есть один файл (конфигурационный),
который подключается всеми остальными.
Рекомендуемый способ. Создайте в директории со скриптом файл .htaccess следующего содержания:
php_value error_reporting 7
Исправьте в /usr/local/php/php.ini значение error_reporting на E_ALL & ~E_NOTICE. Этот способ
не является рекомендуемым и может привести к серьезным неудобствам при отладке!
[Денвер: показать возможную причину ошибки]
Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in
z:\home\localhost\www\moisite\texn.php on line 13

Но всё же интересно, что в
базе 2 таблицы и с 1 таблицы приходят данные, а со второй нет,хотя похоже выше всё сказано.Как вы думаете придёться мне исправлять конфигурацию или как?

  Ответить  
 
 автор: а-я   (21.03.2009 в 19:27)   письмо автору
 
   для: scan54   (21.03.2009 в 19:14)
 

надо смотреть файл blocks/bd.php
оттуда не приходит переменная $db

  Ответить  
 
 автор: scan54   (21.03.2009 в 19:39)   письмо автору
 
   для: а-я   (21.03.2009 в 19:27)
 

В файле blocks/bd.php прописано--
<?php
$db = mysql_connect ("localhost","uyt","uyt456");
mysql_select_db ("moisite",$db);
?>

  Ответить  
 
 автор: а-я   (21.03.2009 в 20:51)   письмо автору
 
   для: scan54   (21.03.2009 в 19:39)
 

Прикрепите в архиве все что у вас есть включая дамп таблиц.
Попытаюсь сделать и написать комментарии..

  Ответить  
 
 автор: scan54   (21.03.2009 в 21:23)   письмо автору
 
   для: а-я   (21.03.2009 в 20:51)
 

Спасибо что тратите на неуча время, а может просто переделать do-while на while.
Вместо {действие} (условие) сделать (условие) {действие} только вот незнаю как?
<?php

$result = mysql_query ("SELECT id,title,description,author,date FROM lessons",$db);

$myrow = mysql_fetch_array ($result);

do {

printf ("<table align='center' class='lesson'>

<tr>
<td class='lesson_title'>
<p class='lesson_name'><a href='view_lesson.php?id=%s'>%s</a></p>
<p class='lesson_adds'>Дата добавления: %s</p>
<p class='lesson_adds'>Автор урока: %s</p></td>
</tr>

<tr>
<td>%s</td>
</tr>

</table><br><br>", $myrow["id"], $myrow["title"],$myrow["date"],$myrow["author"],$myrow["description"]);

}

while ($myrow = mysql_fetch_array ($result));
?>

  Ответить  
 
 автор: а-я   (21.03.2009 в 21:35)   письмо автору
 
   для: scan54   (21.03.2009 в 21:23)
 

а если так?


<?php 

$sql 
'
SELECT
 `id`,
 `title`,
 `description`,
 `author`,
 `date` 
FROM `lessons`'
;

$result mysql_query($sql,$db) or die(mysql_error());
?>
<? 
if(mysql_num_rows($result)): ?>
 <? while($_R mysql_fetch_array ($result)): ?>
 <table align='center' class='lesson'>
 <tr>
  <td class='lesson_title'>
   <p class='lesson_name'><a href='view_lesson.php?id=<?php echo $_R['id']?>'><?php echo $_R['title']?></a></p>
   <p class='lesson_adds'>Дата добавления: <?php echo $_R['date']?></p>
   <p class='lesson_adds'>Автор урока: <?php echo $_R['author']?></p>
  </td>
 </tr>
 <tr><td><?php echo $_R['description']?></td></tr>
 </table>
 <br /><br />
 <? endwhile; ?>
<? 
else: ?>
 Данных нету.<br />
<? endif; ?>

  Ответить  
 
 автор: Trianon   (21.03.2009 в 22:06)   письмо автору
 
   для: а-я   (21.03.2009 в 21:35)
 

так тоже не получится.
Опять же, потому что include("blocks/bd.php"); не указан.

  Ответить  
 
 автор: а-я   (22.03.2009 в 06:32)   письмо автору
 
   для: Trianon   (21.03.2009 в 22:06)
 

>так тоже не получится.
>Опять же, потому что include("blocks/bd.php"); не указан.

хммм. мне просто показалось, что мы разбираем только часть кода.
автор: scan54 (21.03.2009 в 15:21) там есть код, строки от 32 до 58.

конечно, мне надо было уточнить, что этот код надо заменить в таком то месте..

  Ответить  
 
 автор: scan54   (22.03.2009 в 09:40)   письмо автору
85.7 Кб
 
   для: а-я   (21.03.2009 в 21:35)
 

Доброе утро всем. Вписал я ваш код вместо do-while, получил
вот эту надпись:
Unknown column 'description' in 'field list'
(Неизвестный столбец 'описание' в 'cписке полей')
на своём тренеровочном сайте http://localhost/moisite
а в дизайне Dreamweaver(е) вот такую картинку


P.S начал читатать книгу Энди Харриса
PHPMySQL для начинающих
Ребята а может вам выслать его 9 урок,где он
всё по полочкам раскладывает и показывает,
правда он весит 28 мГБ ?
Мне сын сказал что за диск с этими уроками он выложил
2500 рублей, во как.

  Ответить  
 
 автор: а-я   (22.03.2009 в 12:33)   письмо автору
 
   для: scan54   (22.03.2009 в 09:40)
 

значит в таблице lessons у Вас нету поле description

я как-то тож пытался использовать все эти навороты, только еще больше запутался.
легче выучить разметку, она как таблица умножения.. на первый взгляд тяжелая вещь, а потом от зубов отскакивает.
поставить denwer на свой ПК,
купить несколько книг, которые висят в шапке форума.
книги очень хорошие, авторы книг это администраторы этого сайта(форума) они пишут на довольно доступном языке...
=) даже, если я это все понял) а я был далек от всего этого..

И конечно, советую почаще использовать поиск на этом форуме.
Он представляет из себя отдельную ценность.)
В нем столько нового узнал)

  Ответить  
 
 автор: scan54   (22.03.2009 в 12:53)   письмо автору
92.9 Кб
 
   для: а-я   (22.03.2009 в 12:33)
 

Спасибо дорогой за помощь,учту все ваши пожелания.Будем учиться мне ведь только 55, ешё непоздно.В Dump.ru выложил 9 урок, он записан как фильм,если интересно посмотрите.
Как ссылку ставить я ещё незнаю, а вот тут скрин со сылками которые мне дали при закачке.
Да вот прошу прошения я поставил пароль на файл( lesson9 ).

  Ответить  
 
 автор: scan54   (21.03.2009 в 21:43)   письмо автору
 
   для: а-я   (21.03.2009 в 20:51)
 

Извини дружище моя старушка орёт, чтобы я завязывал до завтра.Так что прости, да и дампы я снимать ещё неумею.Вот скрины.

  Ответить  
 
 автор: scan54   (21.03.2009 в 20:02)   письмо автору
 
   для: а-я   (21.03.2009 в 19:27)
 

И как Евгений Павлов говорит в этом 9 уроке, что с 1 таблицей в базе уже есть соединение с помощью include ,то со второй больше писать уже ненадо.

  Ответить  
 
 автор: scan54   (21.03.2009 в 15:35)   письмо автору
123.2 Кб
 
   для: а-я   (21.03.2009 в 08:29)
 

Да вот кстати,что выплывает у меня и у него.

  Ответить  
 
 автор: scan54   (21.03.2009 в 15:37)   письмо автору
83.1 Кб
 
   для: а-я   (21.03.2009 в 08:29)
 

А вот это у Евгения Попова.

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

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