[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
    Продолжение темы:
    https://forum.antichat.ru/threads/360690/
     
    _________________________
    1. hpol

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

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

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

        Joined:
        18 Oct 2009
        Messages:
        211
        Likes Received:
        67
        Reputations:
        34
        sleep(300)
         
        Aleya and (deleted member) like this.
        1. 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

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

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

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

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

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

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

                Joined:
                18 Oct 2009
                Messages:
                211
                Likes Received:
                67
                Reputations:
                34
                попробуй без кавичек file_get_contents($parse_url)
                Какая версия пхв?
                и var_dump($parse_url);
                 
                #7 wkar, 4 Jun 2015
                Last edited: 4 Jun 2015
                1. 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;
                  ?>
                  И выводится только последняя запись в БД, а не все записи которые в БД.
                  Подскажите как вывести все записи?

                  з.ы. Желательно с комментариями что-бы не просто узнал решение, а понял как это работает. Спасибо за помощь.
                   
                  1. 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";
                    }
                    ?>
                     
                    1. 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.

                      Если подскажите чтиво для создания такого способа буду премного благодарен.
                       
                      1. 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.
                        1. 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>
                          
                           
                          1. crystalbit

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

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

                              Asfero New Member

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

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

                              Спасибо за помощь, пойду лучше читать книги с мануалами.
                               
                              1. 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";
                                    
                                ?>
                                 
                                1. b3

                                  b3 Banned

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

                                  Code:
                                  <?php
                                  $otgadki = 0;
                                  
                                  if($_POST['o2'] == "лампочка")
                                  $otgadki++;
                                  
                                  if($_POST['o1'] == "мельница")
                                  $otgadki++;
                                  
                                  if($_POST['o3'] == "тень")
                                  $otgadki++;
                                  
                                  $otgadki++;
                                  ?>
                                   
                                  1. 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++;
                                    ?>
                                    
                                     
                                    1. Asfero

                                      Asfero New Member

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

                                      Спасибо, код то простой, а спросил потому что стало интересно как его можно упростить, что-бы было меньше писанины.
                                      Совсем не подумал про запись $_POST в условие if.
                                       
                                      1. 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
                                        1. САНЕК ДОБРЯК

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