Menü mit mySQL erstellen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Menü mit mySQL erstellen

    Hallo Leute,

    ich würde gerne ein Menü in eine Seite einfügen und den
    Menünamen, Menüpunkt und den Link aus der DB auslesen.

    Nun kam ich bis jetzt folgendermassen weit:
    DB:
    ID int(11) Nein auto_increment
    TITEL varchar(255) Nein 0
    INHALT text Nein
    LINK text Nein
    POS int(25) UNSIGNED Nein 0
    SICHTBAR int(11) Nein 1
    TITEL -> Menütitel z.B. Hauptmenü
    INHALT -> Menüpunkt
    LINK -> Link des Menüpunktes
    POS -> Kann der User später die Position des Menüs setzen
    SUCHTBAR -> Kann der User später entscheiden ob dieses
    Menü aktiviert oder deaktiviert sein soll

    Auslesen des Menüs aus der DB
    PHP-Code:
    <?
    $sql="SELECT inhalt,link FROM $db_table21";
    $ergebnis=mysql_query($sql, $db);
    if($ergebnis) {
    while($zeile =mysql_fetch_array($ergebnis)) {
    $inhalt = $zeile["inhalt"];
    $link = $zeile["link"];
    }
    mysql_free_result($ergebnis);

    } else {
    echo "$sql falsch";
    }
    ?>
    <tr>
    <tr><td>
    <a href="<? echo $link; ?>"><? echo $inhalt; ?></a><br>
    </td>
    </tr>

    Soweit klappt es auch, aber wie kann ich nun die Menüpunkte
    vom Menü 'Hauptmenü' automatisch untereinander anzeigen
    lassen und dann in die Schleife noch einbinden ob dieses
    Menü sichtbar oder unsichtbar ( aktiviert oder deaktiviert )
    ist wenn ich meherer Menüs auslesen lassen möchte.

    Gruss und Danke Ela

  • #2
    entweder mit parents und rekusiv (eher schlecht), dann gibts was ähnlich, was ich jetzt leider zeitlich nicht erklären kann, müsste aber im Forum stehen. Oder halt nested sets.

    Kommentar


    • #3
      PHP-Code:
      //08/15 Beispiel 
      //einfach noch eine Where Bedingung ob aktiv oder nicht oder
      //beim link mit ausgeben ob on/off
      $sql="SELECT inhalt,link FROM $db_table21";
      $ergebnis=mysql_query($sql$db);
      if(
      $ergebnis) {
      echo 
      '<table>';
      while(
      $zeile =mysql_fetch_array($ergebnis)) {
      echo 
      '<tr><td>'
      echo '<a href="'.$zeile["link"].'">'.$zeile["inhalt"].'</a><br>';
      echo
      '</td></tr>';
      }
      echo 
      '<table/>';
      mysql_free_result($ergebnis);

      } else {
      echo 
      "$sql falsch";

      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        Danke,
        ich bin halt noch nicht so fit mit den Schleifen **arghh**
        wo müsste ich diese denn ansetzen, damit auch noch abgefragt wird,
        ab nochmehr Menüboxen vorhanden sind.

        DB-Auszug :
        ID TITEL CONTENT SORT ACTIVE
        1 Hauptmenü <a href="./impressum.php">Impressum</a><br>
        <a hr... 15 0
        2 Test <a href="./test.php">Test</a><br>
        <a href="./kont... 15 0
        Ich habe die DB-Struktur geändert, da ich es blödsinnig finde
        jeden einzelnen Menüpunkt in die DB ein zu tragen und man
        kann hier dann auch mit HTML arbeiten.

        Gruss und Danke Ela

        Kommentar


        • #5
          wenn du deine menüstruktur in der datenbank ablegst, dann bilde auch die beziehung der menüpunkte untereinander darin ab
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            Ich wollte es so lösen

            eingabe in einem texterea :

            HTML-Code Navigationsverwaltung

            | Hauptmenü |

            <a href="./test.php">Test</a><br>
            <a href="./kontakt.php">Kontakt</a><br>
            <a href="./datenschutz.php">Datenschutz</a><br>
            <a href="./regeln.php">Regeln</a><br>
            <a href="./hilfe.php">Hilfe</a><br>
            <a href="./faq.php">FAQ</a><br>

            So muss der User die Menüstruktur eingeben,
            Vorteil ist, dass der User hier ja nicht nur sein
            eigenes Menü kreiren kann sondern die Boxen
            auch z.B. für irgendwelche anderen Dinge wie
            Linkbuttons benutzen kann und hier mit HTML
            alles frei gestalten kann ( ob dieser z.B. einen
            Punkt oder eine Grafik vor oder hinter dem
            Menüpunkt setzen möchte ).

            Klar es ist für Leute die kein HTML können nicht
            geeignet, jedoch sind die Wichtigsten Menüpunkte
            vorgegeben und das Script ist auch für User mit
            HTML Kenntnisse.

            Was hälst Du jetzt von der Idee ?

            Gruss und Danke Ela

            Kommentar


            • #7
              Original geschrieben von manuelakersten
              Was hälst Du jetzt von der Idee ?
              Abstand
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar


              • #8
                Warum ?

                Kann mir trotzdem jemand helfen :-)

                Gruss und Danke Ela

                Kommentar


                • #9
                  weil ich z.b. sowas sinnvoller finde
                  Code:
                  id | parent | title
                   1 |    0 | Hauptseite
                   2 |    1 | News
                   3 |    1 | Kontakt
                   4 |    1 | FAQ
                  dann kannst du das auch ausgeben wie du willst und musst nicht erst das gespeicherte darstellungsformat ändern


                  die menüs wievieler user willst du denn speichern?
                  wäre es nicht besser, du überlässt es den usern wie sie ihr menü dargestellt haben möchten?
                  wenn du deine variante nutzt, dann muss man für änderungen im design den inhalt der datenbank ändern
                  Ich denke, also bin ich. - Einige sind trotzdem...

                  Kommentar


                  • #10
                    Mhhh das verstehe ich nicht, ich muss nun zur Arbeit
                    werde mich heute Abend jedoch wieder damit beschäftigen
                    und hoffe das wir dann weiterdiskutieren können.

                    Gruss und Danke Ela

                    Kommentar


                    • #11
                      dann kannst du dazu z.B. in einer zweiten Tab den Inhalt der links speichern.

                      PHP-Code:
                      //happys vorschlag
                      id parent title
                       1 
                      |    Hauptseite
                       2 
                      |    News
                       3 
                      |    Kontakt
                       4 
                      |    FAQ

                      id 
                      link_idinhalt 
                       1 
                      |    news text...
                       
                      |    Kontakte ....
                       
                      |    FAQ usw...


                      //Bei der Erstellung des Menüs fragst du dann ab
                      //wer parent = 1 ist. und baust die links zusammen
                      //Beispiel
                      while($sql usw.)
                      {
                      echo 
                      '<a href="http://www.deine-domain.de/'.$row['id'].'.php">'.$row['titel'].'</a>';

                      mfg
                      marc75

                      <Platz für anderes>

                      Kommentar


                      • #12
                        Hi,

                        leider kann ich erst jetzt antworten, da gestern und vorgestern Nachmittag
                        meine Telefonleitung mal wieder tod war.

                        Nun habe ich genug Zeit gehabt mir Gedanken zu machen und habe mich entschieden, das Menü doch als HTML-Box zu machen und nicht jeden Menüpunkt einzeln, da ja nur der ADMIN Änderungen in der Menüstruktur
                        machen kann und nicht jeder einzelne User und daher die Gefahr, dass ein User das Script durch eine Falsche Eingabe ( wie z.B. JS ) manipulieren kann hier nicht gegebn ist - aber trotzdem grossen Dank für die Gedankenstütze :-)

                        Nun habe ich doch noch ein Problem.

                        Aktuelle DB-Struktur
                        ID int(11) Nein auto_increment
                        TITEL varchar(25) Nein
                        CONTENT text Nein
                        SORT int(2) Nein 0
                        ACTIVE int(1) Nein 1

                        ID = Ist klar
                        TITEL = Überschrift der Menübox
                        CONTENT = Inhalt der Menübox ( einzelne Menüs )
                        SORT = Hier sollen die Menüs mal sortiert werden können
                        ACTIVE = Hier kann eine Menübox aktiviert bzw. deaktiviert werden.
                        Ausgelesen und Angezeigt werden die Boxen mit
                        PHP-Code:
                        <?
                        $sql="SELECT titel,content FROM $db_table21";
                        $ergebnis=mysql_query($sql, $db);
                        if($ergebnis) {
                        while($zeile =mysql_fetch_array($ergebnis)) {

                        $titel = $zeile["titel"];
                        $content = $zeile["content"];

                        $thiscontent .= "
                        <table class=\"navborder\" width=\"100%\" cellspacing=\"0\" cellpadding=\"2\">
                        <tr>
                        <td class='navtitel' align='center'>$titel</td>
                        </tr>
                        <tr>
                        <td class='navcontent'>$content</td>
                        </tr>
                        </table><br>
                        ";

                        }
                        mysql_free_result($ergebnis);
                        } else {
                        echo "$sql falsch";
                        }
                        ?>
                        <? echo $thiscontent; ?>
                        <?
                        z.B. http://www.ebayauktionshaus.de/scripte/fotovoting

                        Hier werden die einzelnen Boxen mit ID, TITEL angezeigt :
                        PHP-Code:
                        <?
                        $sql="SELECT id,titel,content,active FROM $db_table21";
                        $ergebnis=mysql_query($sql, $db);
                        if($ergebnis) {
                        while($zeile =mysql_fetch_array($ergebnis)) {

                        $titel = $zeile["titel"];
                        $content = $zeile["content"];
                        $id = $zeile["id"];
                        $active = $zeile["active"];

                        ?>
                        <table width="100%" border="0" cellspacing="1" cellpadding="2">
                         <form name="aendern" method="post" action="naviboxen.php">
                          <tr bgcolor="#FFFFFF">
                           <td width="28"><b>Nr.</b></td>
                           <td><b>Boxname</b></td>
                           <td width="50"><b>Löschen</b></td>
                          </tr>
                          <tr bgcolor="#FFFFFF">
                           <td width="28"><? echo $id; ?></td>
                           <td><a href="" target="_top"><? echo $titel; ?></a></td>
                           <td width="50" align="left"><input type="checkbox" name="markthis[left][]" value="1"></td>
                          </tr>
                         </form>
                        </table>
                        <?

                        }
                        mysql_free_result($ergebnis);
                        } else {
                        echo "$sql falsch";
                        }
                        ?>
                        Wie kann ich es nun machen, dass ich auf die richtige Zeile klicke
                        und dann diese Menübox mit dem 'content' angezeigt wird ?

                        Admindemo :

                        http://www.ebayauktionshaus.de/scripte/fotovoting/admin

                        Benutzername und Passwort : test
                        unter -> Design -> Navigation


                        Für Hilfe wäre ich dankbar

                        Gruss Éla

                        Kommentar


                        • #13
                          Wie kann ich es nun machen, dass ich auf die richtige Zeile klicke
                          und dann diese Menübox mit dem 'content' angezeigt wird ?
                          mhh weiss jetzt nicht genau was du meinst, etwa die box aktivieren?


                          PS: http://www.ebayauktionshaus.de/ deine Domain? ebay sieht nicht gerne Ihren Namen in fremden url´s
                          mfg
                          marc75

                          <Platz für anderes>

                          Kommentar


                          • #14
                            mhh weiss jetzt nicht genau was du meinst, etwa die box aktivieren?
                            Das kommt erst noch, was ich meinte ist, dass wenn ich auf ein Menüpunkt im Adminbereich klicke mir die Daten für dieses Menü aus der DB gezogen werden und angezeigt und ich es dann ändern kann.

                            So habe selber mal ein bisschen rumexperementiert ( schwieriges Wort )
                            und nun bin ich zu folgendem Code gekommen
                            PHP-Code:
                            <?
                            if ($aendern == 'menuebox')  {

                            $sql ="SELECT id, titel, content FROM $db_table21 WHERE id='$id'";
                              $ergebnis=mysql_query($sql, $db);
                              while($zeile =mysql_fetch_array($ergebnis)) {
                            $titel = $zeile["titel"];
                            $content = $zeile["content"];

                            ?>
                            <table>
                            <tr>
                            <td class="navtitel" align="center"><input class="textarea" type=text name="titel" value="<? echo $titel; ?>" size="76"></td>
                            </tr>
                            <tr>
                            <td class="navcontent"><textarea  name="content" cols="75" rows="20"><? echo $content; ?></textarea></td>
                            </tr>
                            </table>
                            <?
                            }} else {



                            $sql="SELECT id,titel,content,active FROM $db_table21";
                            $ergebnis=mysql_query($sql, $db);
                            if($ergebnis) {
                            while($zeile =mysql_fetch_array($ergebnis)) {

                            $titel = $zeile["titel"];
                            $content = $zeile["content"];
                            $id = $zeile["id"];
                            $active = $zeile["active"];

                            ?>
                            <table width="100%" border="0" cellspacing="1" cellpadding="2">
                             <form name="aendern" method="post" action="naviboxen.php">
                              <tr bgcolor="#FFFFFF">
                               <td width="28"><b>Nr.</b></td>
                               <td><b>Boxname</b></td>
                               <td width="50"><b>Löschen</b></td>
                              </tr>
                              <tr bgcolor="#FFFFFF">
                               <td width="28"><? echo $id; ?></td>
                               <td><a href="naviboxen.php?aendern=menuebox&id=<? echo $id; ?>" target="_top"><? echo $titel; ?></a></td>
                               <td width="50" align="left"><input type="checkbox" name="markthis[left][]" value="1"></td>
                              </tr>
                             </form>
                            </table>
                            <?

                            }
                            mysql_free_result($ergebnis);
                            } else {
                            echo "$sql falsch";
                            }}
                            Wobei ich hier sehr viele schleifen verwende und ich nun noch eine brauch um ein update der geänderten Daten in die DB zu schreiben.

                            Gibt es da eine einfachere Lösung ?

                            Diese Funktion ist im Admin nun aktiv, d.h. einfach die Navigation aufrufen und auf einen der Überschriften klicken.
                            PS: http://www.ebayauktionshaus.de/ deine Domain? ebay sieht nicht gerne Ihren Namen in fremden url´s
                            Ja, meine Domain mal schauen was passier, da der geschützte Name 'ebay' nicht alleine steht - Sie können es zwar nicht gerne sehen aber habe ( soweit ich weis ) keine rechtliche handhabe.

                            Aber die Domain finde ich Super **grins**

                            Gruss und Danke Ela

                            Kommentar


                            • #15
                              afaik haben sie eine rechtliche Handhabe aus 2erlei gründen:

                              1. Der Name Ebay ist geschützt

                              2. Ein normaler User würde mit dieser URL Ebay in verbindung bringen, nicht mit irgendeinem anderen Auktionshaus

                              Mach das schnell weg, eine kostenpflichtige Abmahnung würde einige tausend euro kosten...


                              An mich bitte keine unaufgeforderten E-Mails senden (ausser ihr seid bereit geld zu zahlen, dann gerne )

                              Kommentar

                              Lädt...
                              X