• 23-04-2010, 16:53:08
    #1
    Elimdeki bir metin belgesinden mysql e veri çekmek istiyorum. txt dosyasında satır satır yazılar var bunları tek tek ekletmek istiyorum fakat birkaç ufak sorunum var.

    Kullandığım Kod

    <?php 
    
    $dosya = fopen("cekesin.txt","r");
    
    include 'mysql.php';
    
    
    
    if ($dosya) {
    
        while (!feof($dosya)) {
    
            $veri = fgets($dosya, 4096);
    
            mysql_query("insert into deneme (kat,baslik) values ('".$veri."')") or die(mysql_error());
    
        }
    
        fclose($dosya);
    
    }
    
     ?>

    yapmak istediğim ise 1 defa çalıştırdığımda üstten 10 satır veriyi girmesini istiyorum ve tekrar çalıştırdığımda bu ilk 10 veriyi eklememesini istiyorum.

    10 satır olayı for döngüsü ile yapmay çalıştım beceremedim.
    eklenen verileri tekrar ekletmemek için mysql u unique olarak yapmanın daha doğru olduğunu söylediler fakat IF , else olayını yapamadığım için alternatif bir yol bulamadım.

    Bu anlatmak istediklerimi nasıl yapabilirim acaba ?
  • 23-04-2010, 17:08:24
    #2
    Kimlik doğrulama veya yönetimden onay bekliyor.
    Sanırım çalışır:
    <?php 
    $dosya = fopen("cekesin.txt","r");
    include 'mysql.php';
    
    if ($dosya)
    {
        while (!feof($dosya))
    	{
    		$veri = fgets($dosya, 4096);
    		$sorgu = mysql_query("SELECT baslik FROM deneme WHERE baslik='".$veri."'");
    		$row   = mysql_fetch_assoc($sorgu);
    		$check = mysql_num_rows($query);
    		if (!$check >= 10)
    		{
    			
    			mysql_query("INSERT INTO deneme (kat,baslik) VALUES ('', '".$veri."')") or die(mysql_error());
    		}
    		else
    		{
    			echo '10 kere eklenmiş zaten! Deli misin la sen!';
    		}
    	}
    	fclose($dosya);
    }
    ?>
  • 23-04-2010, 20:40:10
    #3
    Alıntı
    Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /home/xxxxxxxx/test.php on line 12
    $check = mysql_num_rows($query);

    satırında sistem hata verdi bende alttaki olayı yaptım.

    $check = mysql_num_rows($query); yi $check = mysql_num_rows($sorgu); ile değiştirdim çalıştı fakat şuan sorunlu biraz.

    her çalıştırdığımda 10 tane eklemiyor metinde ne kadar satır varsa alıyor geçiyor mysql e.
  • 23-04-2010, 22:20:55
    #4
    $my = spliti('/n',$veri);
    for (i=0;i<10;i++) {
    echo $my[i];
    }
    Şeklinde txt yi sanırım satır satır alabilirsin.
  • 24-04-2010, 01:50:56
    #5
    Dogukan adlı üyeden alıntı: mesajı görüntüle
    $my = spliti('/n',$veri);
    for (i=0;i<10;i++) {
    echo $my[i];
    }
    Şeklinde txt yi sanırım satır satır alabilirsin.
    Sorgu doğru mu emin misiniz ? hata verdi çalıştırınca da.

    sanırım hata sayaç değişkeninin başına $ koymamanızdan oldu fakat benim dosya iyice karıştı en son ben alttaki hal ile denedim fakat gene başaramadım.

    <?php  
    $dosya = fopen("cekesin.txt","r"); 
    include 'mysql.php'; 
    
    if ($dosya) 
    { 
        while (!feof($dosya)) 
        { 
            $veri = fgets($dosya, 4096); 
            $sorgu = mysql_query("SELECT baslik FROM deneme WHERE baslik='".$veri."'"); 
            $row   = mysql_fetch_assoc($sorgu); 
            $check = mysql_num_rows($sorgu); 
            
                 for($sayac=0;$sayac<=10;$sayac++)
    			 {
    		if (!$check >= 10) 
    		
    		{	 
    			  mysql_query("INSERT INTO deneme (baslik) VALUES ('".$veri."')") or die(mysql_error()); 
    			} 
            else 
            { 
                echo '10 kere eklenmiş zaten! Deli misin la sen! <br />'; 
            } 
              }
           
        } 
        fclose($dosya); 
    } 
    ?>
  • 24-04-2010, 02:07:36
    #6
    Üyeliği durduruldu
    <?php
    $dosya = fopen("cekesin.txt","r");
    include 'mysql.php';

    if ($dosya)
    {
    while (!feof($dosya))
    {
    $veri = fgets($dosya, 4096);
    $sorgu = mysql_query("SELECT baslik FROM deneme WHERE baslik='".$veri."'");
    $row = mysql_fetch_assoc($sorgu);
    $check = mysql_num_rows($query);
    if (!$check >= 10)
    {
    $grafidevam = mysql_query("SELECT baslik FROM deneme WHERE baslik='".$veri."'");
    $tamgazphp = mysql_num_rows($grafidevam);
    if($tamgazphp<1){
    mysql_query("INSERT INTO deneme (kat,baslik) VALUES ('', '".$veri."')") or die(mysql_error());
    }
    }
    else
    {
    echo '10 kere eklenmiş zaten! Deli misin la sen!';
    }
    }
    fclose($dosya);
    }
    ?>
  • 24-04-2010, 02:34:15
    #7
    $check = mysql_num_rows($query);

    bu satırın doğru olduğundan eminmisiniz ? by_grafitus da öyle verdi kodu kodu çalıştırınca benim sunucu hata veriyorda sorun bende mi onu anlayamadım.
  • 24-04-2010, 02:50:25
    #8
    Üyeliği durduruldu
    <?php
    $dosya = fopen("cekesin.txt","r");
    include 'mysql.php';

    if ($dosya)
    {
    while (!feof($dosya))
    {
    $veri = fgets($dosya, 4096);
    $sorgu = mysql_query("SELECT baslik FROM deneme WHERE baslik='".$veri."'");
    $row = mysql_fetch_assoc($sorgu);
    $check = mysql_num_rows($sorgu);
    if (!$check >= 10)
    {
    $grafidevam = mysql_query("SELECT baslik FROM deneme WHERE baslik='".$veri."'");
    $tamgazphp = mysql_num_rows($grafidevam);
    if($tamgazphp<1){
    mysql_query("INSERT INTO deneme (kat,baslik) VALUES ('', '".$veri."')") or die(mysql_error());
    }
    }
    else
    {
    echo '10 kere eklenmiş zaten! Deli misin la sen!';
    }
    }
    fclose($dosya);
    }
    ?>

    pardon işte orası kopyalamaktan yanlış kalmış düzelttim. yazdıgım kod grafi hocanın kodundan devamıdır.
  • 24-04-2010, 03:02:22
    #9
    sizin verdiğiniz kodda ne kadar varsa çekiyor limiti 10 da tutturamadım bir türlü.