[PHP] Новичкам: задаем вопросы

Discussion in 'PHP' started by Kaimi, 7 May 2015.

  1. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    811
    Reputations:
    231
    _________________________
  2. hpol

    hpol Elder - Старейшина

    Joined:
    11 Dec 2013
    Messages:
    62
    Likes Received:
    16
    Reputations:
    15
    Есть конструкция if и else , как сделать так чтобы else вывелся не сразу после выполнения условия , а через 5 минут.
     
  3. wkar

    wkar Elder - Старейшина

    Joined:
    18 Oct 2009
    Messages:
    211
    Likes Received:
    66
    Reputations:
    34
    sleep(300)
     
    Aleya and (deleted member) like this.
  4. InfectedM

    InfectedM Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    Нужно скачать страничку по ссылке, которую я получаю из другой ссылки.
    Делаю так:

    PHP:
    $parse_url file_get_contents('http://test1.ru/777/server.php?parse_url=http://test1.ru/777/index.php');
    echo(
    $parse_url); // возвращает ссылку текст: http://ya.ru
    $content =  file_get_contents("$parse_url");//  пытаюсь скачать страничку  http://ya.ru
     
    echo($content);
    Но возвращает ошибку:
    Warning: file_get_contents( http://ya.ru ) [function.file-get-contents]: failed to open stream: Invalid argument in G:\OpenServer\domains\test1.ru\777\index.php on line 12

    подскажите плиз как быть
     
  5. wkar

    wkar Elder - Старейшина

    Joined:
    18 Oct 2009
    Messages:
    211
    Likes Received:
    66
    Reputations:
    34
    trim($parse_url);
     
  6. InfectedM

    InfectedM Elder - Старейшина

    Joined:
    4 Nov 2007
    Messages:
    155
    Likes Received:
    12
    Reputations:
    0
    trim($parse_url); не помогло (((
    такая же ошибка
     
  7. wkar

    wkar Elder - Старейшина

    Joined:
    18 Oct 2009
    Messages:
    211
    Likes Received:
    66
    Reputations:
    34
    попробуй без кавичек file_get_contents($parse_url)
    Какая версия пхв?
    и var_dump($parse_url);
     
    #7 wkar, 4 Jun 2015
    Last edited: 4 Jun 2015
  8. Asfero

    Asfero New Member

    Joined:
    16 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Добрый день, подскажите пожалуйста.

    Вывожу данные из БД, циклом while при помощи foreach. Вот таким кодом:

    PHP:
    <?php
    //Запрос к БД table_products
    $result mysqli_query($link'SELECT * FROM table_products');

    //Вывод товаров циклом while
    while ($row mysqli_fetch_assoc($result)) {
    foreach (
    $row as $key => $value) {
    $image 'uploads_images/'.$row['image'];
    $title $row['title'];
    $price $row['prise'];
    $mini_features $row["mini_features"];
    }
    }

    echo 
    $title;
    echo 
    $prise;
    echo 
    $mini_features;
    ?>
    И выводится только последняя запись в БД, а не все записи которые в БД.
    Подскажите как вывести все записи?

    з.ы. Желательно с комментариями что-бы не просто узнал решение, а понял как это работает. Спасибо за помощь.
     
  9. crystalbit

    crystalbit Elder - Старейшина

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    У тебя вывод уже после того, как цикл прошёл. То есть переменная менялась много раз за время цикла, и выводишь ты то, что получилось за последнее изменение.

    Просто блок с echo помести до закрытия фигурных скобок.

    И мне кажется, у тебя цикл foreach лишний.

    По идее так:
    PHP:
    <?php
    //Запрос к БД table_products
    $result mysqli_query($link'SELECT * FROM table_products');

    //Вывод товаров циклом while
    while ($row mysqli_fetch_assoc($result)) {
    $image 'uploads_images/'.$row['image'];
    $title $row['title'];
    $price $row['prise'];
    $mini_features $row["mini_features"];
    echo 
    $title "\n";
    echo 
    $prise"\n";
    echo 
    $mini_features"\n\n";
    }
    ?>
     
  10. Asfero

    Asfero New Member

    Joined:
    16 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Понял, спасибо.

    Хочу поместить echo $title в html код, но не хочу html писать в php. Приходится разрывать while, писать html разметку, а после html тогда прописывать endwhile;.

    Мне такой салат не очень нравится и хочу вывести php код в отдельный файл, и потом его подключать уже непосредственно в html при помощи include. Для этого и попробовал добавить в while foreach.

    Если подскажите чтиво для создания такого способа буду премного благодарен.
     
  11. crystalbit

    crystalbit Elder - Старейшина

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    PHP:
    <?php
    //Запрос к БД table_products
    $result mysqli_query($link'SELECT * FROM table_products');

    //Вывод товаров циклом while
    while ($row mysqli_fetch_assoc($result)) {
    $image 'uploads_images/'.$row['image'];
    $title $row['title'];
    $price $row['prise'];
    $mini_features $row["mini_features"];
    ?>
    Тайтл: <?=$title ?><br/>
    Зэ прайс: <?=$price ?><br/>
    Мини-фичи: <?=$mini_features ?><br/>
    <?php
    }
    ?>
    Должно сработать
     
    Asfero likes this.
  12. Asfero

    Asfero New Member

    Joined:
    16 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0

    Именно такой способ я в данный момент и использую, а хочу так:

    PHP:
    while ($row mysqli_fetch_assoc($result)) {
            
    $image 'uploads_images/'.$row['image'];
            
    $title $row['title'];
            
    $price $row['price'];
            
    $mini_features $row["mini_features"];
            }
    HTML:
    <?php include='путь к файлу с циклом while' ?>
    <p>Название <?=$title?></p>
    <p>Цена <?=$price?></p>
    <p>Характеристики <?=$mini_features?></p>
    
     
  13. crystalbit

    crystalbit Elder - Старейшина

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    Как не очень правильный вариант: можно в инклуженном файле создавать массив всех строк с помощью того же while или mysqli_fetch_all.
    А после инклуда (в основном скрипте) – другой while, выводящий уже из этого массива. Тогда мы исключим работу с базой в коде основного файла. Но это ли требуется?
     
    Asfero likes this.
  14. Asfero

    Asfero New Member

    Joined:
    16 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Только учусь php поэтому и интересуюсь разными методами, и решением интересующих вопросов.

    Смысла не вижу в том что-бы подключать include и в основном еще один while выводить, проще тогда сразу вывести while в основном.

    Спасибо за помощь, пойду лучше читать книги с мануалами.
     
  15. Asfero

    Asfero New Member

    Joined:
    16 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0
    Ребят, подскажите как можно упростить данный код?

    HTML:
    <form action="zagadki.php" method="post">
            <p>Крыльями машет, а улететь не может.</p>
            <input type="text" name="o1"><br>
            <p>Висит груша, нельзя скушать.</p>
            <input type="text" name="o2"><br>
            <p>Весь день за мной шагала, а в темноте пропала.</p>
            <input type="text" name="o3"><br>
            <input type="submit" value="Проверить">
        </form>
    
    
    PHP:
    <?php
            $otgadki 
    0;

            
    $z1 "мельница";
            
    $o1 $_POST['o1'];

            if (
    $z1 == $o1) {
                
    $otgadki++;
            }

            
    $z2 "лампочка";
            
    $o2 $_POST['o2'];

            if (
    $z2 == $o2) {
                
    $otgadki++;
            }

            
    $z3 "тень";
            
    $o3 $_POST['o3'];

            if (
    $z3 == $o3) {
                
    $otgadki++;
            }

            echo 
    "Правильных ответов $otgadki";
        
    ?>
     
  16. b3

    b3 Banned

    Joined:
    5 Dec 2004
    Messages:
    2,177
    Likes Received:
    1,156
    Reputations:
    202
    Он и так проще не куда, сложного в нем ничего. Единственное что можно сократить на создании ненужных переменных и ненужных фигурных скобках в одно строчных условиях.

    Code:
    <?php
    $otgadki = 0;
    
    if($_POST['o2'] == "лампочка")
    $otgadki++;
    
    if($_POST['o1'] == "мельница")
    $otgadki++;
    
    if($_POST['o3'] == "тень")
    $otgadki++;
    
    $otgadki++;
    ?>
     
  17. killermaker

    killermaker New Member

    Joined:
    26 Nov 2011
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Code:
    <?php
    $otgadki = 0;
    
    if(isset($_POST['o2']) && $_POST['o2'] == "лампочка")
    $otgadki++;
    
    if(isset($_POST['o1']) && $_POST['o1'] == "мельница")
    $otgadki++;
    
    if(isset($_POST['o3']) && $_POST['o3'] == "тень")
    $otgadki++;
    
    $otgadki++;
    ?>
    
     
  18. Asfero

    Asfero New Member

    Joined:
    16 Dec 2013
    Messages:
    6
    Likes Received:
    0
    Reputations:
    0

    Спасибо, код то простой, а спросил потому что стало интересно как его можно упростить, что-бы было меньше писанины.
    Совсем не подумал про запись $_POST в условие if.
     
  19. crystalbit

    crystalbit Elder - Старейшина

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    Пыщь
    PHP:
    $otgadki 0;
    // мб код какой ещё. а если нет, то на следующей строке вместо += можно просто =
    // тогда вообще всё в одну строку =-p
    $otgadki+=(($_POST['o1'] == "лампочка")?1:0) + (($_POST['o2'] == "мельница")?1:0) + (($_POST['o3'] == "тень")?1:0);
    Есть ещё второй вариант: ($_POST['o2'] == "...") это значения булевого типа, можно приводить их к int (например, (int)($_POST['o2'] == "лампочка")) и просто складывать. Тогда тоже в одну строку получится.
    PHP:
    $otgadki 0;
    // мб код какой ещё. а если нет, то на следующей строке вместо += можно просто =
    // тогда вообще всё в одну строку =-p
    $otgadki+=(int)($_POST['o1'] == "лампочка") + (int)($_POST['o2'] == "мельница") + (int)($_POST['o3'] == "тень");
    Вообще это способы сократить код, но они вряд ли его упрощают, т.к. не делают проще читаемым
     
    #19 crystalbit, 25 Jun 2015
    Last edited: 25 Jun 2015
  20. САНЕК ДОБРЯК

    Joined:
    1 Jun 2015
    Messages:
    1
    Likes Received:
    0
    Reputations:
    0
    ребят скажите хочу освоиться в данной нише с чего начать стоит? что почитать?