Autor Zpráva
r0me0
Profil
Zdravím,

řeším problém s formulářem, ve kterém si pomocí selectu filtruju záznamy. Problém je v tom, že záznam(poptávka) v db může mít více okresů a ty jsou uloženy ve stylu Xid_prvniho_okresuXXid_druheho_okresuX. Pokud je tam uložen jen jeden okres, tak to není problém. Takže já si v selectu vyberu například Zlín(id=5, takže do sql dotazu se mi vloží WHERE okres = 5) a chci, aby se mi vybraly všechny poptávky, které mají v položce okres pětku. Takže třeba i záznam X3XX5XX8XX10X. ALe jak to udělat? Děkuju.
Majkl578
Profil
V SQL dotazu můžeš použít IN
SELECT foo FROM bar where baz IN (1, 2, 3)

$s = 'X3XX5XX8XX10X';
preg_match_all('~X([0-9]+)X~', $s, $m);
var_dump($m[1]);
echo 'SELECT foo FROM bar WHERE baz IN (' . implode(', ', $m[1]) . ')';
Aichi
Profil
Majkl578:
myslím, že tohle nepotřebuje. r0me0 to má nejspíš uloženy prasácky v SQLku jako jeden string :)

Jestli se nemýlím, pak by ti měl vyhovovat dotaz:

SELECT foo FROM bar WHERE baz LIKE '%X5%'
r0me0
Profil
Majkl578:
děkuji za odpověď, tohle mě napadlo také, bohužel to však neřeší můj problém.
Aichi:
No to je úplně geniální a přitom tak jednoduché, věděl jsem, že to nějak půjde :) Samozřejmě je to uloženo prasácky jako jeden string, což ovšem není moje práce :) Díky moc!

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: