Variablen übernehmen
lima-city → Forum → Programmiersprachen → PHP, MySQL & .htaccess
abfrage
auswahl
code
knopfdruck
kommando
lebensform
mais
option
ordern
pflanze
problem
schnelle hilfe
spalte
spalten
suchbegriff
suche
tabelle
taxonomie
text
trennen
-
Hi,
schreibe gerade an einer Datenbanksuche. Ich habe ein Skript das eine Formularseite darstellt un den Suchbegriff auf Knopfdruck an ein Skript das daraus die SQL-Suche bildet weitergibt.
Mein Problem ist das dass 2te Skript die Variable nicht erkennt.
erstes Skript
printf("<form action=\"2.php\" method=\"post\">"); printf("<input type=\"text\" name=\"suche1\"> Stichwortsuche <br>"); printf("<input type=\"submit\" value=\"Suchen\">"); printf("</form>");
2tes Skript (teil)
$kommando = "select taxo_deutsch from taxonomie "; $kommando .= "where taxo_deutsch like \"%$suche1%\" "; $kommando .= "order by taxo_deutsch";
Ausserdem würde ich in der Suche gerne mit dem select-Elementarbeiten.
zB.
printf("<select name=\"suche14\" size=\"1\">"); printf("<option selected value=\"1\"> 1 </option>"); printf("<option value=\"2\"> 2 </option>"); printf("<option value=\"3\"> 3 </option>"); printf("</select> Lebensform <br>");
Wie kann ich dort Daten aus einer Tabellen-Spalte anzeigen lassen, statt den fest vorgegebenen Auswahlpunkten(in dem Fall 1,2,3)?
Mfg djschorsch -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage
-
Hast du die Variable auch im 2ten-Skript übernommen?
Du versendest sie ja per post, also muss im zweiten Skript noch eine Zeile rein die so aussieht:
$suche1 = $_POST["suche1"];
Beitrag zuletzt geändert: 11.10.2010 16:57:12 von alfr3d -
thx, für die schnelle Hilfe. Jemand ne lösumg für das 2te Problem?
-
Du hast ja irgendwo deine Abfrage die in etwa so aussehen sollte/könnte:
<?php echo "<select name=\"suche14\" size=\"1\">"; $select = mysql_query("select spaltenname from tabellenname where spaltenname like \"%$suche1%\" "); while($row = mysql_fetch_object($select)) { echo "<option selected value=\"1\">$row->spaltenname</option>"; } ?>
Ungetestet.... -
Funktioniert
echo ("<select name=\"suche14\" size=\"1\">"); $select = mysql_query("select spalten from tabelle where spalte like \"%$suche1%\" "); while($row = mysql_fetch_object($select)) { echo "<option selected value=\"1\">$row->spalte</option>" ; } echo ("</select> TEXT <br>");
Danke schön.
Beitrag zuletzt geändert: 11.10.2010 19:25:05 von djschorsch -
$zaehler = 1; echo ("<select name=\"suche14\" size=\"1\">"); $select = mysql_query("select spalten from tabelle where spalte like \"%$suche1%\" "); while($row = mysql_fetch_object($select)) { echo "<option selected value=\"$zaehler\">$row->spalte</option>" ; $zaehler++; } echo ("</select> TEXT <br>");
Dadurch erhöht sich der Wert (value) der Optionen bei jedem Schleifendurchlauf um 1. Somit hat jede Option einen eindeutigen Wert, nur falls du das benötigen solltest ;) -
Wie kann ich jetzt in der Auswahl noch ein Leerfeld erzeugen, so das man auch nichts auswählen kann?
-----
Eine weitere Frage ist, wie kann ich mehrere Suchworte trennen ( zB. Mais Pflanze), so das einzeln nach Ihnen gesucht wird ( Mais, Pflanze)? Da in der Datenbank ja nur Mais steht und ich trotzdem ein Ergebniss will.
<?php $suche1 = $_POST['suche1']; $kommando = "select taxo_deutsch, taxo_englisch, taxo_gattung, taxo_art "; $kommando .= "from taxonomie "; $kommando .= "where ((taxo_deutsch like \"%$suche1%\") OR (taxo_englisch like \"%$suche1%\") OR (taxo_art like \"%$suche1%\") OR (taxo_gattung like \"%$suche1%\")) "; $kommando .= "order by taxo_deutsch"; ...
Beitrag zuletzt geändert: 12.10.2010 12:57:35 von djschorsch -
Stimmt eigtl schon wie du das machst, musst du das OR benutzen...funktioniert die Abfrage so nicht?
-
Indem Du mit explode() auftrennst.
Also bei deinem Beispiel "Mais Pflanze" trenne ich das wort bei einem leerzeichen auf:
Beispielcode:
<?php $suche1="Mais Pflanze mit Blättern"; if (strpos($suche1, " ") !== false) { $taxo = "taxo_deutsch"; $suchdas=explode(" ",$suche1); $suchtext = "($taxo like \"%".implode("%\") OR ($taxo like \"%",$suchdas )."%\")"; } echo $suchtext; ?>
Echo gibt folgendes aus:
(taxo_deutsch like "%Mais%") OR (taxo_deutsch like "%Pflanze%") OR (taxo_deutsch like "%mit%") OR (taxo_deutsch like "%Blättern%")
Getestet & für gut befunden -
Diskutiere mit und stelle Fragen: Jetzt kostenlos anmelden!
lima-city: Gratis werbefreier Webspace für deine eigene Homepage