PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Auswahlliste


kbit
25.11.2007, 13:27:56
Hi, ich habe diesen Quellcode geschrieben:

suche3.php
<?php

error_reporting(E_ALL);

require("open.inc.php");
$sql = "SELECT C_ID,Ort FROM City";
$row_sel = mysql_query($sql) or die(mysql_error());

echo '<form action="'.$_SERVER['SCRIPT_NAME'].'" method="POST">
Stadt: <select name="staedte" size="1">';


while ($select=mysql_fetch_array($row_sel)){
echo '<option value="'.$select['C_ID'].'">'.$select['Ort'].' </option>';
}

echo '</select>

<br>
<br>

<input type="text" name="strassen" />
<input type="submit" name ="submit" value="suchen">

<br>
<br>
';

if(isset($_POST['submit'])){
$sql = "SELECT s.S_Name,s.S_PLZ,c.Ort
FROM strassen s, City c
WHERE s.C_ID=c.C_ID
AND c.C_ID ='".$_POST['staedte']."'
AND s.S_Name= '".$_POST['strassen']."'
ORDER BY c.ort ASC LIMIT 0,30";

$result = mysql_query($sql) or die(mysql_error());

if (mysql_num_rows($result)){
while ($row=mysql_fetch_array($result)){

echo $row['S_Name']."<br />";
echo $row['Ort']."<br />";
echo $row['S_PLZ']."<br />";
}
}else{
echo"<p> Kein Treffer versuchen sie es erneut</p>";
}
echo '</form>';
}



?>

Hier kann man über eine Auswahlliste einen Ort auswählen und über ein Textfeld eine Straße eingeben. Schickt man es ab werden einem nur Ergebnise gezeigt zu dem dazugehörigen Ort.

Zweiter Quellcode suche6.php:

<?php
error_reporting(E_ALL);
require("open.inc.php");
include ("suche3.php");

if(empty($_GET['Name']))
{

foreach ( range('A', 'Z') as $Name ) {
print "<a href=\"suche6.php?Name={$Name}\">{$Name}</a><br />";
}
}
else
{
echo '<a href="suche6.php?Name=' . urlencode($row['S_Name']) . '&amp;PLZ=' . urlencode($row['S_PLZ']) . '">' . $row['S_Name'] . '</a>';
$letter = substr($_GET['Name'], 0, 1);

$sql_query = "SELECT `S_Name`, `S_PLZ`
FROM `Strassen`
WHERE `S_Name` LIKE '".mysql_real_escape_string($letter)."%'";

$sql = mysql_query($sql_query) or die(mysql_error());
if(mysql_num_rows($sql) == 0)
{
print 'Keine Treffer <br/>';
print "<a href=\"suche6.php\">Zurück</a><br/>";
}
else
{
while($row = mysql_fetch_array($sql))
{

print "<a href=\"test.php?Name={$row['S_Name']}\">{$row['S_Name']}</a><br />";
echo '<a href="suche6.php?Name=' . urlencode($row['S_Name']) . '&amp;PLZ=' . urlencode($row['S_PLZ']) . '">' . $row['S_Name'] . '</a><br/>';

}//while

print "<a href=\"suche6.php\">Zurück</a><br/>";
}//else
if(isset($_GET['PLZ'])){
print $_GET['PLZ'];
}

}//else

?>

Hier werden die Buchstaben von A-Z ausgegeben. Wenn man nun auf den Link mit dem Buchstaben klickt z.b L werden einem alle Straßen mit L angezeigt klickt man dann auf eine Straße wird einem die Postleitzahl angezeigt.

So nun hatte ich mir überlegt das ich die zwei Dateien verbinde. Ich möchte das nun so haben das wenn ich bei der Auswahlliste auf den Ort klicke und dann auf den Buchstaben L mir nur noch die Straßen angezeigt werden die zu dem Ort gehören. Und da ist im moment mein Problem das ich nicht genau weiß wie ich das umsetzen kann ? Hat jemand eine Idee?

vt1816
25.11.2007, 19:18:51
...

Hat jemand eine Idee?

Ja!

Wie stehen die Dateien zu einander in Relation? Haben sie einen gemeinsamen Schlüssel?

kbit
25.11.2007, 19:33:34
Also meine DB sieht so aus:

City: C_ID, Ort
Strassen: S_ID, C_ID(fremdschlüssel), S_Name,S_PLZ

vt1816
25.11.2007, 19:41:56
Also meine DB sieht so aus:

City: C_ID, Ort
Strassen: S_ID, C_ID(fremdschlüssel), S_Name,S_PLZ

Schaut gut aus - sofern C_ID der Schlüssel aus der City-Datei ist.

Und wo ist jetzt das Problem? Du bastelst Dir ein einfaches SQL-Statment (http://www.mysql.de) mit Verknüpfung von zwei Tabellen.

Das packst Du - oder?

kbit
25.11.2007, 20:07:51
Schaut gut aus - sofern C_ID der Schlüssel aus der City-Datei ist.


Jap ist er.

Du bastelst Dir ein einfaches SQL-Statment mit Verknüpfung von zwei Tabellen.

Das packst Du - oder?

Ja das habe ich ja in der suche3.php auch schon gemacht. Da funktioniert es ja auch das wenn ich in dem Textfeld eine straße eingebe und vorher über die Auswahlliste einen Ort auswähle das er mir dann nur die Straße ausgibt die zu dem Ort gehört.

Also im moment ist es ja so das ich die suche6.php aufrufe wo meine Auswahlliste mit dem Textfeld und die Buchstaben aufgerufen werden.

if(isset($_GET['Name'])){
$sql = "SELECT s.S_Name,s.S_PLZ,c.Ort
FROM strassen s, City c
WHERE s.C_ID=c.C_ID
AND c.C_ID ='".$_POST['staedte']."'
AND s.S_Name= '".$_GET['Name']."'
ORDER BY c.ort ASC LIMIT 0,30";

Ich hab es mal so probiert das ich dann eine test.php einfach mal angelegt habe und dort dann den oberen sql befehl geschrieben habe. Es wird dann aber immer gemeckert wenn ich in der suche6.php auf die Buchstaben klicke er die $_POST['staedte'] nicht kennt.

Also das eigentliche Problem liegt zur Zeit darin das ich nicht genau weiß wie ich es schaffe das wenn ich vorher die Auswahlliste betätige der link weiß ok ich darf nun nur noch die sachen ausgeben zu dem jeweiligen Ort.