09. juni 2008 - 14:10
Der er
12 kommentarer og 1 løsning
problemer med søgefunktion
Jeg har denne søgefunktion men alle felter skal udfyldes før det giver et resultat. Hvordan gør jeg sådan at den udskriver et resultat hvis kun det er de første 2 felter der udfyldt? <?php if(isset($_POST['submit'])) { $searchfra = addslashes($_POST['optfra']); $searchtil = addslashes($_POST['opttil']); $model = addslashes($_POST['model']); $query = mysqli_query($conn,"select * from brugte_biler where pris >'".$searchfra."'and pris <'".$searchtil."' and model = '".$model."'order by pris desc"); echo "Resultatet af din søgning<br /><br />"; while($result=mysqli_fetch_array($query)){ echo $result['pris']."<br /><br />"; echo $result['model']; };}; ?>
Annonceindlæg tema
Offentlig digitalisering
Fra effektivisering til digital suverænitet. Hvordan skaber det offentlige en digital fremtid med AI, sikkerhed og kontrol i centrum?
Hvis du retter: $query = mysqli_query($conn,"select * from brugte_biler where pris >'".$searchfra."'and pris <'".$searchtil."' and model = '".$model."'order by pris desc"); til: $query = mysqli_query($conn,"select * from brugte_biler where pris >'".$searchfra."' or pris <'".$searchtil."' or model = '".$model."' order by pris desc"); behøver alle felter ikke være udfyldt.
nej men på den måde får jeg heller de rigtige resultater frem! der henter den stort set alt fra min database! Det skal gerne være sådan at hvis man ikke vælger en pris fra/til men blot en model så skal alle valgte modeller vises
Prøv at udskrive: "select * from brugte_biler where pris >'".$searchfra."'and pris <'".$searchtil."' and model = '".$model."'order by pris desc"
så kommer det rigtige resultat når alle felter er udfyldt
Du har vel ikke gemt dine priser i et varchar felt i databasen ?? Ellers bør du med det samme lave det om til en float eller int og så har du ikke brig for ' i din sql.
Men lige et forslag til din kode: <?php if(isset($_POST['submit'])) { if( !empty($_POST['optfra'])){ $sqlparts[] = "pris > '".addslashes($_POST['optfra'])."'"; } if( !empty($_POST['opttil']) ){ $sqlparts[] = "pris < '".addslashes($_POST['opttil'])."'"; } if( !empty($_POST['model']) ){ $sqlparts[] = "model = '".addslashes($_POST['model'])."'"; } $sqlsearch = implode(" and ", $sqlparts); $query = mysqli_query($conn,"select * from brugte_biler where $sqlsearch order by pris desc"); echo "Resultatet af din søgning<br /><br />"; while($result=mysqli_fetch_array($query)){ echo $result['pris']."<br /><br />"; echo $result['model']; };}; ?>
hmm der er noget der tyder på jeg har lavet en fejl et sted, men hvor... Den kode kan jeg heller ikke få til at virke udskriver ingenting overhovedet. min pris er sat til int(11) og model er sat til varchar(255)
så bør din sql være uden ' omkring dine priser: <?php if(isset($_POST['submit'])) { $sqlparts = array(); if( !empty($_POST['optfra'])){ $sqlparts[] = "pris > ".intval($_POST['optfra']); } if( !empty($_POST['opttil']) ){ $sqlparts[] = "pris < ".intval($_POST['opttil']); } if( !empty($_POST['model']) ){ $sqlparts[] = "model = '".addslashes($_POST['model'])."'"; } $sqlsearch = implode(" and ", $sqlparts); $query = mysqli_query($conn,"select * from brugte_biler where $sqlsearch order by pris desc"); echo "Resultatet af din søgning<br /><br />"; while($result=mysqli_fetch_array($query)){ echo $result['pris']."<br /><br />"; echo $result['model']; } } ?>
Man kunne lave lidt debug ala: <?php if(isset($_POST['submit'])) { $sqlparts = array(); if( !empty($_POST['optfra'])){ $sqlparts[] = "pris > ".intval($_POST['optfra']); } if( !empty($_POST['opttil']) ){ $sqlparts[] = "pris < ".intval($_POST['opttil']); } if( !empty($_POST['model']) ){ $sqlparts[] = "model = '".addslashes($_POST['model'])."'"; } $sqlsearch = implode(" and ", $sqlparts); $sql = "select * from brugte_biler where $sqlsearch order by pris desc"; echo "Din sql er : $sql"; $query = mysqli_query($conn, $sql) or die( mysqli_error()); echo "Resultatet af din søgning<br /><br />"; while($result=mysqli_fetch_array($query)){ echo $result['pris']."<br /><br />"; echo $result['model']; } } ?>
09. juni 2008 - 18:52
#10
Nu fik jeg det til at virke tusind tak :) Bare lige en ting til, den skriver fejl hvis ingen af felterne er udfyldt hvordan undgår jeg nemmest det? og hvordan giver jeg point herinde :)
09. juni 2008 - 18:56
#11
Det kan løses med: <?php if(isset($_POST['submit'])) { $sqlparts = array(); if( !empty($_POST['optfra'])){ $sqlparts[] = "pris > ".intval($_POST['optfra']); } if( !empty($_POST['opttil']) ){ $sqlparts[] = "pris < ".intval($_POST['opttil']); } if( !empty($_POST['model']) ){ $sqlparts[] = "model = '".addslashes($_POST['model'])."'"; } if( !empty($_POST['model']) || !empty($_POST['opttil']) || !empty($_POST['optfra']) ){ $sqlsearch = "where ".implode(" and ", $sqlparts); } $sql = "select * from brugte_biler $sqlsearch order by pris desc"; echo "Din sql er : $sql"; $query = mysqli_query($conn, $sql) or die( mysqli_error()); echo "Resultatet af din søgning<br /><br />"; while($result=mysqli_fetch_array($query)){ echo $result['pris']."<br /><br />"; echo $result['model']; } } ?>
09. juni 2008 - 18:58
#12
Jeg havde lidt tænkt på det ;-) Og du giver point ved at vi lægger et svar og du acceptere svaret. Hvis du vil give point til flere skal alle have lagt et svar inden du acceptere de svar.
09. juni 2008 - 19:03
#13
så skulle det være i orden - tusind tak for hjælpen
Vi tilbyder markedets bedste kurser inden for webudvikling