За последние 24 часа нас посетили 59362 программиста и 1772 робота. Сейчас ищут 1288 программистов ...

Вытаскивание данных из БД через цикл

Тема в разделе "PHP для новичков", создана пользователем Golovastik, 14 июл 2010.

  1. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    По аналогии для примера попробовал первый раз вытащить из БД данные через цикл, где-то увидел как в цикле выводятся.
    Вот у меня есть такая БД.
    Код (Text):
    1.  
    2.  id      name            lastname                  dol
    3.   1,     Алексей         Алексеев               Директор
    4.   2,     Иван              Иванов               Заместитель
    5.   3,     Александр      Александров      Программист
    Такой код написал:
    Код (Text):
    1.  
    2. <?php
    3. $db = mysql_connect("localhost","alex","12345");
    4. mysql_select_db("first_bd", $db);
    5.  
    6. $result = mysql_query("SELECT  * FROM firma", $db);
    7. $myrow = mysql_fetch_array($result);
    8.  
    9. do{
    10. echo "Сотрудник № - ".$myrow['id']."<br>";
    11. echo $myrow['name']."<br>";
    12. echo $myrow['lastname']."<br>";
    13. echo $myrow['dol']."<br>";
    14. }   while($myrow = mysql_fetch_array($result));
    15. ?>
    1)Не могу понять каким образом работает вот это условие:
    Код (Text):
    1.  while($myrow = mysql_fetch_array($result));
    2. Объясните пож.
    2) Скажите ,каим образом переменная $myrow превращается в массив, после этой строки?
    Код (Text):
    1.  
    2. $myrow = mysql_fetch_array($result);
    Заранее благодарю за ответ.
     
  2. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    $db = mysql_connect("localhost","alex","12345");
    mysql_select_db("first_bd", $db);

    $result = mysql_query("SELECT * FROM firma", $db);

    while($myrow = mysql_fetch_array($result))
    {
    echo "Сотрудник № - ".$myrow['id']."<br>";
    echo $myrow['name']."<br>";
    echo $myrow['lastname']."<br>";
    echo $myrow['dol']."<br>";
    }

    П.С. влом переписывать :)
     
  3. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    Попов детектед. В помощи отказано.
     
  4. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Apple
    точняк, топик в курилку
     
  5. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Скажите после вот этой строки:
    Код (Text):
    1. $myrow = mysql_fetch_assoc($result);
    Переменная myrow содержит в себе всю строку? Если у меня таблицы состоят из 3 столбцов, значит в переменную $myrow запишется первая строка, ячейка 1(1столбец),ячейка 2 (2-ой столбец), ячека 3(3-ий столбец)?
    Все 3 ячейки запишутся?
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    новички отличаются от имбециллов тем, что могут сами проверить что получается в массиве хотя бы с помощью простейшего print_r()
     
  7. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    var_dump()!
     
  8. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    igordata
    print_r :)
     
  9. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    echo '<pre>';
    var_dump($any);
    echo '</pre>';

    :)
     
  10. Apple

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

    С нами с:
    13 янв 2007
    Сообщения:
    4.984
    Симпатии:
    2
    PHP:
    1. <?php
    2.  
    3. header("Content-type: text/plain");
    4. print_r($GLOBALS);
    5.  
    6. ?>
     
  11. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
  12. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    phpdude
    Спор ниочем) Чаще простого echo хватает, а то меряемся тут.. ))
     
  13. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    Апельсин
    мне не хватает увы, часто надо больше 1ой переменной посмотреть, 100500 ехо надоело давно уже писать
     
  14. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    echo для дебага ацтой. его выискивать среди других echo - напрягает.
     
  15. phpdude

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

    С нами с:
    9 июл 2010
    Сообщения:
    697
    Симпатии:
    0
    igordata
    вово :)
     
  16. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Попробовал написать отдельно, для експеримента ещё раз, перестало работать. У меня база данных pinokio таблица pena.

    nomer name lastname dol
    1 Иванов Александр Инженер

    Вот тренировочный код не сработал, выдал такую ошибку при заполнении формы и отправки в файл bd.php

    Код (Text):
    1.  
    2.  
    3. Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in z:\home\xai.loc\www\bd.php on line 24
    bd.php
    Код (Text):
    1.  
    2.  
    3. <?php
    4.  
    5. if(isset($_POST['im']))
    6. {
    7.   $im = $_POST['im'];
    8. }
    9.  
    10. if(isset($_POST['fam']))
    11. {
    12.   $fam = $_POST['fam'];
    13. }
    14.  
    15.  
    16. if(isset($_POST['otch']))
    17. {
    18.   $otch = $_POST['otch'];
    19. }
    20.  
    21.  
    22. $db = mysql_connect("localhost","alex","12345");
    23. mysql_select_db("pinokio",$db);
    24. $result = mysql_query("insert into pena(2,im,fam,otch) VALUES($im,$fam,$otch)",$db);
    25.  
    26. $my_result = mysql_fetch_assoc($result);
    27.  
    28. echo $my_result['im'];
    29.  
    30.  
    31. ?>
    Файл send_form.php
    Код (Text):
    1.  
    2. <html><head><title>Сайт</title>
    3. <link rel="stylesheet" type="text/css" href="stili.css">
    4. </head>
    5. <body>
    6. <form action="bd.php" method="post" name="n">
    7. <b id="oop">Введите </b> <b id="tata">имя</b><input type="text" name="im">
    8. <p id="vvv">
    9. Введите <span id="salo">фамилию  <input type="text" name="fam"></span>
    10. <br><p id="vvv">
    11. Введите <span id="xleb">должность <input type="text" name="otch" ></span>
    12. <br>
    13. <p id="vvv">
    14. <input name="knopka" type="submit" value="Записать в базу данных" >
    15. </form>
    16. </body>
    17. </html>
    stili.css
    Код (Text):
    1.  
    2. b#oop{color:#FF0000;}
    3. b#tata{padding-right:1.4cm; }
    4. span#salo{word-spacing:20px;}
    5. span#xleb{word-spacing:10px;}
    6. p#vvv{line-height:50px}
     
  17. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    открываем мануал http://php.net/mysql_query

    http://www.php.ru/manual/function.mysql-query.html
    mysql_fetch_assoc() разбирает данные после запросов типа SELECT, SHOW, DESCRIBE, EXPLAIN
    А тут INSERT запрос.
     
  18. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    $result = mysql_query("insert into pena(2,im,fam,otch) VALUES($im,$fam,$otch)",$db);
    тут ты вставляешь запись.

    $my_result = mysql_fetch_assoc($result);
    тут ты ожидаешь чтото получить из базы. А где запрос? Один запрос на вставку, еще один на то чтоб прочитать эту запись. И запрос на вставку неправильный, что такое 2? Его там быть не долно, в первых скобках указываешь в какие поля вставляешь, во вторых - что будешь вставлять.
     
  19. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    может у него поле так называется :) Кстати, это не запрещено, как для поля, так и для имени таблицы и самой БД. Вот только на извращение смахивает. Почти как кириллические названия полей
     
  20. Golovastik

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

    С нами с:
    14 июл 2010
    Сообщения:
    193
    Симпатии:
    0
    Написал так, и всё равно выдаёт ошибку:
    Код (Text):
    1. Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in z:\home\xai.loc\www\bd.php on line 26
    Код (Text):
    1.  
    2. <?php
    3.  
    4. if(isset($_POST['im']))
    5. {
    6.   $im = $_POST['im'];
    7. }
    8.  
    9. if(isset($_POST['fam']))
    10. {
    11.   $fam = $_POST['fam'];
    12. }
    13.  
    14. id,im,fam,otch - 'это название полей в базе данных.
    15. if(isset($_POST['otch']))
    16. {
    17.   $otch = $_POST['otch'];
    18. }
    19.  
    20.  
    21. $db = mysql_connect("localhost","alex","12345");
    22. mysql_select_db("pinokio",$db);
    23.    
    24.  
    25. $result = mysql_query("insert into pena(id,im,fam,otch) VALUES('',$im,$fam,$otch)");
    26.  
    27. $my_result = mysql_fetch_assoc($result);
    28.  
    29. echo $my_result['im'];
    30.  
    31. ?>
     
  21. igordata

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

    С нами с:
    18 мар 2010
    Сообщения:
    32.408
    Симпатии:
    1.768
    попробуйте работать с mysqli. может вам такой синтаксис больше понравится и ошибки пропадут =)
     
  22. 440Hz

    440Hz Старожил
    Команда форума Модератор

    С нами с:
    21 дек 2012
    Сообщения:
    8.003
    Симпатии:
    1
    Адрес:
    Оттуда
    Golovastik

    $res = mysql_query('...') or die('MySQL error: '.mysql_error());
     
  23. Апельсин

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

    С нами с:
    20 мар 2010
    Сообщения:
    3.645
    Симпатии:
    2
    Golovastik
    Та блин говорят же - 1 запрос на вставку, еще один запрос на вывод. Какого хера ты вставляешь и пытаешься сразу чтото посмотреть?

    PHP:
    1. <?php
    2. $one = mysql_query("INSERT ...");
    3. $two = mysql_query("SELECT ");
    4. $t = mysql_fetch_assoc($two);
    5. echo $t['name'];
    И поле ID само будет заполняться, просто пропускай его. ("INSERT INTO table (name, any) VALUES ("'.$name.'", "'.$any.'")")