Dynamische liste aus mysql Datenbank

dline

Mitglied
Hallo alle zusammen,
ich habe mal wieder eine Frage.

Aufgabenbeschreibung:
Ich habe eine MySql Datenbank...soweit funktioniert alles
Ich habe PHP Seiten mit denen ich die Daten der Datenbank manipulieren kann.
Nun möchte ich Suchfunktionen in die Website einbauen.
Es soll z.B. möglich sein nach Ländern zu suchen.

Ich möchte quasi eine Kombobox die mit allen in der Datenbank vorhandenen Ländern gefüllt ist. Selbstverständlich sollen gleiche Länder nur einmal angezeigt werden.


Es sollen noch weitere Suchoptionen verwendet werden. Zum schluss soll dann aus den ausgewählten Optionen ein SQL String zusammen gebaut werden.


ich brauche wohl ein formular, aber wie gehts weiter
kennt einer von euch ein gutes Handbuch oder eine gute Anleitung.
Oder kann mir einer von euch einen Anfang nennen :)

Ihr helft mir damit richtig weiter.

Vielen Dank für euren Support
Grüße dline
 
Einfache Länder bekommst du z.b. durch select distinct länder from....

Zu der Suche, ich würde ein Formular so machen das du ein textfeld hast. Dort gibst du deine Suchwörter ein. Entweder machst du die Steuerung vcon wegen und und oder durch eine selectbox, was sich dann aber auf alle wörter auswirkt oder eben durch + und - oderwas auch immer zwischen die wörter tippen lässt.
Des weiteren machst du noch checkboxen, für die Datenfelder, in welchen man suchen können soll (sofern du hier eine Selektion vornehmen willst).

Anhand dieser Informationen kannst du dir dann wunderbar dein Suchstatement zusammenbauen.
Eventuell noch ne checkbox ob ziwschen gross-und Kleinschreibung unterschieden werden soll...
 
hi, danke für die Idee . Ich versuch das ganze mal umzusetzen. Da ich kein PHP pro bin, werde ich mich bestimmt mit Codefragen hier in dem Thread zurückmelden :)

grüße dline
 
Hi, also ich habe nun erste Probleme mit dem Code:
1)
Erfolg: die Kombobexen werden ausgegeben
Problem: Die Werte sind doppelt in der Datenbank z.B.: Deutschland,Deutschland,Schweiz,Oesterreich,Schweiz...


2)
Wie kann ich nun die ausgewählten Werte an ein SQL Statement übergeben?

PHP:
<?php require_once('../../Connections/gp1dd.php'); ?>
<?php
mysql_select_db($database_gp1dd, $gp1dd);
$query_sqlview = "SELECT * FROM tbl_schein";
$sqlview = mysql_query($query_sqlview, $gp1dd) or die(mysql_error());
$row_sqlview = mysql_fetch_assoc($sqlview);
$totalRows_sqlview = mysql_num_rows($sqlview);
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Suche</title>
</head>

<body>
<div align="center">Suchformular
</div>
<form action="" method="post" name="sqlform" id="sqlform">
  <table border="0">
    <tr>
      <td>Wert</td>
      <td>&nbsp;</td>
      <td><select name="select">
        <?php
do {  
?>
        <option value="<?php echo $row_sqlview['dbl_wert']?>"><?php echo $row_sqlview['dbl_wert']?></option>
        <?php
} while ($row_sqlview = mysql_fetch_assoc($sqlview));
  $rows = mysql_num_rows($sqlview);
  if($rows > 0) {
      mysql_data_seek($sqlview, 0);
	  $row_sqlview = mysql_fetch_assoc($sqlview);
	  
  }
?>
      </select></td>
    </tr>
    <tr>
      <td>Land</td>
      <td>&nbsp;</td>
      <td><select name="select">
        <?php
do {  
?>
        <option value="<?php echo $row_sqlview['txt_Land']?>"><?php echo $row_sqlview['txt_Land']?></option>
        <?php
} while ($row_sqlview = mysql_fetch_assoc($sqlview));
  $rows = mysql_num_rows($sqlview);
  if($rows > 0) {
      mysql_data_seek($sqlview, 0);
	  $row_sqlview = mysql_fetch_assoc($sqlview);
  }
?>
      </select></td>
    </tr>
    <tr>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
      <td>&nbsp;</td>
    </tr>
  </table>
  
</form>
</body>
</html>
<?php
mysql_free_result($sqlview);
?>

vielen Dank für eure Hilfe.

grüße dline
 
dline hat gesagt.:
Hi, also ich habe nun erste Probleme mit dem Code:
1)
Erfolg: die Kombobexen werden ausgegeben
Problem: Die Werte sind doppelt in der Datenbank z.B.: Deutschland,Deutschland,Schweiz,Oesterreich,Schweiz...


2)
Wie kann ich nun die ausgewählten Werte an ein SQL Statement übergeben?

[...]

vielen Dank für eure Hilfe.

grüße dline

zu 1. SELECT DISTINGT

zu 2. Du schreibst ne Action in dein Form-Tag, und schreibst dann in dem Script dann das entsprechende Query.

