FAQ |
Kalender |
![]() |
#1 | ||
|
|||
Medlem
|
Jag försöker hämta information från 1 table basserat på sökning i 3 tabeller det går bra så långt att bara recepten med det sökord jag har angivit dyker upp och den visar också bara de recept där dela=1 men när det sen kommer till altId ignoreras det helt, den visar recepten från alla alternativ och inte bara det alternativ jag har angett. Vad gör jag för fel? och hur gör man om man har flera altId.Kan man lägga ihop resultatet från flera sökningar till en när man loppar igenom altId arrayen? Jag har gett mig in på lite överkurs här för mig men det är ju så man lär sig.
tblRecept:allmän receptinformation tblIngrediens: InId, recId, Ingrediens tblReceptalt: recaltId, recId, altId SELECT DISTINCT tblRecept. * FROM ( ( tblRecept INNER JOIN tblReceptalt ON tblRecept.recId = tblReceptalt.recId) INNER JOIN tblIngrediens ON tblRecept.recId = tblIngrediens.recId) WHERE tblRecept.beskrivning LIKE '%".$sok."%' OR tblIngrediens.ingrediens LIKE '%".$sok."%' OR tblRecept.recnamn LIKE '%".$sok."%' AND tblRecept.dela =1 AND tblReceptalt.altId ='".$val."' ORDER BY tid DESC LIMIT 0,16 |
||
![]() |
![]() |
![]() |
#2 | ||
|
|||
Medlem
|
Japp en parantes runt OR frågorna löste problemet. Jag som har slitit en hel dag..... Du hjälpe mig Johan S
Senast redigerad av Fia den 2010-08-31 klockan 10:08 |
||
![]() |
![]() |
![]() |
#3 | ||
|
|||
Medlem
|
Men den där när jag har fler altId? om jag kör
$dataloop = mysql_query($resultatloop);//resultatloop är frågan där uppe och sen kör while($row = mysql_fetch_array($dataloop)){ så går det bra men jag försökte att göra $dataloop .= mysql_query($resultatloop); så går det inte. Jag försöker lägga ihop resultatet från flera frågor till en innan jag visar dem, någon som vet hur man gör det? |
||
![]() |
![]() |
![]() |
#4 | ||
|
|||
Medlem
|
Då ber jag om ursäkt att jag raderade inlägget, jag stirrade mig blind på den senare frågeställningen! Hur söker du med altId, vad är dess funktion? Kanske är det aktuellt att gruppera på denna men jag känner inte till din metodik.
|
||
![]() |
![]() |
![]() |
#5 | ||
|
|||
Medlem
|
ett recept kan ha flera alternativ som billigt, snabbt, GI mm. jag vill att man ska kunna söka genom att ange ett sökord och välja inom vilka alternativ man vill söka inom. alltså vet man inte innan hur många alternativ som kommer att sökas igenom. alternativen kommer som en array när formen är skickad och jag loppar igenom den arrayen och kör en sql fråga för varje loop.
while (list ($key,$val) = @each ($alternativ)) { Men som det är nu får jag ju bara ut resultatet från sista frågan efter som frågan skrivs över för varje loop. Jag skulle vilja lägga ihop resultaten från alla frågorna till en innan jag då loopar ut dem på sidan. Kanske jag tänker helt fel från början och borde gör på ett helt annat sätt men det var bara hur min tankebana fick ihop det. |
||
![]() |
![]() |
![]() |
#6 | ||
|
|||
Medlem
|
Jag tror jag har kommit på det om jag bygger sql frågan i loopen i stället, ska prova det nu
|
||
![]() |
![]() |
![]() |
#7 | ||
|
|||
Medlem
|
Så här blev det
$resultatloop="SELECT DISTINCT tblRecept. * FROM ( ( tblRecept INNER JOIN tblReceptalt ON tblRecept.recId = tblReceptalt.recId) INNER JOIN tblIngrediens ON tblRecept.recId = tblIngrediens.recId) WHERE"; //****OM Aternativ är valda Loopa igenom if(isset($alternativ)){ $checkKatId=0; while (list ($key,$val) = @each ($alternativ)) { //OM kategori if($val<=10){ if ($checkKatId==0){ $resultatloop.=" (katId = '".$val."'"; $checkKatId=1; }else{ $resultatloop.=" OR katId = '".$val."'"; } //OM Alternativ } elseif($val>10){ if ($checkKatId==0){ $resultatloop.=" (tblReceptalt.altId ='".$val."'"; $checkAltId=1; }else{ $resultatloop.=" AND tblReceptalt.altId ='".$val."'"; }//end if $checkKatId=0 }//end elseif }//end while $resultatloop.=") AND"; }//end Alternativ $resultatloop.=" ( tblRecept.beskrivning LIKE '%".$sok."%' OR tblRecept.recnamn LIKE '%".$sok."%' OR tblIngrediens.ingrediens LIKE '%".$sok."%' ) AND tblRecept.dela =1 ORDER BY tid DESC LIMIT ".$start.",".$limit.""; //print $resultatloop; $dataloop = mysql_query($resultatloop); |
||
![]() |
![]() |
Svara |
|
|