SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 20.03.2010 09:11:00

Blondy
Участник
Зарегистрирован: 20.03.2010
Сообщений: 14

Застряла в начале

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

<?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)

Неактивен

 

#2 20.03.2010 18:11:59

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Застряла в начале

> При всём этом я установила Денвер на диск 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>";

И пронаблюдайте, где он вывел данные, где нет.

Результаты отпишите сюда smile.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#3 21.03.2010 10:51:29

Blondy
Участник
Зарегистрирован: 20.03.2010
Сообщений: 14

Re: Застряла в начале

Огромное спасибо что откликнулись!
История исправлений была печальна и, похоже, что я становлюсь безнадёжной, ловля себя на мыслях что делаю что-то явно не то, но непонятно что не то)

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)

Неактивен

 

#4 21.03.2010 12:48:45

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Застряла в начале

функцию 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)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#5 21.03.2010 17:07:04

Blondy
Участник
Зарегистрирован: 20.03.2010
Сообщений: 14

Re: Застряла в начале

Огромное спасибо за терпение и помощь!!!!) Но у меня оказалась другая проблема- знакомый "наобум" открыл страницу каталога моего сайта, а не конкретно страницу- и всё открылось и вывелось великолепно.
Честно говоря никто не понял почему не было до этого но теперь всё в порядке.
Огромное спасибо вам за терпение и время, потраченное на меня!!)

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson