Avatar billede lraj Nybegynder
21. april 2009 - 19:51 Der er 8 kommentarer og
2 løsninger

While løkke

Hej Eksperter.
Jeg har et lille problem med en while løkke. For lige at vise koden med det samme:

if($_GET[kuntitler]!="") {
if($_GET[kategori1]=="on" OR $_GET[kategori2]=="on" OR $_GET[kategori3]=="on" OR $_GET[kategori4]=="on" OR $_GET[kategori4]=="on" OR $_GET[kategori5]=="on") {
$thisin = "AND titlenavn LIKE '%$_GET[titlenavn]%' ";
}
else {
$thisin = "titlenavn LIKE '%$_GET[titlenavn]%' ";
}
}
else {
if($_GET[kategori1]=="on" OR $_GET[kategori2]=="on" OR $_GET[kategori3]=="on" OR $_GET[kategori4]=="on" OR $_GET[kategori5]=="on" OR $_GET[kategori6]=="on") {
$thisin = "AND titlenavn LIKE '%$_GET[titlenavn]%' OR info LIKE '%$_GET[titlenavn]%' OR andetinfo LIKE '%$_GET[titlenavn]%' ";
}
else {
$thisin = "titlenavn LIKE '%$_GET[titlenavn]%' OR info LIKE '%$_GET[torrentname]%' OR andetinfo LIKE '%$_GET[titlenavn]%' ";
}
}

$select_sange = mysql_query("SELECT * FROM sange WHERE ".$queryy1."".$queryy2."".$queryy3."".$queryy4."".$queryy5."".$queryy6."".$thisin." ORDER BY tilfojettid DESC LIMIT 30");
while($row_sange=mysql_fetch_array($select_sange)) {



Mine $queryy1,$queryy2 osv osv er noget længere oppe i koden som afgører om hvor mange "$queryy6 = "OR kategori = 'Andet'" osv. der skal på. Når jeg fjerner ".$thisin." fra min while løkke finder den fint udelukkende det der ligger i de kategorier, men når jeg sætter $thisin på så selvom jeg sætter hak i kategori2, og sangen ligger i kategori1 så er den fuldstændig ligeglad med kategorierne, dog viser  den fint hvis der ligger noget i "titlenavn", "info" eller "andetinfo" ... hvordan kan jeg gøre således at begge ting fungere på samme tid?


- Håber jeg har kunnet forklare det ordenligt, synes selv det lyder lidt forvirrende, men ved ikke hvordan det kan forklares bedre. I er selvfølgelig velkomne til at spørge ind til det, hvis der er noget i er i tvivl om.
Avatar billede majbom Novice
21. april 2009 - 20:03 #1
nogle gange starter din $thisin med "titlenavn..." og andre gange med "AND titlenavn...", det giver ikke rigtig mening, hvordan slutter din $queryy6?
Avatar billede dkfire Nybegynder
21. april 2009 - 20:09 #2
Start med at sætte "or die((mysql_error())" efter din mysql_query().

$select_sange = mysql_query("SELECT * FROM sange WHERE ".$queryy1."".$queryy2."".$queryy3."".$queryy4."".$queryy5."".$queryy6."".$thisin." ORDER BY tilfojettid DESC LIMIT 30") or die((mysql_error());

Dernæst prøv at udskrive den fulde sql sætning som du får dannet:

echo "SELECT * FROM sange WHERE ".$queryy1."".$queryy2."".$queryy3."".$queryy4."".$queryy5."".$queryy6."".$thisin." ORDER BY tilfojettid DESC LIMIT 30";
Avatar billede lraj Nybegynder
21. april 2009 - 20:28 #3
Splazz -> Jo det gør. Den sætter AND på, hvis der er noget checked af, den sætter ikke noget på hvis feltet "alle" er checked.

Får udskrevet:

SELECT * FROM sange WHERE kategori = 'Videolyd' AND title LIKE '%pink%' OR info LIKE '%pink%' OR andetinfo LIKE '%pink%' ORDER BY tilfojettid DESC LIMIT 30
Avatar billede lraj Nybegynder
21. april 2009 - 20:30 #4
Lige for at give et eksempel mere, hvis der er noget checked af:

SELECT * FROM sange WHERE kategori = 'Videolyd' OR kategori = 'apxlyd' OR kategori = 'badlyd' AND title LIKE '%pink%' OR info LIKE '%pink%' OR andetinfo LIKE '%pink%' ORDER BY tilfojettid DESC LIMIT 30
Avatar billede majbom Novice
21. april 2009 - 20:55 #5
du skal have nogle paranteser rundt om

SELECT * FROM sange WHERE (kategori = 'Videolyd' OR kategori = 'apxlyd' OR kategori = 'badlyd') AND (title LIKE '%pink%' OR info LIKE '%pink%' OR andetinfo LIKE '%pink%') ORDER BY tilfojettid DESC LIMIT 30
Avatar billede lraj Nybegynder
21. april 2009 - 21:10 #6
Tusinde tak :-) Det funker.
Lig et svar :-)
Avatar billede majbom Novice
21. april 2009 - 21:28 #7
velbekomme :)

synes nu at dkfire skal have sin bid af kagen, da han fik dig til at smide den genererede query ud :)
Avatar billede lraj Nybegynder
21. april 2009 - 21:46 #8
Selvfølgelig, så dkfire du må også godt ligge et svar :)
Avatar billede dkfire Nybegynder
21. april 2009 - 22:09 #9
Jamen det kommer her så ;-)
Og jeg takker da.
Avatar billede majbom Novice
22. april 2009 - 06:14 #10
tak for point :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester