WinFuture-Forum.de: [mysql] Dynamisches Menü Erstellen - WinFuture-Forum.de

Zum Inhalt wechseln

Nachrichten zum Thema: Entwicklung
  • 2 Seiten +
  • 1
  • 2

[mysql] Dynamisches Menü Erstellen ..db vorhanden


#1 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 11. Juni 2008 - 21:39

Hallo,
Ich habe ein Problem mit meinem eigenen CMS.

Ich möchte alles dynamisch darstellen lassen.
Also auch das menü. Habe da folgendes
- Start
- Config
- Logs

udn noch ein paar mehr aber 3 reichen hier.

Meine Tabelle ist so angelegt.

id	page	cont	status
1	 config  xy		1
2	  logs	 xx		1


Ich möchte nun dass solche Links erstellt werden:
<a href="members.php?page=start">Start</a> | 
<a href="members.php?page=logs">Logs</a> | 
<a href="members.php?page=toastload">Toastload</a> | 
<a href="members.php?page=config">Config</a>


Dies am besten per whill/for-schleife.

Ich habe aber keine Ahung wie ich das machen kann. Klar, hab schon hier und da im CMS was in die Tabelle eingefügt oder ne Table per while und den Daten der db erstellt nur hier bin ich am scheitern.

Hoffe jemand kan mir helfen,
Toasterfraktion
0

Anzeige



#2 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 14. Juni 2008 - 11:12

Funktioniert alles genau so wie bei deiner anderen MySQL-Frage: [mysql] Komplette Tabelle Auslesen

Aber du solltest neben page vielleicht noch ein Feld für den Seitennamen (Linknamen) erstellen. Versuch einfach mal den Code umzuschreiben und falls du Probleme hast, dann poste ihn doch mal hier.

Gruß,
Stefan
0

#3 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 14. Juni 2008 - 14:00

Hm alles klar. DAnke schonmal. Ich habe jetzt aber noch eine Frage zum Aufbau von Mysql Tabellen.
Wenn ich nun eine Configdatei habe. Sollte ich es so machen:

ID NAME		CONFIG
1  Status		 1
2  Verzeichnis	  uploads/
3  Sperre		 TRUE


oder etwas so:
ID SPERRE VERZEICHNIS STATUS
1	TRUE	 uploads/		1


Welche Methode ist da am besten und ganz wichtg , wo liegt er Unterschied bei den Abfragen in PHP. Das verstehen ich noch nicht.

Gruß,
Toasterfraktion

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 14. Juni 2008 - 14:03

0

#4 Mitglied ist offline   Diewie 

  • Gruppe: aktive Mitglieder
  • Beiträge: 409
  • Beigetreten: 18. Juni 06
  • Reputation: 0
  • Geschlecht:Männlich
  • Wohnort:Geisenhausen / München

geschrieben 14. Juni 2008 - 15:10

Eindeutig die zweite Methode. Hier bekommst du lauter Datensätze (quasi eine Reihe in der Tabelle). Diese Reihen kannst du auch viel leichter abrufen und verwalten.
0

#5 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 14. Juni 2008 - 16:14

Okay vielen dank dafür!

Gruß,
Toasterfraktion
0

#6 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 14:53

Gut das auslesen klappt un.
$menu = mysql_query('SELECT page FROM cms_content');

while ($row = mysql_fetch_array($menu)) {
echo $row['page']." ";
}


Da kommt bei raus:
logs start config toastload


Nun möchte ich aber ein Menü erstellen wie oben beschrieben. Es soll "Start" am Anfang stehen, danach ist die Reinfolge egal. Ich könnte es mit explode( "", $var) zwar auseinander nehmen aber dann weiß ich auch nicht weiter. Ich muss dann noch jedem namen einen Link zuweisen. .php?page=start . Der Link bzw id heißt immer so wieder der name der ausgegeben wird.

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 15. Juni 2008 - 14:56

0

#7 Mitglied ist offline   zwutz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 652
  • Beigetreten: 17. Juli 07
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 15:10

wenn Start vorne stehen soll, dann sorg dafür, dass er auch in der Tabelle vorne steht (ID 1 oder 0)

$menu = mysql_query('SELECT title, page FROM cms_content');

