singlepost

PHP_помогите! << На главную или назад  

учусь, поэтому может быть чего то недопонимаю.

<?php
$query_str="SELECT proizv.name pn, tovar.name_tov tn, tovar.type, tovar.info, tovar.price, tovar.pict FROM proizv, tovar WHERE tovar.id_proizv = proizv.id and proizv.id = ".$_GET['proizv'];
$query=mysql_query($query_str,$connect);
$query_count=mysql_num_rows($query);//Выводит ошибку в этих строках.
$query_row=mysql_fetch_assoc($query); //Выводит ошибку в этих строках.
$proizv=$query_row_['id'];
if(isset($_GET['proizv']))
{
$proizv=$_GET['proizv'];
}
for ($i=1;$i<=$query_count;$i++)
{
$query_row=mysql_fetch_assoc($query);
echo "<tr><td width='20%'>";
$img="img/".$query_row['pn']."_".$query_row['tn'].".jpg";
if(file_exists ($img))
echo '<img src="'.$img.'" width="40" height="100">';
echo "</td><td><b>Название товара:</b></br>".$query_row['tn']."<b>Тип товара:</b></br>".$query_row['tovar.type']."<b>Информация о товаре:</b></br>".$query_row['tovar.dop_info']."<b>Цена товара:</b></br>".$query_row['tovar.price']."</td></tr>";
}
?>

текст ошибки:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in X:\home\localhost\www\site01\katalog.php on line 22

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in X:\home\localhost\www\site01\katalog.php on line 23

