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

#16 Mitglied ist offline   G.I.Joe 

  • Gruppe: aktive Mitglieder
  • Beiträge: 964
  • Beigetreten: 19. September 04
  • Reputation: 0

geschrieben 15. Juni 2008 - 21:25

Beitrag anzeigenZitat (bardelot: 15.06.2008, 20:26)

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

Wenn du mit Initialisieren meinst, dass Variablen einen Default-Wert bekommen dann ist das in einigen Fällen kein guter Stil. Häufig ist es besser die Variable auf Null/Nil/Whatever zu lassen, um zu wissen dass sie noch keinen Wert hat.
Eingefügtes Bild Eingefügtes Bild
0

Anzeige



#17 Mitglied ist offline   Diewie 

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

geschrieben 15. Juni 2008 - 21:38

Beitrag anzeigenZitat (Toasterfraktion: 15.06.2008, 21:46)

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

Nein, es ist weder zwingend erforderlich, noch wird das Skript dadurch schneller ausgeführt. Es sind zwei äquivalente Möglichkeiten in PHP Arrays zu erzeugen.
Wenn ich mich recht erinnere, dann ist bei großen Arrays die []-Methode sogar schneller als die direkte array(...)-Initialisierung.

Gruß,
Stefan
0

#18 Mitglied ist offline   ps915 

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

geschrieben 15. Juni 2008 - 21:44

Zitat

Nein, es ist weder zwingend erforderlich

Wann muss ich sie denn initialisieren? Muss ich das bei jeder Array machen?
0

#19 Mitglied ist offline   Diewie 

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

geschrieben 15. Juni 2008 - 21:53

Beitrag anzeigenZitat (Toasterfraktion: 15.06.2008, 22:44)

Wann muss ich sie denn initialisieren? Muss ich das bei jeder Array machen?

Niemals und damit bei keinem Array :(
Der leere array() Aufruf in PHP ist sogesehen sinnlos. Man benutzt array(...) nur um übersichtlich ein "statisches" Array zu erstellen:
$farben = array("gelb", "grün", "rot");


Gruß,
Stefan
0

#20 Mitglied ist offline   ps915 

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

geschrieben 15. Juni 2008 - 22:16

Aha also doch sinnlos! :-D
0

#21 Mitglied ist offline   bardelot 

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

geschrieben 15. Juni 2008 - 22:16

Da die Variable $menu_array im implode statement verwendet wird muss sie dort einen Wert haben. Das initialisieren stellt sicher, dass sie auch wirklich einen Wert hat bzw. hier ein leeres aber gültiges Array ist auch dann, wenn mysql_fetch_assoc kein ergebnis zurück liefert. Der Aufruf ist also keineswegs sinnlos.
0

#22 Mitglied ist offline   Diewie 

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

geschrieben 15. Juni 2008 - 22:41

Beitrag anzeigenZitat (bardelot: 15.06.2008, 23:16)

Da die Variable $menu_array im implode statement verwendet wird muss sie dort einen Wert haben. Das initialisieren stellt sicher, dass sie auch wirklich einen Wert hat bzw. hier ein leeres aber gültiges Array ist auch dann, wenn mysql_fetch_assoc kein ergebnis zurück liefert. Der Aufruf ist also keineswegs sinnlos.

Da hast du natürlich recht. In diesem Fall kann es durchaus nützlich sein, wenn man keine Fehlerabfragen verwenden will.

Gruß,
Sefan

Dieser Beitrag wurde von Diewie bearbeitet: 15. Juni 2008 - 22:49

0

#23 Mitglied ist offline   ps915 

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

geschrieben 07. Juli 2008 - 20:23

Habe noch ein Problem:
Ich habe mein Menü nun soweit fertig, möchte nun aber per CSS oder einem Bild hervorheben welches Menü gerade angeklickt/ausgewählt ist.
Etwa so:
Angehängtes Bild: menue.gif

Der content wird so aufgerufen
index.php?page=NAMEDERSEITE

Hier ist der komplette Code den ich zum erstellen meines dynamischen Menüs benutze:
<?php
 include"config.php";
 $menu = mysql_query('SELECT page FROM cms_content ORDER BY id');
 echo '<div><div class="menu">';
 
 $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);
 echo'</div>';
 ?>


Dabei heraus kommt nun dass hier:
<div class="menu">
 <a href="members.php?page=Start">Start</a>|
 <a href="members.php?page=Logs">Logs</a>|
 <a href="members.php?page=Config">Config</a>|
 <a href="members.php?page=Toastload">Toastload</a>|
 <a href="members.php?page=Downloads">Downloads</a>
 </div>


Hat jemand einen Tipp oder eine Idee?

;)
0

#24 Mitglied ist offline   Diewie 

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

geschrieben 07. Juli 2008 - 20:44

Einfach in der while-Schleife prüfen, ob $_GET['page'] == $row['page'] ist. Ich habe den Code kurz umgeschrieben ohne ihn zu testen:

<?php

$page = (isset($_GET['page']))?strtolower($_GET['page']):'start'; //?page auslesen bzw. Standard auf 'start' setzen

include('config.php');

$menu = mysql_query('SELECT page FROM cms_content ORDER BY id');

echo '<div><div class="menu">';

$current = ' id="current"'; //was soll zu dem aktiven Link hinzugefügt werden. Hier id="current" für einfaches CSS

$menu_array = array();

while ($row = mysql_fetch_assoc($menu)) {
	$add_current = ($page == strtolower($row['page']))?$current:null; //falls ?page == $row['page'], dann $add_current = $current;
	$menu_array[] = '<a href="members.php?page='.$row['page'].'"'.$add_current.'>'.$row['page'].'</a>';
}

echo implode('|', $menu_array);
echo '</div>';

?>


Gruß,
Stefan
0

#25 Mitglied ist offline   ps915 

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

geschrieben 07. Juli 2008 - 20:56

Ah cool, es klappt, hätte nicht gedacht, dass es so einfach ist!

Dieser Beitrag wurde von Toasterfraktion bearbeitet: 07. Juli 2008 - 20:58

0

Thema verteilen:


  • 2 Seiten +
  • 1
  • 2

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