$where = ""; if (count($whereArr)>0) { $where .= "WHERE " . implode(" or ", $whereArr); // alternativt " and ".
}
$sql = "SELECT * FROM medlem $where"; //echo "DEBUG: " . $sql . "<br>"; $query = mysql_query($sql) or die(mysql_error());
$query = mysql_query("SELECT * FROM medlem $where"); if (mysql_num_rows($query) > 0) { while ($row = mysql_fetch_assoc($query)) { echo "<center><table border=0 width=300> <tr><td>".$row["fornavn"]." ".$row["efternavn"]."</td></tr> <tr><td>".$row["efternavn"]."</td></tr> <tr><td>".$row["adr"]."</td></tr> <tr><td>".$row["post"]."  ".$row["town"]."</td></tr> <tr><td>Telefon ".$row["tlf"]."</td> :<td>Mobil ".$row["mtlf"]."</td></tr> <tr><td>Mail  ".$row["mail"]."</td><hr></tr></center>"; } } else { // Udtræk default-resultat: $sql = "SELECT * FROM medlem WHERE id=1";
$query = mysql_query("SELECT * FROM medlem $where");
// Og så koden for at vise oplysningerne her... echo "<table border=0 width=300> <tr><br><br><td>Der er ingen medlemmer der matcher din søgening.</td></tr></table>"; }
Ok! Det virker ved søgning! Men hvis man søger men blanke felter kommer den alligevel. (hele listen) Altså efter sidste må "else" skal der også skulle ændres noget (har prøvet) Enten skal der ikke vise noget vis der ikke indtastes eller også skal id 1 også væk her. Kan du også løse den?
$where .= "WHERE id<>1 AND (" . implode(" or ", $whereArr) . ")"; // alternativt " and ". }
$sql = "SELECT * FROM medlem WHERE id<>1";
$query = mysql_query($sql) or die(mysql_error());
$query = mysql_query("SELECT * FROM medlem $where"); if (mysql_num_rows($query) > 0) { while ($row = mysql_fetch_assoc($query)) { echo "<center><table border=0 width=300> <tr><td>".$row["fornavn"]." ".$row["efternavn"]."</td></tr> <tr><td>".$row["efternavn"]."</td></tr> <tr><td>".$row["adr"]." ".$row["nr"]."</td></tr> <tr><td>".$row["post"]." ".$row["town"]."</td></tr> <tr><td>Telefon ".$row["tlf"]."</td> <td>Mobil ".$row["mtlf"]."</td></tr> <tr><td>Mail  ".$row["mail"]."</td><hr></tr></center>"; } } else { // Udtræk default-resultat: $sql = "SELECT * FROM medlem WHERE id<>1";
$query = mysql_query($sql) or die(mysql_error());
// Og så koden for at vise oplysningerne her... echo "<table border=0 width=700 height='100%'> <tr><td>Der er ingen medlemmer der matcher din søgening.</td></tr></table>"; }
Den kan jeg ikke greje! Det virker fint hvis man søger på ord indeholdt i id 1, så kommer der ingenting! Med hvis jeg søger blank! så kommer hele listen og her er id 1 med på. jeg har prøvet at putte - id<>1 - ind flere steder, f.eks.: $sql = "SELECT * FROM medlem WHERE id<>1 AND (" . $ekstraKriterie . ")"; fejl! fejl! fejl!fejl! fejl! fejl!fejl! fejl! fejl!
Alternativt ville det være ligeså fint, hvis der bare returnerer "Du mangler at skrive søgeord" når man søger med alle tre felter blanke. Men det er nok lidt mere omstændigt, når man samtidig skal kunne søge med bare et felt.
$where = ""; if (count($whereArr)>0) { $where .= "WHERE id<>1 AND (" . implode(" or ", $whereArr) . ")"; // alternativt " and ". }
$query = mysql_query ("SELECT * FROM medlem $where"); if (mysql_num_rows($query) > 0) { while ($row = mysql_fetch_assoc($query)) { echo "<center><table> <tr><td><hr>".$row["fornavn"]." ".$row["efternavn"]."</td></tr> <tr><td>".$row["adr"]." ".$row["nr"]." </td></tr> <tr><td>".$row["post"]." ".$row["town"]."</td></tr> <tr><td>Telefon ".$row["tlf"]." Mobil ".$row["mtlf"]."</td></tr> <tr><td>Mail  ".$row["mail"]."<hr></td></tr></table></center>"; } } else { // Og så koden for at vise oplysningerne her... echo " Der er ingen medlemm der matcher din søgning."; }
Ja som du kan se i 12/09-2007 22:42:07 er det $where der henter det der skal søges på, og søger man blanke felter, hentes alt. Jeg ville jo svært gerne have at id 1 altid udelades, som det korrekt gør ved konkret søgning :-)
Der skal jo altid være en WHERE id<>1 med - denne del skal du derfor ikke putte ind i din $where-variabel; den skal derimod allerede være med i den helt basale SQL som du bygger vidre på.
Ved konkret søgnig må den ikke vise id 1 (det virker med - sql = "SELECT * FROM medlem $where"; Ved søgnig uden indtastning = alle tre felter blanke, hentes alle poster incl. id 1 (det er den jeg gerne vil have væk)
Som jeg skrev i 12/09-2007 17:40:42 var det kun hvsi der var ekstra kriterier at de skulle AND'es på.
En alternativ løsning kunne dog være at sørge for at $where aldrig var tom. F.eks. kunne du sætte $where til "1 = 1" eller noget i den stil. Så bliver SQL'en nemlig til:
Men jeg syntes du skal lægge et svar, Jeg har jo trods alt allerede fået løst noget af problemmet, og da jeg er både stædige og dum! så bliver jeg nok ved til det lykkedes.
Okay jeg har fået klaret det på anden måde. Og det næsten bedre for mig.
jeg satte LIMIT 0, 1 "; bag på, det medfører at man ikke kan søge blank, dvs. når man gør det så kommer KUN id 1 (det er admin) det benytter jeg så til at fortælle at man skal indtaste et søgeord, jeg bruger stadig id<>1 så der kan ikke søges på det. Det løste så et mit andet problem, nemlig at jeg var lidt ked af at man fik en liste så lang som en arm, ved blank søgning.
Takker for hjælpen.
Synes godt om
Ny brugerNybegynder
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.