| Autor | Zpráva | ||
|---|---|---|---|
| Mirecek Profil * |
#1 · Zasláno: 17. 4. 2007, 00:49:27
Potreboval bych poradit a to:
Mam klasicke checkboxy <input type="checkbox" name="nazev" value="yes" > <input type="checkbox" name="popis" value="yes" > <input type="checkbox" name="neco" value="yes" > atd. a potrebuji, vyhledavat jak v samostatnych sloupcich pokud bude zatrzen jenom jeden nebo dva, tak i ve vsech sloupcich najednou pokud budou zatrzeny vsechny checkboxy. $vysledek = mysql_query("SELECT * FROM table_name WHERE ("???????" like '%$slovo%') AND ("??? tohle by tu byt nemelo pokud je zatrzen jenom jeden checkbox ???" like '%$slovo%') Uz nad tym sedim celej den a nevim kudy kam... Jinak potreboval bych to pres LIKE ne pres MATCH, AGAINST (pres nej to de ale tam mi zas vadi "stopwords". Dekuji za vsechny odpovedi. |
||
| djlj Profil |
#2 · Zasláno: 17. 4. 2007, 07:37:55
Udělej si ještě předtím v php podmínku, kde si do proměnné, dle zaškrtnutých hodnot, uložíš, kde se bude vyhledávat.
|
||
| Mirecek Profil * |
#3 · Zasláno: 17. 4. 2007, 07:49:23
Udělej si ještě předtím v php podmínku, kde si do proměnné, dle zaškrtnutých hodnot, uložíš, kde se bude vyhledávat.
No prave to jsem skousel, ale vubec mi to nechtelo slapat. Asi jsem nekde neco delal spatne. Nemoh bys byt konkretnejsi. Nejakej priklad dane podminky a promenne. Dik. |
||
| djlj Profil |
#4 · Zasláno: 17. 4. 2007, 07:56:21
if($_POST['nazev']=="yes"){
$a=" nazev LIKE ... "; } a tak podobně… Samozřejmě si to musíš i ošetřit pokud nebude zaškrtnuto nic… |
||
| Mirecek Profil * |
#5 · Zasláno: 17. 4. 2007, 08:49:03
No jo jenom pokud dam pak
$vysledok = mysql_query("SELECT * FROM artikly WHERE ($a) OR ($t) OR ($l) OR ($i) OR ($p)"); tak to nejede. Protoze pokud zatrhnu pouze napr. $i nebo jenom $a a pod., tak mi hodi Warning: na tomhle radku. On pak totiz ceka na dalsi OR jenomze tam uz nic nedostane. Tedy alespon myslim, ze to tak je, jenom nevim co s tim. |
||
| Kajman_ Profil * |
#6 · Zasláno: 17. 4. 2007, 08:54:01
Dejte or rovnou do $a.
|
||
| Mirecek Profil * |
#7 · Zasláno: 17. 4. 2007, 09:04:46
1.
if($_GET['fautor']=="yes"){ $a="OR autor LIKE '%$slovo%'"; } $vysledok = mysql_query("SELECT * FROM artikly WHERE $a $t $l $i $p"); 2. if($_GET['fautor']=="yes"){ $a="OR (autor LIKE '%$slovo%)'"; } $vysledok = mysql_query("SELECT * FROM artikly WHERE $a $t $l $i $p"); no ani 1 ani 2 mi vysledek vubec nezobrazi. Asi sem uz fakt pitomej. |
||
| Peca Profil |
#8 · Zasláno: 17. 4. 2007, 09:45:07
U prvního samozřejmě nemůže být OR.
|
||
| Mirecek Profil * |
#9 · Zasláno: 17. 4. 2007, 09:52:21
To je jasne.
To je jeden s problemu, protoze prvni muze byt kterykoli. Pokud bude zatrzeno pouze $p tak bude prvni. Ale nejede to ani kdyz je prvni bez OR a druhy s OR. Ja uz fakt nevim... |
||
| Mirecek Profil * |
#10 · Zasláno: 17. 4. 2007, 10:09:34
Tek mne jeste napadlo dat prvni
if($_GET['f0']=="yes"){ $q="(nic LIKE '%$slovo%')"; } kde je prazdna tabulka a pak by nemnel byt problem s prvnim a vsechni ostatni budou s OR if($_GET['fautor']=="yes"){ $a="OR (autor LIKE '%$slovo%')"; } ale problem je ze pokud dam $result = mysql_query("SELECT Count(*) FROM artikly WHERE $q $a $t $l $i $p"); $pocet = mysql_Result($result, 0); tak mi na tomhle radku $pocet = mysql_Result($result, 0); hlasi warning takze zapis $result = mysql_query("SELECT Count(*) FROM artikly WHERE $q $a $t $l $i $p"); bude asi spatne protoze kdyz to vypisu klasicky $result = mysql_query("SELECT Count(*) FROM artikly WHERE ("autor" like '%$slovo%') OR ........."); tak s tim problem neni. |
||
| Mastodont Profil |
#11 · Zasláno: 17. 4. 2007, 16:01:50
No a co postupně pro zaškrtnuté checkboxy ukládat do pole "název LIKE '%$slovo%'" a pak to spojit přes implode a jako oddělovač použít " OR " ??
|
||
| Mirecek Profil * |
#12 · Zasláno: 17. 4. 2007, 16:20:29
Jeste v php nejsem moc zbehlej. Vubec netusim jak na to. Hodil by se nejakej priklad.
Dik. |
||
| Mastodont Profil |
#13 · Zasláno: 17. 4. 2007, 16:26:37
No asi takhle:
if($_GET['fautor']=="yes") { $where[] = "(autor LIKE '%$slovo%')"; } .... if (count($where)) > 1 { $finalwhere = implode( " OR ", $where} A pokud bude count = 1, tak $finalwhere = $where[0] Píšu to z hlavy, bez testů. |
||
| Mirecek Profil * |
#14 · Zasláno: 17. 4. 2007, 17:10:16
Jo bajecne. Uz to jede. Jinak bylo to:
if ((count($where)) > 1) { $finalwhere = implode( " OR ", $where) ;} if ((count($where)) == 1) { $finalwhere = $where[0] ;} A slape to jak ma. Jeste jednou dik. |
||
|
Časová prodleva: 19 let
|
|||
Toto téma je uzamčeno. Odpověď nelze zaslat.
0