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

Форум MySQL

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

 

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

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

тема: Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in
 
 автор: Ирен   (25.07.2009 в 15:05)   письмо автору
 
 

Учусь премудростям phpp

выдаёт такую ошибку
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in Z:\home\localhost\www\devichnik\kosmetika.php on line 34

<?php
include ("blocks/bd.php"); /*Соединяемся с базой */
$result = mysql_query("SELECT id,title,meta_d,meta_k,text FROM settings WHERE page='kosmetika'", $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 class="title">

<table width="690" border="0" align="center" bgcolor="#FFFF66" class="main_border">

<!--Подключаем шапку сайта-->
<?php include("blocks/header.php"); ?>
<tr>
<td>
<table width="690" border="1">
<tr>

<!--Подключение навигационной панели-->
<?php include("blocks/lefttd.php");?>
<td valign="top"> <p><?php echo $myrow['text']; ?></p>

<?php
$result = mysql_query("SELECT id.title.description FROM kosmetiks", $db);

$myrow = mysql_fetch_array($result);

do {
printf ("<table align='center' class='kosmetika'>
<tr>
<td class='kosmetika_title'>%s</td>
</tr>
<tr>
<td>&nbsp;</td>
</tr>
</table>", $myrow["title"]);
}
while ($myrow = mysql_fetch_array($result));
?>


<p>&nbsp; </p></td>
</tr>
</table></td>
</tr>

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

Как найти ошибку?

  Ответить  
 
 автор: winflip   (25.07.2009 в 15:25)   письмо автору
 
   для: Ирен   (25.07.2009 в 15:05)
 

Ошибка вовсе не в php, ошибка в MySQL запросе. Найти ошибку я не могу, потому что нету структур таблиц

  Ответить  
 
 автор: Ирен   (26.07.2009 в 13:46)   письмо автору
 
   для: winflip   (25.07.2009 в 15:25)
 

Да вы правы. переустановила денвер. и всё пошло без проблем

  Ответить  
 
 автор: Trianon   (25.07.2009 в 15:25)   письмо автору
 
   для: Ирен   (25.07.2009 в 15:05)
 

проблема в том, что после оператора
$result = mysql_query("SELECT id.title.description FROM kosmetiks", $db); 

Вы не должны тут же передавать $result любым функциям (в том числе и mysql_fetch_array()),
не проверив предварительно, что оператор был успешно выполнен. В случае, если он оказался отвергнут, самое разумное - вывести полный текст SQL-кода, диагностическое сообщение MySQL , и прекратить исполнение скрипта, поскольку в случае ошибки дальнейшая логика алгоритма так или иначе оказывается нарушенной.
$sql = "SELECT id.title.description FROM kosmetiks";
$result = mysql_query($sql, $db);
if(!$result) exit("Error in ".htmlspecialchars($sql)."<br>".mysql_error());

про примененный do...while писать очередной раз никаких приличных слов уже не осталось.

  Ответить  
 
 автор: Valick   (25.07.2009 в 15:26)   письмо автору
 
   для: Ирен   (25.07.2009 в 15:05)
 

И снова здравствуйте Евгений Попов...
здесь
$result = mysql_query("SELECT id.title.description FROM kosmetiks", $db);

вместо точек запятые наверное нужны?

  Ответить  
 
 автор: Trianon   (25.07.2009 в 15:37)   письмо автору
 
   для: Valick   (25.07.2009 в 15:26)
 

>вместо точек запятые наверное нужны?
нужен навык обнаружения таких вещей через средства диагностики.
А не через форум.

  Ответить  
 
 автор: Ирен   (25.07.2009 в 18:22)   письмо автору
 
   для: Trianon   (25.07.2009 в 15:37)
 

Точки в этом файле согласна ошибка моя. но в другом запятые стоят. ошибка к сожалению таже mysql valid
и где взять эти средства диагностики

  Ответить  
 
 автор: Ирен   (25.07.2009 в 17:23)   письмо автору
 
   для: Valick   (25.07.2009 в 15:26)
 

Вот именно имнно Евгений Попов то мне и нужен. Если это тот который курсы создаёт. Именнь по ним я и учусь

  Ответить  
 
 автор: Valick   (25.07.2009 в 19:32)   письмо автору
 
   для: Ирен   (25.07.2009 в 17:23)
 

почитайте

  Ответить  
 
 автор: Ирен   (25.07.2009 в 20:48)   письмо автору
 
   для: Valick   (25.07.2009 в 19:32)
 

Читать всё не стала. Только увидела как ктото пытается защетить Попова. Ну мне может и далеко до него. Может он и неплохой курс создал. у меня просто нет вариантов сравнить. Но заморочек у него куча. И суть даже не в написании кода. Мне просто иногда нужно посмотреть всю страницу где он пишет код. но увы приходится бегунком пользоваться чего я не люблю.

Да и главное мой код написан правильно. Хотя кто то пытался про do while чего то там сказать. Но всё писалось по Попову. И как ни странно но правильно.
Просто попалась карявая БД . после переустановки всё пошло на ура

  Ответить  
 
 автор: Valick   (25.07.2009 в 20:51)   письмо автору
 
   для: Ирен   (25.07.2009 в 20:48)
 

Хотя кто то пытался про do while чего то там сказать.
do while - там быть не должно

  Ответить  
 
 автор: Ирен   (25.07.2009 в 21:55)   письмо автору
 
   для: Valick   (25.07.2009 в 20:51)
 

Картина Репина "Приплыли". Давайте вы не будете говорить что должно быть а что нет
Евгений Попов сам лично сказал что они обязательно должны быть

  Ответить  
 
 автор: bab-nike   (21.08.2009 в 02:30)   письмо автору
 
   для: Ирен   (25.07.2009 в 15:05)
 

ошибка в использовании двойных и одинарных запятых, а точнее в место
printf ("<table align='center' class='kosmetika'>
<tr><td class='kosmetika_title'>%s</td></tr>
<tr><td>&nbsp;</td></tr>
</table>", $myrow["title"])

надо
printf ("<table align='center' class='kosmetika'>
<tr><td class='kosmetika_title'>%s</td></tr>
<tr><td>&nbsp;</td></tr>
</table>', $myrow['title']")

  Ответить  
 
 автор: heed   (22.08.2009 в 00:55)   письмо автору
 
   для: bab-nike   (21.08.2009 в 02:30)
 

>>>>
printf ("<table align='center' class='kosmetika'>
<tr><td class='kosmetika_title'>%s</td></tr>
<tr><td>&nbsp;</td></tr>
</table>", $myrow["title"])

небыло ошибки
$myrow["title"] это второй параметр функции printf()

  Ответить  
 
 автор: bab-nike   (21.08.2009 в 02:40)   письмо автору
 
   для: Ирен   (25.07.2009 в 15:05)
 

а вообще грамотно было бы написать вот так.

<?php
...
do { 
?>
<table align='center' class='kosmetika'>
<tr>
<td class='kosmetika_title'><?php echo $myrow['title'?></td>
</tr>
<tr><td>&nbsp;</td>
</tr>
</table>
<?php
while (
$myrow mysql_fetch_array($result));
?>

  Ответить  
 
 автор: Valick   (22.08.2009 в 01:00)   письмо автору
 
   для: bab-nike   (21.08.2009 в 02:40)
 

do {} while - тут не место

  Ответить  
 
 автор: heed   (22.08.2009 в 01:01)   письмо автору
 
   для: bab-nike   (21.08.2009 в 02:40)
 

впринципе пооптимальнее
, но кто как привыкает делать.

Лично я стараюсь не делать в html-тегах апострофов
,в xhtml это недопустимо
и тоже в строковых переменных также как в $myrow['title'] предпочитаю апострофы,
ибо там нечего интерпритировать, и проще не запутаться если там масса разных символов

//upd

>do {} while - тут не место

всётаки неплохо, что начинающих сразу знакомят с do {} while :)
самый редкоиспользуемый цикл , и не везде с ним можно ознакомиться
, если знакомят с ошибками , то на них и учатся ))

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

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