Autor Zpráva
Mirecek
Profil *
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
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 *
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
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 *
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 *
Dejte or rovnou do $a.
Mirecek
Profil *
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
U prvního samozřejmě nemůže být OR.
Mirecek
Profil *
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 *
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
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 *
Jeste v php nejsem moc zbehlej. Vubec netusim jak na to. Hodil by se nejakej priklad.

Dik.
Mastodont
Profil
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 *
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.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0