16. august 2004 - 11:51Der er
28 kommentarer og 1 løsning
Søg efter værdi i db med checkboxe
Hej alle.
Så er det nu jeg spørger om nogle kloge hoveder herinde har leget med søgning og checkboxe før? - for så kan de sikkert hjælpe nu...
Jeg har ét tekst felt i en MySQL-database. Jeg har seks checkboxe. Hvis alle checkboxe er "hakket af" og bare én af værdierne passer med teksten i MySQl-databasen, skal posten vises på søgeresultatsiden. Godt nok forklaret? ellers spørg igen!
Da flere af værdierne kan passe, gik jeg ud fra at feltet i databasen vil se ca sådan ud med data:
"rød,blå,grøn" "rød,gul" "hvid"
Dette eks. kunne f.eks passe på de farver man kan fåe en trøje i. OgSå du bliver nød til at bruge like. Det kunne være dhunters kunne forklare hvordan data ser ud i feltet????
ps. Like er ikke en ca. værdi. Det er en præcis værdi, med mulighed for wildcard uden om.
if ( $checkbox1_sat ) { $sogekriterier[] = "tabelfelt_navn = '$formfelt1_verdi'"; } if ( $checkbox2_sat ) { $sogekriterier[] = "tabelfelt_navn = '$formfelt2_verdi'"; } if ( $checkbox3_sat ) { $sogekriterier[] = "tabelfelt_navn = '$formfelt3_verdi'"; } if ( $checkbox4_sat ) { $sogekriterier[] = "tabelfelt_navn = '$formfelt4_verdi'"; } if ( $checkbox5_sat ) { $sogekriterier[] = "tabelfelt_navn = '$formfelt5_verdi'"; } if ( $checkbox6_sat ) { $sogekriterier[] = "tabelfelt_navn = '$formfelt6_verdi'"; } // ovenfor gætter keg på at: // 1) der skal ledes efter strenge // 2) det er en enkelt kolonne i din tabel der skal sammenlignes med
if ( count( $sogekriterier ) == 0 ) {
echo "FEJL: Du skal vælge mindst een ting at søge efter.<br>";
} else {
$where_betingelse = implode( " OR ", $sogekriterier );
$SQL_kommando = " SELECT * FROM dintabel WHERE " . $where_betingelse . " ORDER BY tabelfelt_navn ";
$resultatset = mysql_query( $SQL_kommando ) or die ( "Fejl i søgningen:<br>" .nltobr($SQL_kommando) .mysql_error() );
I tekst feltet kan der stå 6 forskellige ting f.eks.: bil, cykel, bus, tog, taxa, gåben. Der er så en checkbox til hver, altså et til bil, et til cykel osv... Hvis man hakker bil og cykel af, og der kun findes bil i databasen, skal den bare viser alle med bil. Hvis alle felter hakkes af, skal den selvfølgelig vise alt i databasen...
<?php if (isset($_POST['submit'])) { ?> <table> <?php connect... $res = mysql_query("SELECT * FROM `transport` WHERE type='$_POST[bil]' OR type='$_POST[boligtype2]' OR type='$_POST[boligtype3]' OR type='$_POST[boligtype4]' OR type='$_POST[boligtype5]' OR type='$_POST[boligtype6]'") or die (mysql_error()); echo "<p>Forekomst(er) fundet: " . mysql_num_rows($res); while ($row = mysql_fetch_assoc($res)) {
<?php if (isset($_POST['submit'])) { ?> <table> <?php connect... $res = mysql_query("SELECT * FROM `transport` WHERE type='$_POST[bil]' OR type='$_POST[cykel]' OR type='$_POST[bus]' OR type='$_POST[tog]' OR type='$_POST[taxa]' OR type='$_POST[gåben]'") or die (mysql_error()); echo "<p>Forekomst(er) fundet: " . mysql_num_rows($res); while ($row = mysql_fetch_assoc($res)) {
echo "SELECT * FROM `transport` WHERE type='$_POST[bil]' OR type='$_POST[cykel]' OR type='$_POST[bus]' OR type='$_POST[tog]' OR type='$_POST[taxa]' OR type='$_POST[gåben]'"
$query = ("SELECT * FROM `transport` WHERE type='$_POST[bil]' OR type='$_POST[cykel]' OR type='$_POST[bus]' OR type='$_POST[tog]' OR type='$_POST[taxa]' OR type='$_POST[gåben]'") echo mysql_result($query,0);
$query = mysql_query("SELECT * FROM `transport` WHERE type='$_POST[bil]' OR type='$_POST[cykel]' OR type='$_POST[bus]' OR type='$_POST[tog]' OR type='$_POST[taxa]' OR type='$_POST[gåben]'")
Når du sender checkbox værdier i $_REQUEST, $_GET eller $_POST, kommer de med som: $_REQUEST["checkboxnavn"]=on, hvis der er hak i, ellers kommer de slet ikke med. $_GET["checkboxnavn"]=on, hvis der er hak i, ellers kommer de slet ikke med. $_POST["checkboxnavn"]=on, hvis der er hak i, ellers kommer de slet ikke med.
Så du skal nok ud i neget med: foreach($_POST as $key => $value) { if($value == 'on') { $qry_vals[] = "`type`='$key'; } } $qryvals = implode(" OR ", $qry_vals); $forespoergsel = "SELECT * FROM `transport` WHERE " $qryvals; $result = mysql_query($forespoergsel) OR DIE(mysql_error());
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.