За последние 24 часа нас посетили 54182 программиста и 1720 роботов. Сейчас ищут 1086 программистов ...

Не работает функция

Тема в разделе "PHP для новичков", создана пользователем greenzlat, 6 авг 2011.

  1. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Написал функцию подсчета песен в таблице.
    PHP:
    1.  
    2. <?php
    3. function count_pesni_db ()
    4.  {
    5.     $sum_pesni = "SELECT COUNT(*) FROM $pesni WHERE `kod`=1";
    6.     $total_pesni = mysql_query($sum_pesni);
    7.     $f_pesn = mysql_result($total_pesni, 0);
    8.     $total_songs = $f_pesn;
    9.     echo $total_songs;
    10.  }
    11. ?>
    12.  
    В файле в нужном месте вызываю ее так:
    PHP:
    1. <?php count_pesni_db();?>
    Выдает ошибку:
    Код (Text):
    1. Warning: mysql_result() expects parameter 1 to be resource, boolean given in Z:\home\test.off\www\functions.php on line 30
    30 строка:
    Код (Text):
    1.     $f_pesn = mysql_result($total_pesni, 0);
    Но если я весь запрос в файл подставлю, то есть все что в функции, то нормально все считает.
     
  2. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    ты забыл передать переменную $pesni в функцию
     
  3. vikrorpert

    vikrorpert Активный пользователь

    С нами с:
    13 окт 2010
    Сообщения:
    984
    Симпатии:
    10
    SELECT COUNT(*) FROM $pesni WHERE `kod`=1 тут ошибка надо явно указать имя таблицы
     
  4. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    что то мне это все напоминает про возможные глобальные переменные которые равны on, ибо $pesni-ям неоткуда взятся :)
     
  5. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    $pesni объявляется у меня в файл config, который подключается include_once выше вызова этой функции. В конфиге прописано: $pesni=pesni;
     
  6. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    greenzlat, чертов [ beep ] [ beep ], [ beep ] в жопу! ты читать умеешь?
    в функцию добавь параметр $pesni или на худой конец сделай global $pesni.
     
  7. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    еще один шедевр. PHP конечно написан для идиотов, чтобы им было проще выходить в свет со своими "шидеврами", поэтому такая конструкция даже работает, с выдачей варнинга, но кто их читает эти варнинги! если будет заябывать - можно @ поставить и будет все ок.

    правильно писать
    PHP:
    1.  
    2. $pesni='pesni'; // это блеять строка! она окружается одинарными или двойными кавычками
    3.  
     
  8. artoodetoo

    artoodetoo Суперстар
    Команда форума Модератор

    С нами с:
    11 июн 2010
    Сообщения:
    11.128
    Симпатии:
    1.248
    Адрес:
    там-сям
    пойду забаню себя
     
  9. rainarr

    rainarr Активный пользователь

    С нами с:
    20 ноя 2010
    Сообщения:
    276
    Симпатии:
    0
    а вдруг там константа? =)
     
  10. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    В конфиге прописано с "":
    Код (Text):
    1. $pesni = "pesni"; //имя таблицы с песнями
    У меня же это и есть константа.
     
  11. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Если в конфиге прописано именно так, то это не константа, а обычная переменная. Внутри функции она не видна. Т.е.
    PHP:
    1. <?php
    2. $pesni = 'pesni';
    3. // Здесь переменная $pesni определена, её значение будет строка pesni
    4. function count_pesni_db() {
    5.     // Здесь переменная $pesni НЕ определена, её значение будет null
    6.     $sum_pesni = "SELECT COUNT(*) FROM $pesni WHERE `kod`=1";
    7.     // В результате получится такой запрос: SELECT COUNT(*) FROM  WHERE `kod`=1
    8.     // ...
    9. }
    10. // Здесь переменная $pesni снова определена, её значение будет строка pesni
    11. ?>
     
  12. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    sobachnik, оффтоп: а как вы делаете подсветку синтаксиса кода? какой это тег?
     
  13. sobachnik

    sobachnik Старожил

    С нами с:
    20 апр 2007
    Сообщения:
    3.380
    Симпатии:
    13
    Адрес:
    Дмитров, МО
    Тег PHP.
    Чтобы работала подсветка, надо вначале кода (который внутри тега PHP) написать "<?php"
     
  14. krow7

    krow7 Активный пользователь

    С нами с:
    12 авг 2009
    Сообщения:
    398
    Симпатии:
    0
    Адрес:
    из Азии
    sobachnik, спасибо)
     
  15. greenzlat

    greenzlat Активный пользователь

    С нами с:
    27 апр 2008
    Сообщения:
    255
    Симпатии:
    0
    Спасибо, теперь понял
     
  16. Amperandus

    Amperandus Активный пользователь

    С нами с:
    13 мар 2009
    Сообщения:
    226
    Симпатии:
    11
    на будущее распечатывайте запрос в котором возникает ошибка в вашем примере:

    PHP:
    1.  
    2. <?php
    3. echo $sum_pesni;
    4. ?>
    5.