Und außerdem: Was soll denn das:
Code:
  $rows = mysql_num_rows($sqlview); 
  if($rows > 0) { 
      mysql_data_seek($sqlview, 0); 
      $row_sqlview = mysql_fetch_assoc($sqlview);

Und
Code:
$row_sqlview = mysql_fetch_assoc($sqlview); 
...
do {   
...
} while ($row_sqlview = mysql_fetch_assoc($sqlview));
kannst du auch einfacher durch
Code:
while ($row_sqlview = mysql_fetch_assoc($sqlview))
{
...
}
haben.
 
zu 1.) DISTINCT

zu 2.) Letzteres muss sogar sein, da eine sog. Fussgesteuerte Schleife immer mindestens 1 mal den Vorgang ausführt, was aber nicht sein soll, wenn nix gefunden wird o.ä.

Die Werte kannst du z.b. per Get oder eben per Formular Post übergeben und im Script über die superglobalen Arrays $_POST $_GET oder $_REQUEST auslesen. Ansonsten schau dir für sowas mal ein paar Tutorials an, da es eigentlich Anfängersachen sind (ohne es böse zu meinen).
 
hi, das hat mir der Dreamweaver zusammengebaut.

Hmm also das Select Distinct funtktioniert irgendwie nicht.
Das muss doch in folgende Zeile integriert werden.
PHP:
$query_sqlview = "SELECT Distinct * FROM tbl_schein";


Vielen Dank für die weiter Hilfe. Ist es möglich die Komboboxen so voneinander abhängig zu machen, das nachdem ich das Land ausgewählt habe in der Ort Kombo nur noch orte angezeigt werden die auch in Deutschland liegen.


Vielen Dank im voraus. Liebe Grüße dline

@Ben:
Thx ich lese mal ein bißchen
 
dline hat gesagt.:
hi, das hat mir der Dreamweaver zusammengebaut.

Hmm also das Select Distinct funtktioniert irgendwie nicht.
Das muss doch in folgende Zeile integriert werden.
PHP:
$query_sqlview = "SELECT Distinct * FROM tbl_schein";

DISTINCT entfernt alle doppelten zeilen aus dem ergebnis. Wenn es keine doppelten Zeilen gibt, wird auch nichts entfernt. Was genau steht denn in der Tabell tbl_schein ?

dline hat gesagt.:
Vielen Dank für die weiter Hilfe. Ist es möglich die Komboboxen so voneinander abhängig zu machen, das nachdem ich das Land ausgewählt habe in der Ort Kombo nur noch orte angezeigt werden die auch in Deutschland liegen.


Vielen Dank im voraus. Liebe Grüße dline

@Ben:
Thx ich lese mal ein bißchen

Ja, das ist möglich. Am schönsten mit JavaScript.
 
Hi, also ich habe mir das ganze jetzt so überlegt.
Bei klick auf den Submit Button soll eine Seite Erbenissseite aufgerufen werden. Die Werte für das SQL Statement werden mit der URL übergeben.

Nun stehe ich vor 2 Problemen
a) wie rufe ich die suche_ergebnis.php auf?
bei klick auf den Submit button. könnte das so funktionieren:
PHP:
if (submit)
{
$ergebnis =  "suche_ergebnis.php?wert=$sqlview[txt_wert]?ort=$sqlview[txt_ort]?$land=$sqlview[txt_land]";

Header(sprintf(Location: $ergebnis));
}

meine frage hierbei: Werden die ausgewählten Elemente aus den Komboboxen übergeben?

@Oliso sieht die Tabelle aus:
PHP:
dbl_scheinID
dbl_OrtID
dbl_ausstellerID
dbl_wert
txt_sonstigeID
txt_ort
txt_Land
txt_aussteller
dbl_datum
txt_wasserzeichen
txt_kontrolltext
txt_art
txt_beschreibung
dbl_tiefpreis
dbl_regionalpreis
dbl_preis
txt_beschreibung_kurz
tint_frei
url_bildurl
 
Du hast doch in deinem Formular ein Parmeter action="", dort gibst du des entsprechende Script an. Oder von wo aus willst du das Script aufrufen?

zu folgendem Code, weisst du was du da machst?
PHP:
if (submit)
{
$ergebnis =  "suche_ergebnis.php?wert=$sqlview[txt_wert]?ort=$sqlview[txt_ort]?$land=$sqlview[txt_land]";

Header(sprintf(Location: $ergebnis));
}

Ist submit ne Konstante oder fehlt dir da nur das $?
wozu im header sprintf?
besser wäre das ganze dann eher so

PHP:
if ($submit)
[
 $ergebnis = "suche_ergebnis.php?wert=$sqlview[txt_wert]?ort=$sqlview[txt_ort]?$land=$sqlview[txt_land]";
 header('Location: '.$ergebnis);
}

EDIT: Zu den Komboboxen, jedem Formelement, also auch den Boxen, gibt man ja nen Namen. dieser wird dann je nach Formularmethod per GET oder POST übergeben. Und entsprechen mit $_POST['feldname'] bzw $_GET['formularname'] ausgelesen. Alternativ kannst du auch $_REQUEST[] verwenden, welches $_GET und $_POST zusammenfasst.
 
Zuletzt bearbeitet:
Zurück