mysql query
 
en3rgie 6. jun 2011 22:16:28 Pridružen od:
1. apr 2009
36 objav
13 56 4
#1

mysql_query("SELECT naslov FROM urejevalnik WHERE id='$rw[id]' AND jezik='$jezik' ");



tko ven dobim naslov zadeve. Zanima me kako bi naredil, da če jezik ni dodan, enostavno tega ne upošteva, oz kot da bi bilo tako



mysql_query("SELECT naslov FROM urejevalnik WHERE id='$rw[id]'");



Poskusil sem z:



mysql_query("SELECT naslov FROM urejevalnik WHERE ((id='$rw[id]' AND jezik='$jezik') OR (id='$rw[id]'))");



hvala


všeč(0) ni všeč(0) spam(0)
 
_Dejan_ 7. jun 2011 00:37:04 Pridružen od:
16. jun 2010
321 objav
227 23 3
#2

mogoče:

mysql_query("SELECT naslov FROM urejevalnik WHERE id='$rw[id]' AND (jezik='$jezik' OR jezik IS NULL)");


všeč(0) ni všeč(0) spam(0)
 
Gogy 7. jun 2011 03:46:29 Pridružen od:
17. mar 2007
2491 objav
2064 252 12
#3

Morda


if(isset($_POST['language'])) {
mysql_query("SELECT naslov FROM urejevalnik WHERE id='$rw[id]' AND jezik='$jezik' ");
} else {
mysql_query("SELECT naslov FROM urejevalnik WHERE id='$rw[id]'");
}
všeč(0) ni všeč(0) spam(0)
 
en3rgie 7. jun 2011 04:38:41 Pridružen od:
1. apr 2009
36 objav
13 56 4
#4

@Dejan upošteva mi samo jezik, ne upošteva če je jezik prazen oz. če sploh ni tega vnosa.



Gogy ja tako sem tudi jaz uredil zaenkrat, samo to je potem vedno toliko vrstic in bi raje videl da bi rešil v 1


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 7. jun 2011 06:26:49 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#5
mysql_query("SELECT naslov FROM urejevalnik WHERE id='$rw[id]'".(isset($_POST['language']) ? " AND jezik='$jezik' ") : '');

?



V praksi pa se bolj obnese query building v smislu


$sql = "SELECT naslov FROM urejevalnik WHERE id='$rw[id]'";
if(isset($_POST['language']))
{
$sql .= " AND jezik='$jezik' ";
}

Ker je lažje spreminjati, dograjevati, dokumentirati...



BTW. Index mora biti v navednicah, pa še v {} ovij spremenljivke (vsaj te, ki so sestavljene)

narobe: WHERE id='$rw[id]'

pravilno WHERE id='{$rw['id']}'


všeč(3) ni všeč(0) spam(0)
Freelance Web Developer
 
en3rgie 7. jun 2011 16:59:41 Pridružen od:
1. apr 2009
36 objav
13 56 4
#6

hvala SlimDeluxe, rešil po tvoje ;)


všeč(0) ni všeč(0) spam(0)
 
DiTi 7. jun 2011 18:46:55 Pridružen od:
3. apr 2010
324 objav
218 7 1
#7

SlimDeluxe:

BTW. Index mora biti v navednicah, pa še v {} ovij spremenljivke (vsaj te, ki so sestavljene)

narobe: WHERE id='$rw[id]'

pravilno WHERE id='{$rw['id']}'




zakaj pa to če smem vprašat? :) ni tako da če je stolpec int da je brez '', za {} pa še res nisem slišal. Lahko malo razložiš?


všeč(0) ni všeč(0) spam(0)
 
mtance 7. jun 2011 19:38:47 Pridružen od:
27. jan 2008
508 objav
198 16 1
#8

lahko imaš

... WHERE id=' ". $rw['id'] ." ' ORDER BY ...

ali pa

... WHERE id=' { $rw['id'] } ' ORDER BY ...



Enojni narekovaji se uporabljajo, če imaš v WHERE id = '<string>', načeloma za INTEGER-je (cela števila) ni potrebno imeti.



Presledki in ORDER BY je dodan samo zaradi boljše preglednosti.

V prvem načinu z dvojnimi narekovaji zaključimo (zaključimo s tistimi narekovaji, s katerimi smo niz začeli: mysql_query("SELECT naslov) niz in zraven "prilepimo" spremenljivko $rw.

V drugem pa jo vključimo z zaviti oklepaji. Kateri način uporabljaš je načeloma vseeno.



Razlika je tudi v prikazu v urejevalniku - Notepad++ - kateri ti obarva $rw['id'] kot, da je spremenljivka v PHPju, v drugem pa ti samo bold-a. Spet je seveda odvisno od urejevalnika do urejevalnika.


všeč(0) ni všeč(0) spam(0)
 
SlimDeluxe 7. jun 2011 19:38:53 Pridružen od:
29. apr 2010
1223 objav
1022 144 9
#9

Govoril sem o indexu celice, ki jo uporabljaš, torej

$rw[id] <- narobe

$rw['id'] <- pravilno

Sicer tudi $rw[id] bo načeloma delal, vendar bo vrgel E_WARNING in ti naredil uslugo, saj se mu svita, kaj si želel narediti.

{ } oklepaji se uporabljajo v določenih primerih, ko želiš narediti nekaj kompleksnega, kar sicer v php stringu ne bi evauliralo kot spremenljivka, npr.


$string = "my daddy has {$daddy->horseCount()} horses";

Nekateri (tudi sam kdaj pa kdaj) za boljšo berljivost uporabljajo to večkrat, tudi pri enostavnih primerih:


$string = "my daddy has {$horse_count} horses";

Več o tem (curly braces) najdeš v manualu pod string:

http://www.php.net/manual/en/language.types.string.php


všeč(0) ni všeč(0) spam(0)
Freelance Web Developer
 
DiTi 8. jun 2011 08:16:09 Pridružen od:
3. apr 2010
324 objav
218 7 1
#10

ah par stvari sem čisto spregledal. hvala vseeno za razlago.


všeč(0) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se