За последние 24 часа нас посетили 17965 программистов и 1699 роботов. Сейчас ищут 1557 программистов ...

Забить массив построчно в БД

Тема в разделе "PHP для новичков", создана пользователем Spayn, 25 ноя 2008.

  1. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Да вроде нет=)
     
  2. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Фух... У меня пальцы устали набирать это все на телефоне=)
     
  3. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Жесть :))) А вот на счёт строк даже не знаю :((( Ну ты суть моей задачи понял?
     
  4. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Тогда попробуй так

    PHP:
    1.  
    2. <?php
    3. $file = "http://www.photoshop-master.ru/rss_les2.php";
    4.   $XML = file_get_contents($file);
    5.   if(!$XML) continue;
    6.   $ITEMS = GetXMLAllVal($XML, 'item');
    7.  
    8. foreach($ITEMS as $item){
    9.   $title = GetXMLFirstVal($item, 'title');
    10.  
    11.   $link = GetXMLFirstVal($item, 'link');
    12.  
    13.  
    14.   $text = GetXMLFirstVal($item, 'description');
    15.   $date = GetXMLFirstVal($item, 'pubDate');
    16.   $title = html_entity_decode($title, ENT_QUOTES);
    17.   $text = html_entity_decode($text, ENT_QUOTES);
    18. $query = "INSERT INTO tbl (title, link, date, text) VALUES ('$title', '$link', '$date', '$text')";
    19. $res = mysql_query($query) or die($res);
    20.   print("<em><a href=\"$link\" style=\"text-decoration: none\" >".$title."</a></em>   <i>".$date."<br /><hr color=\"#CCCCCC\" />".$text."<br /><hr color=\"#CCCCCC\" /><br /><br />");
    21.   }
    22.   function GetXMLFirstVal($r,$t) {
    23.           if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    24.           return '';
    25.   }
    26.  
    27.     function GetXMLAllVal($r,$t) {
    28.           if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    29.           return array();
    30.             }
    31.  
     
  5. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Вообшем из данного кода :
    PHP:
    1. $file = "http://www.photoshop-master.ru/rss_les2.php";
    2.   $XML = file_get_contents($file);
    3.   if(!$XML) continue;
    4.   $ITEMS = GetXMLAllVal($XML, 'item');
    5.   foreach($ITEMS as $item){
    6.   $title = GetXMLFirstVal($item, 'title');
    7.   $link = GetXMLFirstVal($item, 'link');
    8.   $text = GetXMLFirstVal($item, 'description');
    9.   $date = GetXMLFirstVal($item, 'pubDate');
    10.   $title = html_entity_decode($title, ENT_QUOTES);
    11.   $text = html_entity_decode($text, ENT_QUOTES);
    12.   print("<em><a href=\"$link\" style=\"text-decoration: none\" >".$title."</a></em>   <i>".$date."<br /><hr color=\"#CCCCCC\" />".$text."<br /><hr color=\"#CCCCCC\" /><br /><br />");
    13.   }
    14.   function GetXMLFirstVal($r,$t) {
    15.           if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    16.           return '';
    17.   }
    18.     function GetXMLAllVal($r,$t) {
    19.           if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    20.           return array();
    21.           }


    Мне нужно все данные в переменных занести в таблицу построчно! Очень жду вашей помоши!
     
  6. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Эммм.. ну твой код, ничего не выводит, и в базу так и не добавляет :(
     
  7. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    А ты в запросе меняешь? Ну там например название таблицы свое ставишь?
     
  8. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Скрипт совсем ничего не выводит? Пустую станицу?
     
  9. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    да, таблицу свою ставлю, скрипт выводит пустую страницу
     
  10. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Ну значит переменные пустые, потому что ниже идет их вывод на экран(print).
    Провер еще массив
    print_r($ITEMS);
     
  11. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Хм... проверил, вроде как переменные не пустые... но всё равно выводиться пустая страница
     
  12. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
  13. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Хм... воть на ваш код что выводиться :
    Warning: array_map() [function.array-map]: Argument #2 should be an array in W:\home\localhost\www\1.php on line 36

    Warning: join() [function.join]: Bad arguments. in W:\home\localhost\www\1.php on line 37
    INSERT INTO 1 (`links`) values ("")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 '1 (`links`) values ("")' at line 1
     
  14. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    $a = mysql_query("INSERT INTO links (link) VALUES ('$link')");
    вот данный записывает в базу только последнюю ссылку
     
  15. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    function print_arr($str)
    {
    echo $str,"
    \n";
    $str.=" - done";
    }

    $link=array("$link");

    array_walk($link,'print_arr');

    и этот код тоже выводи только последнюю ссылку....
     
  16. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Прально выводит потому, что $link энто не массив. Сделай чтоб она была массивом или лучше приспособь код предложенный Frozen под массив $ITEMS
     
  17. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    а каким образом сделать $link массивом?? кака я понимаю в данный момент в пременную $lnik заносится только последняя строка.
     
  18. free-bits

    free-bits Активный пользователь

    С нами с:
    13 ноя 2008
    Сообщения:
    296
    Симпатии:
    0
    Адрес:
    г. Красноярск
    Ну хотя бы так
    PHP:
    1.  
    2. <?
    3. foreach ($ITEMS as $item) {
    4.      $links[] = $item['link'];
    5. }
    6.  
    Ну и соответственн поменял $link на $links в array_map
     
  19. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Эх.....

    вот это весь код:
    PHP:
    1.      foreach ($ITEMS as $item)
    2.      {
    3.          $links[] = $item['link'];
    4.      }
    5.      
    6.   $ar = array_map('addslashes', $ITEMS);
    7.    echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")';
    8.   mysql_query($sql) or die(mysql_error());
    9.      
    выводит полное содержимое массива $ITEMS
     
  20. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    И соответственно записывает построчно ВСЮ инфу в таблицу вместе с тегами, вот надо как то убрать всё лишние, что бы остались одни ссылки
     
  21. Frozen

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

    С нами с:
    20 окт 2008
    Сообщения:
    540
    Симпатии:
    0
    Адрес:
    Москва
    убейте меня ктонибудь...

    PHP:
    1.  
    2. <?php
    3. foreach ($ITEMS as $item)
    4.      {
    5.          $links[] = $item['link'];
    6.      }
    7.      
    8.    $ar = array_map('addslashes', $links);
    9.    echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")';
    10.    mysql_query($sql) or die(mysql_error());
    11.  
    12. ?>
    13.  
    Если и ща не поможет, то print_r($ITEMS) и результат в студию
     
  22. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Ё моё.. я так делал, массив $links пустой! И записывает пустые строки!
     
  23. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    PHP:
    1.   foreach ($ITEMS as $link)
    2.         {
    3.         $link = GetXMLFirstVal($item, 'link');
    4.             $links[] = $link;
    5.         }
    6.         $ar = array_map('addslashes', $links);
    7.       echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")';
    8.       mysql_query($sql) or die(mysql_error());
    9.      

    И снова вывод только последней ссылки...
     
  24. Spayn

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

    С нами с:
    25 ноя 2008
    Сообщения:
    51
    Симпатии:
    0
    Вот выкладываю полный код приложения, может так будет легче!
    PHP:
    1.  
    2.      <?php
    3.      
    4.    
    5. $db = mysql_connect ("localhost","root","");
    6. mysql_select_db("1",$db);
    7.  
    8.  
    9.     $file = "http://www.photoshop-master.ru/rss_les2.php";
    10.       $XML = file_get_contents($file);
    11.       if(!$XML) continue;
    12.       $ITEMS = GetXMLAllVal($XML, 'item');
    13.  
    14.     $beg = true;
    15.       foreach($ITEMS as $item)
    16.       {
    17.       $title = GetXMLFirstVal($item, 'title');
    18.       if (!$beg) $query .= ", ";
    19.     $link = GetXMLFirstVal($item, 'link');
    20.       $query .= "('$link')";
    21.       $beg =false;
    22.      $text = GetXMLFirstVal($item, 'description');
    23.       $date = GetXMLFirstVal($item, 'pubDate');
    24.       $title = html_entity_decode($title, ENT_QUOTES);
    25.       $text = html_entity_decode($text, ENT_QUOTES);
    26.       print("<em><a href=\"$link\" style=\"text-decoration: none\" >".$title."</a></em>  <i>".$date."<br /><hr color=\"#CCCCCC\" />".$text."<br /><hr color=\"#CCCCCC\" /><br /><br />");
    27.       }
    28.       function GetXMLFirstVal($r,$t) {
    29.               if(preg_match_all('/<('.$t.')[^>]{0,}>(.*)<\/\\1>/Usi',$r,$o)) return $o[2][0];
    30.               return '';
    31.       }
    32.     mysql_query($query);
    33.         function GetXMLAllVal($r,$t) {
    34.               if(preg_match_all('/<('.$t.')[^>]{0,}?>(.*)<\/\\1>/Usi',$r,$o)) return $o[2];
    35.               return array();
    36.               }
    37.              
    38.              
    39.     print_r($ITEMS['0']);
    40.     foreach ($ITEMS as $link)
    41.         {
    42.         $link = GetXMLFirstVal($item, 'link');
    43.             $links[] = $link = GetXMLFirstVal($item, 'link');
    44.         }
    45.         $ar = array_map('addslashes', $links);
    46.       echo $sql = 'INSERT INTO links (`link`) values '.'("'.join('"),("',$ar).'")';
    47.       mysql_query($sql) or die(mysql_error());
    48.      
    49.              
    50.  
    51.     ?>
     
  25. kirwebgroup

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

    С нами с:
    21 ноя 2008
    Сообщения:
    48
    Симпатии:
    0
    Все такие профи, просто ппц... Ну а насчет архитектуры таблицы даже никто не спросил, а нужно было бы начать с этого))
    Spayn
    Опиши плиз архитектуру своей таблички для начала, если она есть, если нету, то начать надо именно с этого.
    А после посотрим чем тебе помочь.