Zur Navigation

Eventkalender

1 uwe

Hallo,
ich will einen Eventkalender mit 2 Dropdownfeldern und einem Suchfeld aufbauen.

Es sollen allen Daten ab HEUTE gezeigt werden. Die Dropdowns stehen im Normalfall auf "--Alle zeigen--". Soblald jetzt entweder im Suchbegriff oder Dropdown was geändert wird, soll die Liste sich entsprechend aufbauen. -Mit dem Button "Suchen" -. Wenn möglich nur mit PHP.
Das bisherige Programm habe ich aus mehreren Modulen zusammengetzt. Vielleicht kann man das auch eleganter löschen. Ein Problem ist u.a. das Suchen mit "LIKE" in dem Suchfeld bei dem mehrere Felder (Name, Ort, Kategorie) durchsucht werden sollen.

Ein gutes Beispiel ist z.B.
http://www.job-gess.de/de/stellenmarkt.html
Es ist zwar eine ganz anderer Bereich aber die gleiche Suchfunktion.

MfG
Uwe

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head><title>suchen</title></head>
<body><?php <br />
$dbHost = "localhost"; <br />
$dbUser = "";<br />
$dbPass = "";<br />
$dbName = "";<br /><br />
$connect = @mysql_connect($dbHost, $dbUser, $dbPass) or die("Es Konnte keine Verbindung zur Datenbank hergestellt werden!!");<br />
$selectDB = @mysql_select_db($dbName) or die("Konnte die Datenbank <b>$dbName</b> nicht auswählen! Bitte neu versuchen!");<br /><br />
$datentabelle ="meinedaten";
?><center><table
 border="1" width="800"><tbody><tr><td><table><tbody><tr><td
 valign="top" width="200"><form action="suchen.php"
 method="get"><table border="0" cellpadding="0"
 cellspacing="2" width="122"><tbody><tr><td></td><td><font
 face="tahoma" size="2"><strong>Suche</strong></font></td>
</tr><tr><td><font face="tahoma" size="2"><strong>Suchen:</strong></font></td>
<td><font face="tahoma" size="2"><input
 name="suchen" size="15" type="text"></font></td></tr><tr><td><font
 face="tahoma" size="2"><strong>Ort:</strong></font></td>
<td><font face="tahoma" size="2"><select
 name="ort" size="1"><option>-ALLE-</option><?php echo'<select name="ort">';
$sql = 'SELECT DISTINCT ort From $datentabelle';
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
while($row = mysql_fetch_assoc($result)) {
print '<option value="'.$row['ort'].'">'.$row['ort'].'</option>';
}
}
?></select></font></td>
</tr><tr><td><font face="tahoma" size="2"><strong>Kategorie:</strong></font></td>
<td><font face="tahoma" size="2"><select
 name="kategorie" size="1"><option>-ALLE-</option><?php echo'<select name="kategorie">';
$sql = 'SELECT DISTINCT kategorie From $datentabelle';
$result = mysql_query($sql) OR die(mysql_error());
if(mysql_num_rows($result)) {
while($row = mysql_fetch_assoc($result)) {
print '<option value="'.$row['kategorie'].'">'.$row['katerorie'].'</option>';
}
}
?></select></font></td>
</tr><tr><td></td><td><font
 face="tahoma" size="2"><br></font></td></tr><tr><td><font
 face="tahoma" size="2"><strong><input
 value="Reset" type="reset"></strong></font></td><td><font
 face="tahoma" size="2"><input value="Suchen"
 type="submit"></font></td></tr></tbody></table></form></td><td
 valign="top" width="600"><?php # array mit den dbfeldnamen und den dropdownnamen
# a-h ist zu ersetzen mit dem namen der tabellenspalte
# dropdownX ist zu ersetzen mit dem namen des dropdowns im formular
$dropdowns = array( "firma" => "suchen",
"ort" => "ort",
"kategorie" => "katerogrie",
);
# wenn ein dropdown diesen wert übermittelt gilt es als nicht ausgewählt
$ignore = "-alle-";
$conditions = array();
foreach($dropdowns as $key => $dropdown) {
if(isset($_POST[$dropdown]) && !empty($_POST[$dropdown]) && $_POST[$dropdown] != $ignore) $conditions[] = "$key = '{$_POST[$dropdown]}' ";
}
$condition = count($conditions) > 0 ? "WHERE " . implode("AND ", $conditions) : "";
$sql = "SELECT * FROM table $condition";
$result=mysql_query($sql);
while ($row=mysql_fetch_assoc($result)) {
echo" <table width=\"700\" border=\"0\">";
echo" <tr>";
echo" <td>". $row["datum"]."</td>";
echo" </tr>";
echo" <tr>";
echo" <td>". $row["firma"]."</td>";
echo" </tr>";
echo" <tr>";
echo" <td>". $row["ort"] ."</td>";
echo" </tr>";
echo" <tr>";
echo" <td>". $row["kategorie"]."</td>";
echo" </tr>";
echo" </table>";
echo" </td></tr></table>";
echo" <br>";
}
?></td></tr></tbody></table></td></tr></tbody></table></center></body></html>

15.04.2009 23:28

2 Jörg Kruse

Soblald jetzt entweder im Suchbegriff oder Dropdown was geändert wird, soll die Liste sich entsprechend aufbauen. -Mit dem Button "Suchen" -. Wenn möglich nur mit PHP.

Was für eine Liste wird aufgebaut? ich kann das auch mit dem von dir verlinkten Beispiel nicht nachvollziehen (Firefox 3 und JavaScript aktiviert)?

Ein Problem ist u.a. das Suchen mit "LIKE" in dem Suchfeld bei dem mehrere Felder (Name, Ort, Kategorie) durchsucht werden sollen.

Ich sehe in dem Code keine Query mit LIKE - aber grundsätzlich kannst du WHERE Klauseln mit OR verknüpfen - falls du das meinst

WHERE `Name` LIKE '%Suchbegriff%' OR `Ort` LIKE '%Suchbegriff% OR `Kategorie` LIKE '%Suchbegriff%'

17.04.2009 09:44 | geändert: 17.04.2009 09:45

Beitrag schreiben (als Gast)

Die Antwort wird nach der Überprüfung durch einen Moderator freigeschaltet.





[BBCode-Hilfe]