Şimdi Ara

PHP Bot Döngü Sorunu

Daha Fazla
Bu Konudaki Kullanıcılar: Daha Az
3 Misafir - 3 Masaüstü
5 sn
2
Cevap
0
Favori
838
Tıklama
Daha Fazla
İstatistik
  • Konu İstatistikleri Yükleniyor
0 oy
Öne Çıkar
Sayfa: 1
Giriş
Mesaj
  • Merhaba arkadaşlar. Baska bir siteden verileri parçalayarak alıyorum. Ancak sadece ilk veriyi alıyorum. Ben alttaki verileri de alıp veritabanına kaydetmesini istiyorum. Bu haliyle sadece ilk karşısına çıkanı kaydediyor. Yardımcı olabilir misiniz?




    <?php
    $dbhost = "localhost";
    $dbuser = "root";
    $dbpass = "";
    $dbname = "bot";
    [MENTION=382]MYSQL[/MENTION]_connect ($host,$dbuser,$dbpass,$dbname) or die ("Veritabanına bağlanılamadı... Veritabanı bilgilerini kontrol edin"); [MENTION=382]MYSQL[/MENTION]_select_db ($dbname) or die ("Veritabanına Bağlanılamadı...");
    mysql_query("SET NAMES 'utf8'");
    mysql_query("SET CHARACTER SET utf8");
    mysql_query("SET COLLATION_CONNECTION = 'utf8_general_ci'");
    //cekilecek site

    $link = "****Ilan_Menu.aspx?ID=0&lb=%27T%C3%BCm%20%C4%B0lanlar%27";
    //parcalama

    $parcala = '@<li style=\'clear:left;\'><img class=\'limg2\' src=\'./(.*?)\'/>@si';
    //$parcala = '@<a href=\'yeni_PDF.aspx(.*?)\' target=\'_blank\'>(.*?)</a>@si';
    //$parcala = '@<a href=\'yeni_PDF.aspx(.*?)\' target=\'_blank\'>(.*?)</a>@si';
    $botara = file_get_contents($link);

    preg_match_all($parcala,$botara,$resim);
    //preg_match_all($parcala,$botara,$link);
    //preg_match_all($parcala,$botara,$baslik);

    $resim = $resim[1][0];
    $link = $link[1][0];
    $baslik = $baslik[2][0];



    echo "
    <br>$resim</br>
    <br>$baslik</br>
    <br>$link</br>";

    $save = mysql_query("insert into dpb(baslik,resim,link) values
    ('$baslik', '$resim','$link')");

    if($save){
    echo "<p style='color: red'> $baslik Eklendi</p>";
    }else{
    echo "<p style='color: yellow'> $baslik Eklenmedi</p>";
    }

    }

    ?>







  • Kim bilir hangi siteden ne çekip kaydedeceksiniz? Neyse, örnek kodları da yazarak soruyu doğru sormuşsunuz, bu yüzden cevabı hak ediyor.

    Bilgileri çekip parçaladığınız bölümün doğru olduğunu varsayıyorum;

    burası değişecek, çünkü burada [0] indeksindeki tek bir bilgi değil bilgilerin olduğu arrayı almak istiyoruz:


    $resim = $resim[1][0];
    $link = $link[1][0];
    $baslik = $baslik[2][0];


    şöyle olacak:


    $resim_array = $resim[1];
    $link_array = $link[1];
    $baslik_array = $baslik[2];


    Doğru yaptıysak $baslik_array'da sırasıyla başlıklar, $link_array'da sırasıyla linkler bulunmalı.

    Bu arraylar ile bir foreach döngüsü kuracağız ki tüm çekilen malzemeyi kaydetsin.
    Yine bilgi çekme işi yolunda gitmiş ve arrauy'larda eşit sayıda malzeme bulunuyor varsayacağız.


    foreach ($baslik_array as $key=>$baslik){
    $resim=$resim_array[$key];
    $link=$link_array[$key];
    $save = mysql_query("insert into dpb(baslik,resim,link) values ('$baslik', '$resim','$link')");
    }



    Her şey yolunda gittiyse malzemeyi kaydetmiş olmalı.

    Not: Sadece sizin yazdığınızdan giderek düzeltmeye çalıştım. Bazı bilgiler eksikse daha doğrusu array içerikleri aynı sayıda değilse (mesela bir tanesinde resim yoksa resim arrayı bir adet az metin içeriyorsa) yukarıdaki kod cortlayacaktır elbette. Oradan itibaren bilgileri yanlış kaydedecektir. (Sınavda kaydırma yapmış gibi)



    < Bu mesaj bu kişi tarafından değiştirildi voenetto -- 14 Haziran 2017; 13:56:12 >




  • Yapay Zeka’dan İlgili Konular
    PHP POST Kaydetme sorunu?
    11 yıl önce açıldı
    Daha Fazla Göster
    
Sayfa: 1
- x
Bildirim
mesajınız kopyalandı (ctrl+v) yapıştırmak istediğiniz yere yapıştırabilirsiniz.