|
Yazan
|
Konu: Explode dan dönen veriyi MYSQL'e gönderme (Okunma Sayısı 2213 defa)
|
Freezerg
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 13
|
bunu dener misin? My sql'de bazen bu tür şeylerle sorun çözülüyor boşluk vs. <?php $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza); $piecelist = $pieces[0]; $sorgu = mysql_query ("SELECT * FROM MyTable WHERE `list`='$piecelist'"); ?>
Maalesef boş değer döndürüyor crasher , ekran boş, echo ile yazınca $piecelist i gösteriyor. $piecelist[10] desem echo ile ekrana "Ali" yazıyor. WHERE 'de boş, mutlaka ufak bir trick vardır ama bulamadım.
|
|
|
|
|
Logged
|
|
|
|
crasher
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 7
Paylaşmak için burdayız!!
|
peki MyTable tablosunun list sütununda piece1 diye bir kayıt oldugundan eminiz değil mi?
|
|
|
|
|
Logged
|
|
|
|
Freezerg
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 13
|
peki MyTable tablosunun list sütununda piece1 diye bir kayıt oldugundan eminiz değil mi?
evet var tabiki, dediğim gibi WHERE yollamayıp, echo ile $piecelist[0] yazınca ekrana db'deki kayıdı listeliyor. Ayrıca eğer $piecelist = $pieces[0]; yerine $piecelist değişkenine mesela Ali yazarsam yani, $piecelist = "Ali"; şeklinde, WHERE bu sefer db'yi tarıyor ve bir WHILE dönügü Ali ile ilgili istediğim kaydı getiriyor. Yani WHERE sadece direkt stringi tanıyor, explode dan döneni değil. Benim istediği tek şey explode tüm değerleri ayırsın, bir döngü ile teker teker sıra ile tüm kelimeleri WHERE ile db'de karşılaştırsın, exploden'dan dönen hangi değer veritabanındaki ile uyuşuyorsa, o veriyi göstersin.
|
|
|
|
|
Logged
|
|
|
|
mudkicker
Arif Ender
Admin
Offline
Mesaj Sayısı: 873
Mastered PHP
|
<?php $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza);
$sql = "SELECT * FROM MyTAble WHERE ";
foreach($pieces as $piece) {
$sql = $sql . "list = '". $piece ."' OR ";
}
$sql = substr($sql, 0,-3);
$sorgu = mysql_query ($sql); ?>
Bunu deneyebilir misiniz?
|
|
|
|
|
Logged
|
|
|
|
Freezerg
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 13
|
<?php $pizza = "piece1 piece2 piece3 piece4 piece5 piece6"; $pieces = explode(" ", $pizza);
$sql = "SELECT * FROM MyTAble WHERE ";
foreach($pieces as $piece) {
$sql = $sql . "list = '". $piece ."' OR ";
}
$sql = substr($sql, 0,-3);
$sorgu = mysql_query ($sql); ?>
Bunu deneyebilir misiniz? Nihayet çalıştı, sağolasın emeğin için, fakat çıktı alınan veriyi 1 tane ile sınırlandırmak istiyorum yani $limit = "1" dedim ama $limit değişkenini sorguya nasıl ekleyebilirim, bir diğeri ise ; eğer explodan dönen değer db'de yoksa ekran boş görünmesin, yani else if 'i nasıl entegre edebilirim. Eğer db'de varsa göster, yoksa şunu göster gibi.
|
|
|
|
|
Logged
|
|
|
|
mudkicker
Arif Ender
Admin
Offline
Mesaj Sayısı: 873
Mastered PHP
|
sorgunun en sonuna LIMIT 0,1 dersiniz.
2. sorunuz için de
if(mysql_num_rows($sorgu) == 0) { // boş sayfada nolacaksa buraya } yapabilirsiniz..mesela..
|
|
|
|
|
Logged
|
|
|
|
Freezerg
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 13
|
LIMIT 0,1 i tam olarak nereye yerleştireceğim, sytax error veriyor, WHERE den sonra konur diye biliyorum ama hata alıyorum
|
|
|
|
|
Logged
|
|
|
|
mudkicker
Arif Ender
Admin
Offline
Mesaj Sayısı: 873
Mastered PHP
|
<?php
$sql = substr($sql, 0,-3);
$sql .= " LIMIT 0,1";
?>
böyle olması lazım.
|
|
|
|
|
Logged
|
|
|
|
Freezerg
Yeni Kullanıcılar
Offline
Mesaj Sayısı: 13
|
OK oldu sağolasın
|
|
|
|
|
Logged
|
|
|
|
mudkicker
Arif Ender
Admin
Offline
Mesaj Sayısı: 873
Mastered PHP
|
önemli değil iyi çalışmalar 
|
|
|
|
|
Logged
|
|
|
|
|
 |