• 17-02-2023, 23:45:31
    #1
    Arkadaşlar aşağıdaki koddaki hata nedir? keywords.txt dosyasında her satırda bir kelime var. bunları ekrana yazdırıyorum. daha sonra da 17-02-2023.txt isimli dosyada keywordstan aldığı satırdaki içerik kaç yerde geçiyorsa saydırıp ekrana yazdırmak istiyorum ama 0 olarak görünüyor. nerede yanlışlık yapıyorum?

    <?php
    $kwordsfile = fopen("db/keywords.txt", "r");
    while (!feof($kwordsfile)) {
        $kwords = fgets($kwordsfile);
          ?>
          <tr>
            <td style="padding:3px;">
                <a href="listele.php?keyword=<?php echo $kwords;?>&tarih=<?php echo $_GET["tarih"] ?>"><?php echo $kwords;?></a> 
                <?php
                $file = file('txt/'.date('n-j-Y').'.txt');
                $count = 0;
                foreach ($file as $line) {
                    if (strpos($line, ".net") !== false && strpos($line, $kwords) !== false) {
                        $count++;
                    }
                }
                echo " <b>( $count</b> adet )";
                ?>
            </td>
          </tr>
          <?php
    }
    fclose($kwordsfile);
    ?>
  • 17-02-2023, 23:52:46
    #2
    Chatgpt cevabı;
    Kodunuzda birkaç potansiyel sorun var:
    1. Dosya yollarınızın doğru olduğundan emin olun. keywords.txt dosyasının doğru yolda olduğundan ve listele.php dosyasında txt/ klasörünün doğru olduğundan emin olun.
    2. Dosya adlarınızın doğru olduğundan emin olun. listele.php dosyasını "17-02-2023.txt" olarak adlandırmak istediğinizi belirttiniz, ancak kodunuzda bunu kullanmadığınızı fark ettim. Dosya adının doğru olduğundan emin olun.
    3. $kwords değişkenini dosya adında kullanırken özel karakterler olabilir. Dosya adında özel karakterler varsa, dosya sistemleri farklı davranabilir. $kwords değişkenini dosya adında kullanmadan önce özel karakterlerden arındırdığınızdan emin olun.
    4. Kodunuzun strpos fonksiyonunu doğru kullanıp kullanmadığınızı kontrol edin. strpos fonksiyonu, bir dize içinde başka bir dizeyi arar. İlk parametresi aranacak dize, ikinci parametresi aranacak kelime. Ancak kodunuzda ilk parametre .net olarak belirtilmiş, ancak size 17-02-2023.txt dosyasının içeriğini saymanız isteniyor. Bu nedenle, ilk parametreyi $line olarak değiştirmeniz gerekiyor.
    Aşağıda, yukarıdaki sorunları düzeltmiş bir kod örneği verilmiştir:

    <?php
    $kwordsfile = fopen("db/keywords.txt", "r");
    while (!feof($kwordsfile)) {
        $kwords = fgets($kwordsfile);
        $kwords = trim($kwords); // özel karakterleri kaldır
    
        $count = 0;
        $filename = "txt/17-02-2023.txt"; // dosya adını düzelt
        if (file_exists($filename)) {
            $file = file($filename);
            foreach ($file as $line) {
                if (strpos($line, $kwords) !== false) { // strpos kullanımını düzelt
                    $count++;
                }
            }
        }
        ?>
        <tr>
            <td style="padding:3px;">
                <a href="listele.php?keyword=<?php echo $kwords;?>&tarih=<?php echo $_GET["tarih"] ?>"><?php echo $kwords;?></a> 
                <b>( <?php echo $count; ?> adet )</b>
            </td>
        </tr>
        <?php
    }
    fclose($kwordsfile);
    ?>

    Bu kod, her kelime için belirtilen dosyada kaç kez geçtiğini doğru şekilde sayacaktır.
  • 17-02-2023, 23:56:46
    #3
    hakancevik adlı üyeden alıntı: mesajı görüntüle
    Chatgpt cevabı;
    Kodunuzda birkaç potansiyel sorun var:
    1. Dosya yollarınızın doğru olduğundan emin olun. keywords.txt dosyasının doğru yolda olduğundan ve listele.php dosyasında txt/ klasörünün doğru olduğundan emin olun.
    2. Dosya adlarınızın doğru olduğundan emin olun. listele.php dosyasını "17-02-2023.txt" olarak adlandırmak istediğinizi belirttiniz, ancak kodunuzda bunu kullanmadığınızı fark ettim. Dosya adının doğru olduğundan emin olun.
    3. $kwords değişkenini dosya adında kullanırken özel karakterler olabilir. Dosya adında özel karakterler varsa, dosya sistemleri farklı davranabilir. $kwords değişkenini dosya adında kullanmadan önce özel karakterlerden arındırdığınızdan emin olun.
    4. Kodunuzun strpos fonksiyonunu doğru kullanıp kullanmadığınızı kontrol edin. strpos fonksiyonu, bir dize içinde başka bir dizeyi arar. İlk parametresi aranacak dize, ikinci parametresi aranacak kelime. Ancak kodunuzda ilk parametre .net olarak belirtilmiş, ancak size 17-02-2023.txt dosyasının içeriğini saymanız isteniyor. Bu nedenle, ilk parametreyi $line olarak değiştirmeniz gerekiyor.
    Aşağıda, yukarıdaki sorunları düzeltmiş bir kod örneği verilmiştir:

    <?php
    $kwordsfile = fopen("db/keywords.txt", "r");
    while (!feof($kwordsfile)) {
        $kwords = fgets($kwordsfile);
        $kwords = trim($kwords); // özel karakterleri kaldır
    
        $count = 0;
        $filename = "txt/17-02-2023.txt"; // dosya adını düzelt
        if (file_exists($filename)) {
            $file = file($filename);
            foreach ($file as $line) {
                if (strpos($line, $kwords) !== false) { // strpos kullanımını düzelt
                    $count++;
                }
            }
        }
        ?>
        <tr>
            <td style="padding:3px;">
                <a href="listele.php?keyword=<?php echo $kwords;?>&tarih=<?php echo $_GET["tarih"] ?>"><?php echo $kwords;?></a>
                <b>( <?php echo $count; ?> adet )</b>
            </td>
        </tr>
        <?php
    }
    fclose($kwordsfile);
    ?>
    Bu kod, her kelime için belirtilen dosyada kaç kez geçtiğini doğru şekilde sayacaktır.
    çok teşekkürler hocam. oldu.
  • 17-02-2023, 23:57:54
    #4
    PetitJoueur adlı üyeden alıntı: mesajı görüntüle
    çok teşekkürler hocam. oldu.
    ben teşekkür ederim hocam, chatgpt'yi bir kodumda hata ile karşılaştığımda sıkca kullanıyorum en son ilk72.com için destek almıştım baya işe yarıyor
  • 17-02-2023, 23:58:51
    #5
    hakancevik adlı üyeden alıntı: mesajı görüntüle
    ben teşekkür ederim hocam, chatgpt'yi bir kodumda hata ile karşılaştığımda sıkca kullanıyorum en son ilk72.com için destek almıştım baya işe yarıyor
    ben de kullanıyorum hocam da böyle kodu yapıştırınca hata bul mu diyorsun? yada ne dedin de düzeltti?
  • 18-02-2023, 00:03:44
    #6
    PetitJoueur adlı üyeden alıntı: mesajı görüntüle
    ben de kullanıyorum hocam da böyle kodu yapıştırınca hata bul mu diyorsun? yada ne dedin de düzeltti?
    ben normal muhabbet eder gibi soruyorum hocam çözüyor yapay zeka da olsa emir verir gibi konuşmak kötü hissettiriyor rica ediyorum
  • 18-02-2023, 00:16:49
    #7
    hakancevik adlı üyeden alıntı: mesajı görüntüle
    ben normal muhabbet eder gibi soruyorum hocam çözüyor yapay zeka da olsa emir verir gibi konuşmak kötü hissettiriyor rica ediyorum
    ben de deneyeyim bakayım. altalta gösteriyor şimdi tüm listeyi. bunları 4 sütunlu şekilde nasıl listelerim diye sordum birşeyler yazıyor bakalım ne çıkaracak.

    EDİT: Yaptı
  • 18-02-2023, 00:17:54
    #8
    PetitJoueur adlı üyeden alıntı: mesajı görüntüle
    ben de deneyeyim bakayım. altalta gösteriyor şimdi tüm listeyi. bunları 4 sütunlu şekilde nasıl listelerim diye sordum birşeyler yazıyor bakalım ne çıkaracak.
    ben 400 satırlı bi kodu berbat etmiştim çözmeye çalıştıkça daha çok bozdum en son chatgptye sordum şuna bi el at işlemcin aşkına diye tek seferde çözdü