Navigation mit PHP und MySQL

moevenschiss

Mitglied
Hi!

Ist es möglich, dass man aus einer Datenbank verschiedene Spalten auswählt, in der verschiedene Kategorien zugeordnet sind und daraus eine Navigation bastelt?

Beispiel:

In der Datenbank test sind Hotels in der Tabelle hot aufgelistet, denen die Regionen Ruhrgebiet, Sauerland, etc. zugeordnet sind.

Hotelname Ruhrgebiet Essen ...

Daraus soll folgende Navigation entstehen:

Ruhrgebiet
- Bochum
- Dortmund
- etc.
Sauerland

bzw. wenn man dann auf Sauerland klickt soll erscheinen:

Ruhrgebiet
Sauerland
- Arnsberg
- Winterberg
etc.

Ich könnte natürlich für jede Stadt eine neue Seite in php schreiben und die Navigation neu anpassen, aber übersichtlicher wäre es, wenn ich nur für die Region eine neue Seite schreibe und den Namen der Stadt per get oder so an eine einzige Datei weitergebe. Diese soll dann dafür sorgen, dass alle Hotels in z.B. Düsseldorf Altstadt angezeigt werden.

Würde mich über Hilfe freuen.
 
Original geschrieben von moevenschiss
Ist es möglich, dass man aus einer Datenbank verschiedene Spalten auswählt, in der verschiedene Kategorien zugeordnet sind und daraus eine Navigation bastelt?

- Ja. ;) Kannst z.B. dann in der SQL angeben welche Datei zu der Kategorie gehört, die wird dann eben includiert bzw. an die Template-Engine übergeben.
 
danke für die schnelle antwort!

naja, jetzt müsste ich erstmal wissen, was denn ein template ist... ;-) vielleicht kann ich das ja auch anders hinbekommen. also, hilfreich wäre es schon, wenn ich links in der navigation zu der stadt bochum in der region ruhrgebiet den parameter bochum an eine zentrale datei ausgeben kann, die dann alle hotels in bochum ausspuckt. habe momentan halt für jede stadt ne seite gebaut. in jeder seite findet man dann folgendes:

<?PHP
include ("../includes/db.php");
$query = "SELECT * FROM hot";
$result = mysql_query($query);
while ($line = mysql_fetch_array($result)) { ?>

<table class="border loc" class=light width=100% cellspacing=0 cellpadding=5>
<tr class="dark">
<td colspan=2><?=$line[name]?></td>
<tr>
<td>
<?=$line[strasse]?> <?=$line[nr]?><br>
<?=$line[ort]?><br>
<?=$line[ort1]?></td>
<td align=center class=dark><?=$line[nr]?></td>

<?PHP
}
mysql_free_result($result);
mysql_close();
?>
</table>

ist das denn schon mal der richtige anfang?
 
Nabend,

irgendwo ist immer der richtige Anfang dabei ;)

So wie ich das verstehe, gibt es übergeordnete Nodes, wie Ruhrgebiet und Sauerland. Klickt man auf einen der beiden, klappt das eine auf (TreeMenü) und das andere zu.
Das ist schonmal eine JavaScript Geschichte und somit bin schonmal aus dem Rennen, da ich keine Ahnung davon habe(n will).

Richtig professionell wirds mit NedStet Sets, aber das wird schwer ;) Sehr Schwer: Kostprobe: http://www.tutorials.de/tutorials139220.html

Tja, kann dir Leider nicht viel helfen in der Sache.

MfG
Andreas
 
so, habe mich jetzt entschieden, das ganze doch etwas simpler zu gestalten. ;-) anstelle eines tree menus habe ich jetzt vor, für jede region eine seite zu basteln. ist zwar etwas mehr aufwand, aber ich will ja auch noch durchblicken können in den seiten, die ich baue... ;-) so entsteht zum beispiel die datei hotel-ruhrgebiet.php mit folgender navigation (die links sind also schon vorgegeben und müssen nicht extra noch aus der datenbank generiert werden):

