J
joshqune
Misafir
Yapmaya çalıştığım şey şu: Bir formdan hem bazı text bilgileri hemde file upload ile aldığım .txt dosya içerisindeki bilgiler var. Bu bilgileri alıp mysql veritabanına işlemem gerekiyor. Ama her nedense bir türlü bu işlemi yaptıramadım. İşlemleri takip edip çok iyi inceledim ve sorun şu satırdan kaynaklanıyor: mysql_query("INSERT INTO... diye başlıyan yani bilgi girişi yaptığım satırdan. Bu komutun nasıl böyle bir şeye sebep olduğunu anlayamadım. Mysql deki bu bilginin yüklendiği kolonun type ı longtext bunu böyle yapmamın sebebi .txt dosyasının içindeki bilginin biraz uzun olması (3-5kb lık bi dosya). Daha basit anlatırsam, upload ettiğim dosyayı rahatlıkla açıp okuyabiliyorum ama içindeki bilgiyi biraz uzun olması sebebiyle sanırım bir türlü veritabanına kolonunun type ı longtext olmasına rağmen kaydedemiyorum. Sorunu çok iyi anlayabilmek için bazı testler yaptım ve sonucunda yukarda dediğim mysql_query den kaynaklanıyor, sizde deneyebilirsiniz. Ayrıca denemelerimden biride bu .txt dosyasını kendim notepadle açıp içindekini bir textarea yaya kopyalayıp o şekilde bir kayıt yaptırmayı denedim hiç bir sorun olmadan doğrudan kaydetti. Sonra bu mantıktan yola çıkıp 2 basamaklı bir program yazdım. İlkinde dosya upload ediliyor sonra içindeki bilgiler bir textarea yaya value olarak yollanıyor sonra ikinci basamakta bu bilgileri veritabanına işliyor ama bu da bir çözüm olmadı çünkü bu sefer kayıt gerçekleşmedi diye hata vermedi oldu gibi gösterdi fakat o kolon için hiçbir değer girmedi, diğer kolonları doldurdu. İşte problem böyle. PHP nin bug ı olduğunu falan söylediler ama bilmiyorum. Yardımcı olursanız çok sevinirim aşağıya kendi yazdığım bu programı ekliyorum..
PHP:
<?php$html="<html><head> <title>HTML document</title><style>input,textarea,td {font-family:verdana;font-size:10px;border:1px #2D7BA2 solid;background:#BECCE7} </style></head><body><form action='admin.php' method='POST' ENCTYPE='multipart/form-data'><table align='Center'><tr> <td>Marka:</td> <td><input name='alan1' type='Text' size=30 value='$alan1'></td></tr><tr> <td>Ürün Grubu:</td> <td><input name='alan2' type='Text' size=30 value='$alan2'></td></tr><tr> <td>Alt Ürün Grubu:</td> <td><input name='alan3' type='Text' size=30 value='$alan3'></td></tr><tr> <td>Resmin türü:</td> <td><input name='tur' type='Radio' value='jpg' checked>JPG <input name='tur' type='Radio' value='gif'>GIF</td></tr><tr> <td>Dosya:</td> <td><input name='file' type='File'></td></tr><tr> <td colspan=2 align='Center'><input type='Submit' value='Yolla'></td> </tr></table></form>";if(empty($HTTP_POST_VARS)){echo $html;}else {$absolute_path = "../beyazesya/Del";$size_limit = "var";$limit_size = "150000";$limit_ext = "var";$ext_count = "2";$extensions = array(".jpg", ".gif");$geri = "<br><br><a href='#' onclick='javascript:history.go(-1)'>Geri</a>";$endresult = 'DOSYA BAŞARIYLA GÖNDERİLDİ..';if ($file_name == "") {$endresult='DOSYA SEÇMEDİNİZ.. $geri';}else{if (($size_limit == "var") && ($limit_size < $file_size)) {$endresult = 'DOSYA ÇOK BÜYÜK, EN FAZLA 150KB OLABİLİR $geri';} else {$ext = strrchr($file_name,'.');if (($limit_ext == "var") && (!in_array($ext,$extensions))) {$endresult = 'DOSYA TÜRÜ YALNIZCA .ZIP VEYA .RAR OLABİLİR.. $geri';}else{$actt=@copy($file, "$absolute_path/file.txt") or die("DOSYA KOPYALANAMADI.. $geri");$dosyam="../beyazesya/Del/file.txt";$fp=fopen($dosyam,"r") or die("Dosya açılmıyor");while(!feof($fp)){$buf = fgets($fp,8192);$buffer=$buffer.$buf;}$buffer=eregi_replace("t","",$buffer);$buffer=trim($buffer);$f_a=$file_name;$model=str_replace(".txt","",$f_a);$resim="$model.$tur";mysql_connect("xxx","yyy","zzz");mysql_select_db("aaa");$bb=mysql_query("SELECT * FROM beyaz WHERE alan1='$alan1' AND alan2='$alan2' AND alan3='$alan3' AND model='$model'");$say_bb=mysql_num_rows($bb);if($say_bb<1){$b=mysql_query("INSERT INTO beyaz (alan1,alan2,alan3,resim,model,html) VALUES ('$alan1','$alan2','$alan3','$resim','$model','$buffer')") or die("Ekleyemedim!");if($b) {echo "$html";$yazili=mysql_query("SELECT * FROM beyaz WHERE alan1='$alan1' AND alan2='$alan2' AND alan3='$alan3'");echo "<table align=center><tr><td>";$top_yaz=mysql_num_rows($yazili);echo "Toplam: <b>$top_yaz</b><hr>";while($read=mysql_fetch_row($yazili)){echo "$read[4]<br>";}echo "</td></tr></table>";}}else echo "Bu kayıt önceden yapılmış (this record is done before)";fclose ($fp);unlink("../beyazesya/Del/file.txt");$buffer=0;}}}}?></body></html>