echo '<ul>';
while ( $row = mysql_fetch_assoc( $menu ) )
{
echo '<li><a href="members.php?page='.$row['page'].'">'.$row['title'].'</a></li>';
}
echo '</ul>';

Dieser Beitrag wurde von zwutz bearbeitet: 15. Juni 2008 - 15:13

Raise your glass if you are wrong
0

#8 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 15. Juni 2008 - 15:14

Du könntest auch ein zusätzliches Feld für die Reihenfolge einfügen.

id, page, page_title, menu_show, menu_title, reihenfolge, body, ....
1, start, My Homepage, 1, Home, 1, xy, ...
2, ...


$menu = '|';

$sql = mysql_query('SELECT page, menu_title FROM cms_content WHERE menu_show = 1 ORDER BY reihenfolge');

while ... {
$menu .='<a href="index.php?page='.$row['page'].'">'.$row['menu_title'].'</a>|';
}

echo $menu;

Dieser Beitrag wurde von bardelot bearbeitet: 15. Juni 2008 - 15:15

0

#9 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 15:24

Danke zwutz!
Das hat super geklappt. Habe nur $row['title'] mit $row['page'] ersetzt da sie gleich sind!

@bardelot
Stimmt so hätte ich es auch machen können. Aber auf die Idee zu kommen dass ich das alles per Id in der Datenbank machen kann bin ich nicht gekommen. Ich werde denke ich wenn es alles etwas umfangreicher wird auch noch zusätzliche Felder wie "Reinhenfolge" usw.

Danke

EDIT:
Wenn ich es so
echo '<a href="members.php?page='.$row['page'].'">'.$row['page'].'</a> | ';
benutze kommt aber
start | logs | config | toastload |
bei raus. Ich möchte den letzten "|" dort gar nicht haben.
Wie kann ich den am einfachsten wegbekommen?

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 15. Juni 2008 - 15:33

0

#10 Mitglied ist offline   zwutz 

  • Gruppe: aktive Mitglieder
  • Beiträge: 652
  • Beigetreten: 17. Juli 07
  • Reputation: 1
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 15:40

du speicherst die Links nacheinander in einem array

den Rest erledigt diese PHP-Funktion
Raise your glass if you are wrong
0

#11 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 15:52

while ( $row = mysql_fetch_assoc( $menu ) )
{
$menu_array = array('<a href="members.php?page='.$row['page'].'">'.$row['page'].'</a>');

echo implode("|", $menu_array);
}


Es funktioniert leider nicht. PHP gibt es wieder so aus: StartLogsConfigToastload.
Ich habe das Prinzip zwar verstanden aber ich glaubemit meiner Array stimmt was nicht.

gruß,
Toasterfraktion
0

#12 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 15. Juni 2008 - 17:34

$menu_array = array();
while ( $row = mysql_fetch_assoc( $menu ) )
{
$menu_array[] = '<a href="members.php?page='.$row['page'].'">'.$row['page'].'</a>';
}
echo implode("|", $menu_array);

0

#13 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 18:21

Ich bedanke mich mit meinem Post Nummer 500 bei bardelot.
$menu_array = array(); kann da aber doch auch weg oder?

Gruß,
Toasterfraktion

0

#14 Mitglied ist offline   bardelot 

  • Gruppe: aktive Mitglieder
  • Beiträge: 517
  • Beigetreten: 20. März 04
  • Reputation: 0

geschrieben 15. Juni 2008 - 19:26

Variablen initialisieren gehört zum guten Stil jedes Programmieres. Siehe auch: Variable (Wikipedia)
0

#15 Mitglied ist offline   ps915 

  • Gruppe: aktive Mitglieder
  • Beiträge: 1.119
  • Beigetreten: 17. Mai 07
  • Reputation: 0
  • Geschlecht:Männlich

geschrieben 15. Juni 2008 - 20:46

Zitat

Variablen initialisieren gehört zum guten Stil jedes Programmieres

Es ist doch aber nicht zwingend notwendig oder bietet es mehr Performance?
0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

1 Besucher lesen dieses Thema
Mitglieder: 0, Gäste: 1, unsichtbare Mitglieder: 0