полагаю не получается выдернуть информацию из базы данных, но в чем именно проблема ну не понимаю =(

49 ответов в теме “PHP_помогите!”

  1. 49
    Андрей Fam ответил:

    if($connect==FALSE){
    $err_array=array();
    $err_array["error"]="ERROR:".mysql_error($connect)." ".mqsql_errno($connect);
    $err_array["status"]=FALSE;
    return $err_array;
    }
    таки знаем про эти функции))

  2. 48
    Ренат Юсупов ответил:

    1. Народ нафлудивший все предыдушие две страницы, вы про
    print mysql_error(); знаете? Он вам все скажет и покажет где ошибки и че не так с запросами илибазой данных.
    2.Павел Воевода – вполне вероятно Вы скачали Денвер поставили на комп и от туда, как правильно заметил Андрей Фам, пытаетесь заупскать ваш скрипт. Поглядите папку denwer/user/mail (или как то так). Денвер никуда не посылает писаьма он их в папке сохраняет. Когда зальете на сервер – ваш скрипт начнет посылать писаьма.
    И еще, а вдруг $_POST['name'] или какой нить из них не скрипту не передадут? Че делать будите?

  3. 47
    Андрей Fam ответил:

    а где ты запускаешь этот код?

  4. 46
    Павел Воевода ответил:

    Подскажите пожалуйста с формой обратной связи. Вот код, но он почему-то не работает

    <?php
    if (isset($_POST['$name'])) {$name = $_POST['$name'];}
    if (isset($_POST['$email'])) {$email = $_POST['$email'];}
    if (isset($_POST['$message'])) {$message = $_POST['$message'];}

    $address = 'radon39@mail.ru';
    $sub = "Пожелания и предложения по работе сайта";
    $mes = $message;
    $verify = mail ($address,$sub,$mes,"Content-type:text/plain; charset = windows-1251\r\nFrom:$email");
    if ($verify == 'true')
    {
    echo "<p>Сообщение отправлено";
    }
    else
    {
    echo "<p>Сообщение не отправлено";
    }
    ?>

  5. 45
    Сергей Jensi ответил:

    Написал правильно:)) Просто не внимательно читаешь маны по SQL :)

  6. 44
    Магомедсаид Алхасов ответил:

    44 я не правильно написал, да? ))) Ну я тоже начинаюший, но ошибок в этом месте у меня ещё не было

  7. 43
    Сергей Jensi ответил:

    #41
    Что за ошибка?

    #43 :) ))))))))))

  8. 42
    Магомедсаид Алхасов ответил:

    —————-
    <?php
    $query_str="SELECT
    ——————-
    А где тут вначале команда mysql_query которая выбирает из базы данные?
    Попробуй так…

    ————-
    <?php
    $query_str = mysql_query("SELECT/* Ну и т.д. */
    ————-

  9. 41
    Катерина Дёмичева ответил:

    <?php
    if(isset($_GET['proizv']))
    {
    $proizv=$_GET['proizv'];

    $query_str="SELECT proizv.name pn, tovar.name_tov tn, tovar.type, tovar.info, tovar.price, tovar.pict FROM proizv, tovar WHERE tovar.id_proizv = proizv.id and proizv.id = ".$_GET['proizv'];
    $query=mysql_query($query_str,$connect);
    $query_count=mysql_num_rows($query);
    $query_row=mysql_fetch_assoc($query); \\удалила строку
    $proizv=$query_row['proizv.id'];\\переменную перенесле вверх в if
    $count=5;
    $query_count_tovar=mysql_num_rows($query);\\удалила
    $count_pages=ceil($query_count_tovar/$count);

    $page=1;
    if(isset($_GET['page']))
    {$page=$_GET['page'];
    }
    $lim=" LIMIT ".$count*($page-1).",".$count;

    $query_str="SELECT proizv.name pn, tovar.name_tov tn, tovar.type, tovar.info, tovar.price, tovar.pict FROM proizv, tovar WHERE tovar.id_proizv = proizv.id and proizv.id = ".$_GET['proizv'].$lim;\\GET заменила на переменную $proizv

    if(isset($_GET['proizv']))\\проверка уже сделана – удалила
    { $proizv=$_GET['proizv'];}\\проверка уже сделана – удалила

    добавлила 2 строки:
    $query_tovar=mysql_query($query_str_tovar,$connect);
    $query_count_tovar=mysql_num_rows($query_tovar);

    for ($i=1;$i<=$query_count;$i++)
    {
    $query_row=mysql_fetch_assoc($query_tovar);
    echo "<tr><td width='20%'>";
    $img="img/".$query_row['pn']."_".$query_row['tn'].".jpg";
    if(file_exists ($img))

    здесь нужно было убрать название таблиц в переменных query_row, ну и для себя сделала немного другую ссылку на картинку!

    echo '<img src="'.$img.'" width="40" height="100">';
    echo "</td><td><b>Название товара:</b></br>".$query_row['tn']."<b>Тип товара:</b></br>".$query_row['tovar.type']."<b>Информация о товаре:</b></br>".$query_row['tovar.dop_info']."<b>Цена товара:</b></br>".$query_row['tovar.price']."</td></tr>";
    }
    ?>
    в этом все мои ошибки =)

  10. 40
    Катерина Дёмичева ответил:

    Ps: файл connect остался не тронутым

  11. 39
    Андрей Fam ответил:

    а каких, если не секрет и где?

  12. 38
    Катерина Дёмичева ответил:

    всем большое спасибо! ситуация разрешилась! =) просто нужно было пару строчек поменять

  13. 37
    Андрей Fam ответил:

    resource mysql_query ( string $query [, resource $link_identifier ] )

    mysql_query() sends a unique query (multiple queries are not supported) to the currently active database on the server that's associated with the specified link_identifier .

  14. 36
    Андрей Fam ответил:

    это, а так же мой код говорит о том, что тут таки может быть "Соединение"

  15. 35
    Александр Чернов ответил:

    $connect=mysql_pconnect($server,$user,$password); //соединение с сервером
    $db = mysql_select_db($baza,$connect); //выбор базы данных

    $query_proiz=mysql_query($query_str_proiz,$db);

    В последней строке последний параметр именно выделенная БД, а не Соединение. Проверь.

  16. 34
    Катерина Дёмичева ответил:

    да пробовала, мне целесообразнее оставить как есть-несколько страниц к ней конектятся, все кроме этой работают…..
    я скорее всего что то прописать забыла

  17. 33
    Андрей Fam ответил:

    тебе целесообразней разобраться в том, как это работает, а не передирать код из книг и тогда все получится, возьми мой пример, целиком, все 3 страницы и запусти, изменив запрос, базу данных и пароль, получишь результат, изучи код, посмотри логику, посмотри что делает та или иная функция, потом напиши свой код, который бы заменил мой и после этого посмотри тот, который ты содрала, мб найдешь ошибку

  18. 32
    Катерина Дёмичева ответил:

    так, ну сейчас пойду пытаться

  19. 31
    Катерина Дёмичева ответил:

    ситуация поменялась….теперь ворнинги во всех колонках!
    полагаю в моем случае connect.php лучше не трогать, буду искать дальше ошибку….

  20. 30
    Андрей Fam ответил:

    стоооой, ты данные-то, в смысле, пароль и базу данных-то сменила?

  21. 29
    Андрей Fam ответил:

    connect.php

    <?php
    function get_connection_to_db(){
    $user="root";
    $password="pass";
    $server="localhost";
    $connect=mysql_pconnect($server, $user, $password);
    if($connect==FALSE){
    $err_array=array();
    $err_array["error"]="ERROR:".mysql_error($connect)." ".mqsql_errno($connect);
    $err_array["status"]=FALSE;
    return $err_array;
    }
    else{
    $db="test4";
    mysql_select_db($db,$connect);
    return $connect;
    }
    }
    ?>

  22. 28
    Андрей Fam ответил:

    model.php

    <?php
    include "connect.php";
    $connect=get_connection_to_db();
    if( is_array($connect) ){
    if( $connect["status"]==false ){
    echo $err_array["error"];
    }
    }
    else {
    $query="SELECT * FROM employees";
    $result=mysql_query($query, $connect);
    $count_row_at_result=mysql_num_rows($result);
    for($i=0;$i<$count_row_at_result;++$i){
    $rows=mysql_fetch_assoc($result);
    foreach($rows as $key=>$value){
    echo $key." ".$value;

    }
    echo "</br>";
    }
    }
    ?>

  23. 27
    Андрей Fam ответил:

    index.php

    <?php
    include "model.php";
    ?>

  24. 26
    Андрей Fam ответил:

    все сделал как у тебя, все работает

  25. 25
    Андрей Fam ответил:

    сейчас, дай пару минут

  26. 24
    Катерина Дёмичева ответил:

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

  27. 23
    Андрей Fam ответил:

    скинь сюда ссылки на весь твой код

  28. 22
    Катерина Дёмичева ответил:

    <table width="100%" cellspacing="20">
    <tr>
    <td width="100" valign="top"><p>
    <?php
    include("conect.php");
    $query_str_proiz="SELECT proizv.id, proizv.name, count(tovar.id) kol FROM proizv, tovar WHERE tovar.id_proizv = proizv.id GROUP BY proizv.id";
    $query_proiz=mysql_query($query_str_proiz,$connect);
    $query_count_proiz=mysql_num_rows($query_proiz);
    //mysql_data_seek($query_proiz,0);
    for ($i=1;$i<=$query_count_proiz;$i++)
    {
    $query_row_proiz=mysql_fetch_assoc($query_proiz);
    echo "<a href='?tip=6&".$query_row_proiz['name']."=".$query_row_proiz['id']."'>".$query_row_proiz['name']." (".$query_row_proiz['kol'].")</a></br>";
    }

    ?>
    </td>
    <td valign="top">
    <table border=1 width="100%">
    <?php
    $query_str="SELECT proizv.name pn, tovar.name_tov tn, tovar.type, tovar.info, tovar.price, tovar.pict FROM proizv, tovar WHERE tovar.id_proizv = proizv.id and proizv.id = ".$_GET['proizv'];
    $query=mysql_query($query_str,$connect);
    $query_count=mysql_num_rows($query);
    $query_row=mysql_fetch_assoc($query);
    $proizv=$query_row['proizv.id'];
    echo $_GET['proizv'];
    if(isset($_GET['proizv']))
    {
    $proizv=$_GET['proizv'];
    }

    for ($i=1;$i<=$query_count;$i++)
    {
    $query_row=mysql_fetch_assoc($query);
    echo "<tr><td width='20%'>";
    $img="img/".$query_row['pn']."_".$query_row['tn'].".jpg";
    if(file_exists ($img))
    echo '<img src="'.$img.'" width="40" height="100">';
    echo "</td><td><b>Название товара:</b></br>".$query_row['tn']."<b>Тип товара:</b></br>".$query_row['tovar.type']."<b>Информация о товаре:</b></br>".$query_row['tovar.dop_info']."<b>Цена товара:</b></br>".$query_row['tovar.price']."</td></tr>";
    }
    ?>

    </table></td>
    </tr>
    </table>

  29. 21
    Андрей Fam ответил:

    так, это все в одном файле?

  30. 20
    Андрей Fam ответил:

    include("conect.php"); еще код этго файла скинь

  31. 19
    Катерина Дёмичева ответил:

    да это все один файл! он инклудится в index.php с шапкой и прочим

  32. 18
    Катерина Дёмичева ответил:

    Это conect.php

    <?php
    $server="localhost";//имя сервера
    $user="root"; //имя пользователя
    $password="";//пароль
    $baza="base95"; //имя базы данных
    $connect=mysql_pconnect($server,$user,$password); //соединение с сервером
    mysql_select_db($baza,$connect); //выборбазыданных
    ?>

  33. 17
    Андрей Fam ответил:

    проверь $_GET['proizv'], что он содержит, выведи себе через echo $query целиком, до отправления запроса на соединение

  34. 16
    Андрей Fam ответил:

    и в первом запросе закрой соединение и перед выполнением второго запроса создай снова

  35. 15
    Катерина Дёмичева ответил:

    соединение закрыть mysql_data_seek?

  36. 14
    Андрей Fam ответил:

    google?

  37. 13
    Андрей Fam ответил:

    mysql_close(int $connection_id)

  38. 12
    Катерина Дёмичева ответил:

    отдельно инклудила в этот кусок рнр, результат тот же

  39. 11
    Андрей Fam ответил:

    тогда сделай запрос типа SELECT * FROM "какая-нибудь таблица" и смотри, если не выполнится, то проблема в соединении, если выполнится, то в запросе, как сделаешь, пиши и будем думать дальше

  40. 10
    Катерина Дёмичева ответил:

    запрос в sql проверяла, все работает – все выводится! С запросом все впорядке.

  41. 9
    Андрей Fam ответил:

    ну значит какой вариант остается?

  42. 8
    Катерина Дёмичева ответил:

    проблема в соединении? я вроде по аналогии все сделала
    совсем запуталась

  43. 7
    Андрей Fam ответил:

    $_GET['proizv'] возвращает например NULL

  44. 6
    Катерина Дёмичева ответил:

    конект инклудила перед этим в другом запросе

  45. 5
    Катерина Дёмичева ответил:

    без строк
    $query_count=mysql_num_rows($query);
    $query_row=mysql_fetch_assoc($query);
    ничего не выводится.
    Запрос проделанный выше этого вполне работает и выводится, как нужно. А с этим проблемы

  46. 4
    Андрей Fam ответил:

    ты точно уверена, что область видимости $connect распространяется и на этот участок кода?

  47. 3
    Марко Ставовий ответил:

    $connect = mysql_connect("localhost","root");
    mysql_select_db("db");
    db-назва твоєї бази даних

  48. 2
    Марко Ставовий ответил:

    попробуй в mysql_query без $connect

  49. 1
    Андрей Fam ответил:

    $query=mysql_query($query_str,$connect);
    $connect ты создал где?

Клуб программистов работает уже ой-ой-ой сколько, а если поточнее, то с 2007 года.