Hallo zusammen,
ich versuche mich seit kurzem in PHP. Mein Ziel ist es, eine Datenbankabfrage zu realisieren. Dies ist mir bis zu einem gewissen Grad auch gelungen. Mit einigen Problemem komme ich aber ohne Hilfe nicht weiter. Nachfolgend die chronologische Auflistung des Codes (aus meiner Sicht nicht relevanten Code habe ich weggelassen):
Es folgt nun die Formularabfrage:
Die Datenbankabfrage soll in jedweder Kombination (wie viele das sind, habe ich jetzt allerdings nicht ausgerechnet) die entsprechenden Resultate auflisten. Dies klappt auch mit den ersten fünf Rubriken "name", "geschlecht", "nation", "song" und "usa" oder alternativ zu "usa" "gbr". Sobald ich aber in obige Abfrage gbr aufnehme (als Kommentar gekennzeichnet), wird kein Ergebnis mehr geliefert. "usa" und "gbr" schließen sich also gegenseitig aus. Warum das so ist, ist mir ein Rätsel.
Verbleiben noch die Checkboxen. Egal, was ich ankreuze, erscheinen alle in der Datenbank enthaltenen Datensätze.
Nun meine Fragen:
1. Wie muss ich meine Abfrage zu "usa" und zu "gbr" modifizieren, damit das geschilderte Problem nicht mehr auftritt?
2. Wie muss die Abfrage der Checkboxen richtig lauten bzw. wo baue ich welchen Code (array?) ergänzend ein?
3. Zu "geschlecht", "usaplatz", "gbrplatz" (jeweils als Kommentar kenntlich gemacht) wird undefined index moniert. Ich habe schon einige Varianten (isset?) an unterschiedlichen Stellen ausprobiert, leider ohne Erfolg. Wo muss ich welchen Code einfügen, damit diese Meldungen unterbleiben?
Jetzt ist das Posting etwas lang geworden. Ich hoffe dennoch, dass ich mein Problem verständlich darstellen konnte und hoffe auf Hilfe.
Viele Grüße
hawaiian
ich versuche mich seit kurzem in PHP. Mein Ziel ist es, eine Datenbankabfrage zu realisieren. Dies ist mir bis zu einem gewissen Grad auch gelungen. Mit einigen Problemem komme ich aber ohne Hilfe nicht weiter. Nachfolgend die chronologische Auflistung des Codes (aus meiner Sicht nicht relevanten Code habe ich weggelassen):
PHP:
if (!isset($_POST["submit"]));
if (!isset($_POST["name"]))
{
Es folgt nun die Formularabfrage:
HTML:
<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]); ?>" method="post">
<table border="0" cellpadding="3" cellspacing="1">
<tr>
<td align="right">Name </td>
<td><input type="text" name="name" size="25" maxlength="35" style="width:158px;" value="" /></td>
</tr>
<tr>
<td align="right">Geschlecht </td>
<td><input type="radio" name="geschlecht" value="m"> männlich
<input type="radio" name="geschlecht" value="w"> weiblich</td>
</tr>
<tr>
<td align="right">Nation </td>
<td><select name="nation" size="1" style="width:165px;">
<option value="">--------- Auswahl ---------</option>
<option>CAN</option>
<option>GBR</option>
<option>USA</option>
</select>
</td>
</tr>
<tr>
<td align="right">Song </td>
<td><input type="text" name="song" size="25" maxlength="35" style="width:158px;" value="" /></td>
</tr>
<tr>
<td align="right">USA </td>
<td><select name="usa" size="1" style="width:165px;">
<option value="">--------- Auswahl ---------</option>
<option>1957</option>
<option>1959</option>
<option>1967</option>
<option>1991</option>
</select></td>
</tr>
<tr>
<td align="right">GBR </td>
<td><select name="gbr" size="1" style="width:165px;">
<option value="">--------- Auswahl ---------</option>
<option>1957</option>
<option>1959</option>
<option>1964</option>
<option>1991</option>
</select></td>
</tr>
<tr>
<td align="right">Charts USA </td>
<td>
<input type="checkbox" name="usaplatz[]" value="1" /> Platz 1<br />
<input type="checkbox" name="usaplatz[]" value="2" /> Platz 2<br />
<input type="checkbox" name="usaplatz[]" value="3" /> Platz 3
</td>
</tr>
<tr>
<td align="right">Charts GBR </td>
<td>
<input type="checkbox" name="gbrplatz[]" value="1" /> Platz 1<br />
<input type="checkbox" name="gbrplatz[]" value="2" /> Platz 2<br />
<input type="checkbox" name="gbrplatz[]" value="3" /> Platz 3
</td>
</tr>
<tr>
<td> </td>
<td>
<input type="submit" name="form" style="font-size:0.95em; width:115px; height:22px;" value="Abfrage senden" />
</td>
</tr>
</table>
</form>
PHP:
} else {
echo "<table border='0' cellspacing='1' cellpadding='2'>
<tr class='ueberschrift1'>
<th colspan='4'>Sie suchten nach</th>
<td style='width:20px; background-color:#54A6A5'></td>
<td style='background-color:#54A6A5'>
<form method='POST' action=$_SERVER[PHP_SELF]>
<input type='submit' name='submit' value='Erneute Suche'>
</form></td>
</tr>
<tr class='zeile1'>
<td>Name:</td>
<td style='color:#FF0000'>$_POST[name]</td>
<td>Geschlecht:</td>
<td align='center' style='color:#FF0000'>$_POST[geschlecht]</td> # Notice: Undefined index: geschlecht
</tr>
<tr class='zeile1'>
<td>Nation:</td>
<td style='color:#FF0000'>$_POST[nation]</td>
<td>Song:</td>
<td style='color:#FF0000'>$_POST[song]</td>
</tr>
<tr class='zeile1'>
<td>USA:</td>
<td style='color:#FF0000'>$_POST[usa]</td>
<td>GBR:</td>
<td style='color:#FF0000'>$_POST[gbr]</td>
</tr>
<tr class='zeile1'>
<td>Charts USA:</td>
<td style='color:#FF0000'>$_POST[usaplatz]</td> # Notice: Undefined index: usaplatz
<td>Charts GBR:</td>
<td style='color:#FF0000'>$_POST[gbrplatz]</td> # Notice: Undefined index: gbrplatz
</tr>
</table>";
}
$fehler = false;
$fehlerhinweis = "";
if (empty ($_POST['name']) == TRUE AND empty ($_POST['geschlecht']) == TRUE AND empty ($_POST['nation']) == TRUE AND empty ($_POST['song']) == TRUE
AND empty ($_POST['usa']) == TRUE AND empty ($_POST['usaplatz']) == TRUE AND empty ($_POST['gbr']) == TRUE AND empty ($_POST['gbrplatz']) == TRUE) {
$fehler = TRUE;
$fehlerhinweis = "Bitte auswählen. ";
}
if ($fehler) {
echo "<p>$fehlerhinweis</p>";
} else {
$link = mysql_connect("localhost", "root", "");
if (!$link)
die("Kann den Server nicht erreichen.");
if (!mysql_select_db("sport", $link))
die("Kann die Datenbank nicht anwählen.");
PHP:
$abfrage = "SELECT name, vorname, geschlecht, nation, song, usa, usaplatz, gbr, gbrplatz
FROM musik
WHERE
(name LIKE '%" . mysql_real_escape_string($_POST['name']) . "%')
AND (geschlecht LIKE '%" . mysql_real_escape_string($_POST['geschlecht']) . "') # Notice: Undefined index: geschlecht
AND (nation LIKE '%" . mysql_real_escape_string($_POST['nation']) . "')
AND (song LIKE '%" . mysql_real_escape_string($_POST['song']) . "%')
AND (usa LIKE '%" . mysql_real_escape_string($_POST['usa']) . "')
# AND (gbr LIKE '%" . mysql_real_escape_string($_POST['gbr']) . "')
AND (usaplatz LIKE '%" . mysql_real_escape_string($_POST['usaplatz']) . "') # Notice: Undefined index: usaplatz
# AND (gbrplatz LIKE '%" . mysql_real_escape_string($_POST['gbrplatz']) . "') # Notice: Undefined index: gbrplatz
ORDER BY name, song ASC LIMIT 0, 60";
Die Datenbankabfrage soll in jedweder Kombination (wie viele das sind, habe ich jetzt allerdings nicht ausgerechnet) die entsprechenden Resultate auflisten. Dies klappt auch mit den ersten fünf Rubriken "name", "geschlecht", "nation", "song" und "usa" oder alternativ zu "usa" "gbr". Sobald ich aber in obige Abfrage gbr aufnehme (als Kommentar gekennzeichnet), wird kein Ergebnis mehr geliefert. "usa" und "gbr" schließen sich also gegenseitig aus. Warum das so ist, ist mir ein Rätsel.
Verbleiben noch die Checkboxen. Egal, was ich ankreuze, erscheinen alle in der Datenbank enthaltenen Datensätze.
Nun meine Fragen:
1. Wie muss ich meine Abfrage zu "usa" und zu "gbr" modifizieren, damit das geschilderte Problem nicht mehr auftritt?
2. Wie muss die Abfrage der Checkboxen richtig lauten bzw. wo baue ich welchen Code (array?) ergänzend ein?
3. Zu "geschlecht", "usaplatz", "gbrplatz" (jeweils als Kommentar kenntlich gemacht) wird undefined index moniert. Ich habe schon einige Varianten (isset?) an unterschiedlichen Stellen ausprobiert, leider ohne Erfolg. Wo muss ich welchen Code einfügen, damit diese Meldungen unterbleiben?
Jetzt ist das Posting etwas lang geworden. Ich hoffe dennoch, dass ich mein Problem verständlich darstellen konnte und hoffe auf Hilfe.
Viele Grüße
hawaiian