За последние 24 часа нас посетили 35120 программистов и 1758 роботов. Сейчас ищут 863 программиста ...

Использование функции shuffle

Тема в разделе "PHP для новичков", создана пользователем Валерий_paparazzi, 22 фев 2011.

  1. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Хочу отобразить три три случайно выбранных картинки
    Использую следующий код:
    <?php
    $pictures = array('tire.jpg','oil.jpg','spurk_plug.jpg','door.jpg','door2.jpg',
    'steering_wheel_2.jpg','thermostat.jpg','wiper_blade.jpg','gasket.jpg','brake_pad',
    'oil2.jpg','steering_wheel.jpg');
    shuffle($pictures);


    ?>
    <html>
    <head>
    <title>Автозапчасти </title>
    </head>
    <body>
    <center>
    <h1>Автозапчасти </h1>
    <table width = 100%>
    <tr>
    <?php
    for ( $i = 0; $i < 3;$i ++ )
    {
    echo '<td align = "center"><img src=\"';
    echo $pictures[$i];
    echo '"width = "100" height = "100"></td>';
    }

    ?>
    </tr>
    </table>
    </center>
    </body>
    </html>
    Вместо самих картинок выводится
    Автозапчасти

    Изображение Изображение Изображение

    Сами картинки не показываются.В чем может быть дело?(картинки находятся там же,где и сам php документ
    Заранее всем спасибо
     
  2. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    правой кнопкой ткни, и посмотри какой путь браузер видит. есть ли там картинка?
    если картинка есть, то она покажется 100% =) так что тут думать нечего.
     
  3. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Вот исходный код страницы
    </head>
    <body>
    <center>
    <h1>Автозапчасти от Боба</h1>
    <table width = 100%>
    <tr>
    <td align = "center"><img src=\ "door2.jpg"width = "100" height = "100"></td><td align = "center"><img src=\ "thermostat.jpg"width = "100" height = "100"></td><td align = "center"><img src=\ "steering_wheel_2.jpg"width = "100" height = "100"></td>

    </tr>
    </table>
    </center>
    </body>
    </html>
    Но сами картинки не отображаются.Может глюк браузера?(Оперу использую)Хотя проверял и в Google Chrome и в Explorer - та же картина
     
  4. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    слеши убери после src=
     
  5. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    Удалил,осталось:
    <?php
    $pictures = array('tire.jpg', 'oil.jpg', 'spark_plug.jpg',
    'door.jpg', 'steering_wheel.jpg',
    'thermostat.jpg', 'wiper_blade.jpg',
    'gasket.jpg', 'brake_pad.jpg');
    shuffle($pictures);

    ?>
    <html>
    <head>
    <title>Автозапчасти от Боба</title>
    </head>
    <body>
    <center>
    <h1>Автозапчасти от Боба</h1>
    <table width = 100%>
    <tr>
    <?php
    for ( $i = 0; $i < 3; $i++ )
    {
    echo '<td align="center"><img src="';
    echo $pictures[$i];
    echo '"width="100" height="100"></td>';
    }

    ?>
    </tr>
    </table>
    </center>
    </body>
    </html>
    Из всех картинок показывает только одну-tire.jpg,остальные почему то нет( (имена проверял,думал может с именем ошибка)
     
  6. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    проверяй имена и пути. У меня всё корректно отображает.
    Может быть с большой/маленькой буквы что-то написано. Или лежит не в корне, а в другом каталоге
     
  7. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    Бился над этим,потом взял исходник,который шел к книге Лары Томсон(сейчас по ней учусь).Когда заменил свои рисунки теми,что были в папке с исходником,все нормально отобразилось.Странно как-то,как может из-за картинок глючить.Я в недоумении...
    Ладно,спасибо всем за помощь
     
  8. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Валерий_paparazzi Думаю проблема была в именах. Возможно кодировки разные.
     
  9. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    Кодировка в обоих документах была ANSI,насчет имен - проверял несколько раз.Прям чудеса какие - то)
    Даже полностью заменял свой код на тот,что с примера был - все равно,пока картинки не поменял,отображалась только одна, остальные почему то не хотели...
     
  10. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Валерий_paparazzi В чудеса не верю )))
     
  11. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    Может винду переставить?)Или из-за нее такого быть не может?
     
  12. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    не может))) Ты лучше такую штуку запусти -
    PHP:
    1. <?php
    2. $dir = "/tmp/";
    3.  
    4. // Открыть заведомо существующий каталог и начать считывать его содержимое
    5. if (is_dir($dir)) {
    6.    if ($dh = opendir($dir)) {
    7.        while (($file = readdir($dh)) !== false) {
    8.            print "Файл: $file : тип: " . filetype($dir . $file) . "\n";
    9.        }
    10.        closedir($dh);
    11.    }
    12. }
    13. ?>
    пройдись по каталогу (задается в переменной $dir) и посмотри как у тебя php воспринимает имена файлов. И сравни с тем - какие имена файлов ты в массиве записываешь
     
  13. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    В папке D:\Files два ткстшника - orders.txt и orders2.txt

    <?php
    $dir = "D:/Files/";

    // Открыть заведомо существующий каталог и начать считывать его содержимое
    if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
    print "Файл: $file : тип: " . filetype($dir . $file) . "\n";
    }
    closedir($dh);
    }
    }
    ?>
    Результат:
    Файл: . : тип: dir Файл: .. : тип: dir Файл: orders.txt : тип: file Файл: orders2.txt : тип: file
    Какая - то фигня, или так и должно быть?
     
  14. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    да, всё верно.
    Ну так ты что - .txt вместо картинок пытался в теге <img> вывести? )))
     
  15. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    нет,конечно)))В корневом каталоге лежали картинки и остальные пхп файлы.
    Потом кинул все в отдельную папку,все равно ниче не отобразилось)
    Вот проверил,используя настоящую папку:
    <?php
    $dir = "C:/www/tm/pictures2/";

    // Открыть заведомо существующий каталог и начать считывать его содержимое
    if (is_dir($dir)) {
    if ($dh = opendir($dir)) {
    while (($file = readdir($dh)) !== false) {
    print "Файл: $file : тип: " . filetype($dir . $file) . "\n";
    }
    closedir($dh);
    }
    }
    ?>

    Вывело:
    Файл: . : тип: dir Файл: .. : тип: dir Файл: bobs_front_page.php : тип: file Файл: brake_pad.jpeg : тип: file Файл: brake_pad.jpg : тип: file Файл: door.jpeg : тип: file Файл: door.jpg : тип: file Файл: gasket.jpeg : тип: file Файл: gasket.jpg : тип: file Файл: oil.jpeg : тип: file Файл: oil.jpg : тип: file Файл: spark_plug.jpeg : тип: file Файл: spark_plug.jpg : тип: file Файл: steering_wheel.jpeg : тип: file Файл: steering_wheel.jpg : тип: file Файл: thermostat.jpeg : тип: file Файл: thermostat.jpg : тип: file Файл: tire.jpg : тип: file Файл: wiper_blade.jpeg : тип: file Файл: wiper_blade.jpg : тип: file

    Может в этом проблемма и заключалась?
    Опа,поставил везде jpeg и картинки отобразились
    Значит,проблема решена,что радует :) Всем еще раз спасибо!!!
     
  16. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    Валерий_paparazzi
    Дык а я говорю что - вместо отображения - использую эту функцию и посмотри как php имена твоих картинок воспринимает
     
  17. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    Спасибо еше раз.Кстати,можешь обьяснить эту строку:
    while (($file = readdir($dh)) !== false)
     
  18. tommyangelo

    tommyangelo Старожил

    С нами с:
    6 дек 2009
    Сообщения:
    2.549
    Симпатии:
    0
    Адрес:
    Мариуполь
    http://ua.php.net/manual/en/function.readdir.php

    Там все ответы )))
    по простому - проход по папке и чтение информации о каждом файле в переменную $file. Когда файлов не останется (вернется false) - выходим из цикла
     
  19. Валерий_paparazzi

    Валерий_paparazzi Активный пользователь

    С нами с:
    11 фев 2011
    Сообщения:
    49
    Симпатии:
    0
    Адрес:
    Украина,Одесса
    tommyangelo
    Ок,да мне и по простому понятно)