Ruhrgebiet
- Bochum
- Dortmund
- Essen
-etc.
Sauerland

wie im posting weiter oben beschrieben, erscheint im main-bereich der seite das ergebnis der datenbankabfrage. jetzt muss ich eigentlich nur noch wissen, wie ich es schaffe, dass wenn ich auf dortmund klicke, die stadt dortmund als "suchbegriff" an das php-skript weitergegeben wird und dann in der datei hotel-ruhrgebiet.php alle hotels in dortmund aufgelistet werden. Wie funktioniert so etwas denn? Ich hoffe es wird nicht allzu kompliziert. Letzten Endes müsste dann ja etwas in der folgenden form in der navigation stehen:

<a href="hotel-ruhrgebiet.php?ort='dortmund'>Dortmund</a>

Oder bin ich auf dem Holzweg?

Muss ich die Datenbankabfrage dann irgendwie anders gestalten?

z.B.: SELECT * FROM hot WHERE ort=hier nen suchparameter oder so
 
Morgen

PHP:
if($_GET["ort") // wurd eine Ort in der URL übergeben
{
    ## Abfragen der DB nach Ort
    $getOrtDetails = mysql_query("SELECT * FROM hot WHERE ort='$_GET[ort]'") or die(mysql_error());
   $OrtDetails = mysql_fetch_array($getOrtDetails);
    echo $OrtDetails[ort]; // Ausgabebeispiel
}
else
   echo "Falsche Aufruf, da Parameter \"Ort\" fehlt";

und der AHREF sieht so aus:

<a href="hotel-ruhrgebiet.php?ort=dortmund>Dortmund</a>

also ohne die ' um dortmund

MfG
Andreas
 
achja, bevor es jemand anders auffällt:

die zeile <table class="border loc" class=light width=100% cellspacing=0 cellpadding=5>

hab ich mal schnell in <table class="border loc" width=100% cellspacing=0 cellpadding=5> geändert...

wären ja auch ein paar classes zuviel für so ne tabelle ;-)
 
boah super! vielen dank! das hat mich auf jeden fall nen ganzes stück weiter gebracht...

nur noch eine kleine frage von nem php-neuling: wo muss jetzt genau der folgende teil hin?

if($_GET["ort") // wurd eine Ort in der URL übergeben
{
## Abfragen der DB nach Ort
$getOrtDetails = mysql_query("SELECT * FROM hot WHERE ort='$_GET[ort]'") or die(mysql_error());
$OrtDetails = mysql_fetch_array($getOrtDetails);
echo $OrtDetails[ort]; // Ausgabebeispiel
}
else
echo "Falsche Aufruf, da Parameter \"Ort\" fehlt";


muss da noch irgendwas wie <?php> oder so drum oder setze ich das einfach vor diesen teil?

<?PHP
include ("../includes/db.php");
$query = "SELECT * FROM hot";
$result = mysql_query($query);
while ($line = mysql_fetch_array($result)) { ?>

<table class="border loc" class=light width=100% cellspacing=0 cellpadding=5>
<tr class="dark">
<td colspan=2><?=$line[name]?></td>
<tr>
<td>
<?=$line[strasse]?> <?=$line[nr]?><br>
<?=$line[ort]?><br>
<?=$line[ort1]?></td>
<td align=center class=dark><?=$line[nr]?></td>

<?PHP
}
mysql_free_result($result);
mysql_close();
?>
</table>


danke für die hilfe! das wochenende ist gerettet!;)
 
ich raffs nicht ;-( irgendwie checke ich nicht so ganz, wo ich jetzt was einsetzen muss, also den code yon mayrhofer. und muss >> $_GET["ort") hinterher noch woanders platziert werden? ist wahrscheinlich echt simple, aber ich check es noch nicht so ganz. in den php büchern finde ich auch nichts...
 
Zurück