Скрипт голосования за фото

Тема в разделе "PHP", создана пользователем barabula, 26 сен 2011.

Модераторы: latteo
  1. barabula

    barabula

    Регистр.:
    21 май 2009
    Сообщения:
    470
    Симпатии:
    77
    Не пойму в чём ошибка, подскажите кто шарит плизз:

    Код:
    Warning: implode() [function.implode]: Invalid arguments passed in /home/***/domains/***/public_html/test1/install_images.php on line 17
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1
    Вот что входит в файл install_images.php
    PHP:
    <?php

    include('mysql.php');

    if (
    $handle opendir('images')) {

        
    /* This is the correct way to loop over the directory. */
        
    while (false !== ($file readdir($handle))) {
            if(
    $file!='.' && $file!='..') {
                
    $images[] = "('".$file."')";
            }
        }

        
    closedir($handle);
    }

    $query "INSERT INTO images (filename) VALUES ".implode(','$images)." ";
    if (!
    mysql_query($query)) {
        print 
    mysql_error();
    }
    else {
        print 
    "finished installing your images!";
    }


    ?>

    Вот какая таблица находится в базе:
    Код:
    CREATE TABLE IF NOT EXISTS `images` (
    			`image_id` bigint(20) unsigned NOT NULL auto_increment,
    			`filename` varchar(255) NOT NULL,
    			`score` int(10) unsigned NOT NULL default '1500',
    			`wins` int(10) unsigned NOT NULL default '0',
    			`losses` int(10) unsigned NOT NULL default '0',
    			PRIMARY KEY  (`image_id`)
    		) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
    Ну и конечно же там где идёт инклуд к БД, все данные введены верно.
     
  2. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    а вы попробуйте перед запросом ($query = ...)
    поставить сначала
    PHP:
    print ".implode(',', $images).";
    а затем
    PHP:
    print implode(','$images);
    и сами увидите...
     
  3. SiZE

    SiZE Постоялец

    Регистр.:
    31 янв 2010
    Сообщения:
    51
    Симпатии:
    10
    У вас не выполняется условие $handle = opendir('images'), а т.к. до этого $images нигде объявлена не была, в частности пустым массивом, соответственно функция implode не может принять ее. Дорабатываем
    PHP:
    <?php
    require_once 'mysql.php';

    $images = array();

    if ( 
    $handle opendir('images') ) {
        while ( 
    false !== ( $file readdir$handle ) ) ) {
            if ( 
    is_file$file ) ) {
                
    $images[] = $file;
            }
        }
        
    closedir$handle );
    }

    if ( 
    sizeof$images ) ) {
        
    $sql "INSERT INTO images (filename) VALUES (".implode'),('$images ).")";
        if ( !
    mysql_query$sql ) ) {
            echo 
    'Error occured while loading images data.<br />'.mysql_error();
            exit;
        }
    }

    echo 
    'Loading images data complete.'
     
    barabula нравится это.
  4. barabula

    barabula

    Регистр.:
    21 май 2009
    Сообщения:
    470
    Симпатии:
    77
    Помогло, осталась теперь только вот эта ошибка:
    Warning: opendir(images) [function.opendir]: failed to open dir: No such file or directory in /home/***/domains/***/public_html/test1/install_images.php on line 6
    не подскажешь, почему оно не видит директорию? БД создана...
     
  5. Drum41k08

    Drum41k08 Hosting - it's my

    Регистр.:
    15 дек 2008
    Сообщения:
    307
    Симпатии:
    28
    Права доступа проверьте.
     
  6. barabula

    barabula

    Регистр.:
    21 май 2009
    Сообщения:
    470
    Симпатии:
    77
    На все файлы этого скрипта стоят права 777
     
  7. reketir

    reketir Писатель

    Регистр.:
    27 ноя 2009
    Сообщения:
    6
    Симпатии:
    1
    не на файле , а на папку