Задавайте вопросы, мы ответим
Вы не зашли.
Простите что отвлекаю своим, пожалуй, по сути глупым вопросом, но для меня это очень критично.
Пишу второй сайт за свою историю (хвала небесам), но сейчас застряла в самом начале. Делаю пробную страницу, так сказать вспомнить старое, и не удаётся извлечь данные.
Умоляю, подскажите в чём тут дело и как исправить!
Вот код моей странички(пробной):
<?php
include ("db.php");
$result =mysql_query("SELECT id,imya,summa FROM perwaya WHERE id='1'",$db);
$myrow = mysql_fetch_array($result);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
<html>
<head>
<link href="style.css" type="text/css" rel="stylesheet">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1251" />
</head>
<body>
<table width="100%" border="1">
<tr>
<td colspan="2">Здесь будет шапка</td>
</tr>
<tr>
<td>Главное меню</td>
<td><p>Весь текст и тд</p>
<p> </p>
<table width="40%" border="1" align="center">
<?php
$result = mysql_query ("SELECT id,imya,summa FROM perwaya",$db);
$myrow = mysql_fetch_array ($result);
do {
printf("
<tr>
<td>%s</td>
<td>%s</td>
<td>%s</td>
</tr>
",$myrow['id'],$myrow['imya'],$myrow['summa']);
}
while ($myrow = mysql_fetch_array ($result));
?></table>
</td>
</tr>
<tr>
<td colspan="2">Нижняя шапка</td>
</tr>
</table>
</body>
</html>
И код файла db.php
<?php
$db = mysql_connect ("localhost","php","1234");
mysql_select_db("proba",$db);
?>
При всём этом я установила Денвер на диск D (может этого нельзя делать?), виртуальный диск создан, в нём я храню все файлы будущего сайта. Через http://localhost/Tools/phpMyAdmin/ создала уже базу данных, она называется proba, в ней единственная таблица perwaya. В привилегиях создан пользователь с именем php и паролем 1234.
Уже сломала голову, но никак не могу понять почему данные у меня не извлекаются, хоть такими же конструкциями (кодом) я пользовалась в прошлом и работало.
Помогите пожалуйста кто чем может!!!
Отредактированно Blondy (20.03.2010 09:12:46)
Неактивен
> При всём этом я установила Денвер на диск D
Можно, почему ж нельзя...
Давайте по-порядку :-)
1) Проверить, подключились ли вы к базе данных - нормально ли прошло подключение
$link = mysql_connect("localhost", "php", "1234")
or die("Could not connect: " . mysql_error());
В случае неподключения что-нибудь оно да напишет :-))).
Между прочим, не забывайте в конце скрипта отключаться от mysql функцией mysql_close.
2) Допустим, что подключение прошло нормально.
Вы указали, что создали таблицу perwaya, а вы внесли туда данные? Пару строчек, например. Если нет, так внесите.
3) Допустим внесли данные. Но вы не привели код создания таблицы и трудно сказать, корректен ли запрос - приведите код создания таблицы.
4) Если запрос корректен, то сразу же попробуем данные получить...
Попробуйте после каждой инструкции
$myrow = mysql_fetch_array($result);
написать
print "<pre>"; print_r($myrow); print "</pre>";
И пронаблюдайте, где он вывел данные, где нет.
Результаты отпишите сюда .
Неактивен
Огромное спасибо что откликнулись!
История исправлений была печальна и, похоже, что я становлюсь безнадёжной, ловля себя на мыслях что делаю что-то явно не то, но непонятно что не то)
1- Подключение прошло на сколько я смогла понять, т.к ничего не выдал- чисто и даже вселяет надежду.
2, 3- Таблица верная, данные там есть именно две строчки для пробы. Таблицу саму создавала через http://localhost/Tools/phpMyAdmin/
4- вот тут я столкнулась с проблемой, скорее всего в этом виноват мой мозг.
Я вставила данную строчку (print "<pre>"; print_r($myrow); print "</pre>"; ) в самое начало своего скрипта, где идёт соединение с базой- там появились вот эти неполадки, отображающиеся вверху моей таблички:
"; print_r($myrow); print ""; $link = mysql_connect("localhost", "php", "1234") or die ("Could not connect: " . mysql_error()); mysql_close; ?>
так же вставила ниже в код, где мне надо извлекать данные в табличку и вышло вот это:
"; print_r($myrow); print ""; do { printf(" ",$myrow['id'],$myrow['imya'],$myrow['summa']); } while ($myrow = mysql_fetch_array ($result)); ?>
Надеюсь я хотя бы правильно это делала)
Отредактированно Blondy (21.03.2010 10:51:50)
Неактивен
функцию mysql_close нужно вызывать не сразу после подключения к БД, а в конце вашего скрипта :-).
После подключения к бд нет смысла писать print "<pre>"; print_r($myrow); print "</pre>"; - эта инструкция для построчного вывода массива.
Проверил я ваш код - у меня сработал, вывелось содержимое таблички perwaya.
Так что будем еще раз по шагам.
1) Не имею под рукой phpmyadmin, чтобы проверить, можно ли такое делать в принципе, но попробуйте в окне запросов sql phpmyadmin ввести запрос "show create table perwaya", если будет осмысленный результат, пришлите его сюда.
2) в том же окне введите select * from perwaya и тоже сюда пришлите.
Попробуйте мой скрипт, который я привожу ниже - примерно то же, что и у вас, но выкинут html и максимально диагностирована работа с mysql. запустите его и пришлите результат сюда. Для теста я использовал вот такую таблицу perwaya
CREATE TABLE `perwaya` (
`id` int(11) DEFAULT NULL,
`imya` varchar(255) DEFAULT NULL,
`summa` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=cp1251;
вот с такими данными
insert into perwaya values(1,'Vasya',200),(3,'Petya',400);
Скрипт:
<?php
ini_set('display_errors', '1'); // Максимальная диагностика
error_reporting(E_ALL); // и вся на экран
$link = mysql_connect ("localhost","php","1234");
if (FALSE==$link) // Не прошло соединение с базой
{
print "Could not connect: " . mysql_error();
die;
}
print "Пoдключение к серверу mysql прошло успешно, идентификатор соединения - ".$link."<br /><br />";
if (FALSE==mysql_select_db('proba', $link)) // Невозможно использовать выбранную БД
{
print "Could not use database `proba`".mysql_error();
mysql_close($link);
die;
}
$query = "SELECT id,imya,summa FROM perwaya WHERE id='1'";
$result = mysql_query($query,$link);
if (FALSE==$result) // не выполнился запрос
{
print "Invalid query: ".$query.", error: ".mysql_error().".";
mysql_close($link);
die;
}
if (mysql_num_rows($result)==0)
{
print "Запрос ".$query." вернул пустой результат.";
mysql_close($link);
die;
}
$myrow=mysql_fetch_array($result);
print "Попробуем вывести содержимое \$myrow";
print "<pre>"; print_r($myrow); print "</pre>";
mysql_free_result($result);
print "**************************<br />";
$query = "SELECT id,imya,summa FROM perwaya";
$result = mysql_query($query,$link);
if (FALSE==$result) // не выполнился запрос
{
print "Invalid query: ".$query.", error: ".mysql_error().".";
mysql_close($link);
die;
}
if (mysql_num_rows($result)==0)
{
print "Запрос ".$query." вернул пустой результат.";
mysql_close($link);
die;
}
while ($myrow = mysql_fetch_array ($result))
{
print "Попробуем вывести содержимое \$myrow";
print "<pre>"; print_r($myrow); print "</pre>";
}
mysql_free_result($result);
mysql_close($link);
?>
Отредактированно deadka (05.05.2010 16:46:35)
Неактивен
Огромное спасибо за терпение и помощь!!!!) Но у меня оказалась другая проблема- знакомый "наобум" открыл страницу каталога моего сайта, а не конкретно страницу- и всё открылось и вывелось великолепно.
Честно говоря никто не понял почему не было до этого но теперь всё в порядке.
Огромное спасибо вам за терпение и время, потраченное на меня!!)
Неактивен