Tabelleninahlt auslesen, per klick aufrufbar [MySQL]

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

  • Tabelleninahlt auslesen, per klick aufrufbar [MySQL]

    Hallo leute,

    ich habe ein kleines Problem ^^ Ich will aus einer Datenbank (Testsql1) Die Tabelle (benutzerdaten) auslesen lassen, diese daten sollen jedoch ID wiese eingeteillt werden und dann in einer PHP Datei per klick anzeigbar sein ( nach dem Hide prinzip)
    In der Tabelle gibt es die Felder Userdaten, config usw.
    Man könnte auch sagen das Ganze soll zeilenweise ausgelesen werden...

    Also es sollte dynamisch alle zeilen ausgeben (wenn neu zeilen/Ids da sind solten diese auch erscheinen) und dann sollte da nen Link / Button sein, auf den man klickt und z.b. die Infos von ID 1 bekommt

    Währe cool wenn jm. hilft

    mfg
    Restless
    Zuletzt geändert von Restless; 23.11.2009, 18:34.

  • #2
    Nein, das mit dem Forum ist so korrekt. Hast du denn schon eigene Ansätze dazu?

    Peter
    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
    Meine Seite

    Kommentar


    • #3
      ich sag mal jain ^^ (eher nein)

      Also das hier ist das Script....


      Code:
      <!-- Javascript -->
              <script type="text/javascript">
                  function showHideLayer(id){
                      e = document.getElementById(id);
                      if(e.style.display=="block"){
                          e.style.display = "none";
                      } else {
                          e.style.display = "block";
                      }
                  }
              </script>

      PHP-Code:
      <?php
      $dbverbindung 
      mysql_connect ($host$username$password);
      $dbanfrage "SELECT * from $usertabelle";
      $result mysql_db_query ($dbname$dbanfrage$dbverbindung);
       while (
      $ausgabe mysql_fetch_array ($result))
       {
       print 
      (
      "   
          <!-- Link zum Anzeigen/Verstecken -->
          <a href='alternativerLink' onclick='showHideLayer('meinLayer');return(false)'>Anzeigen/Verstecken</a>
          <div id='meinLayer' style='display:none;'>
          <table>
                   <tr>
                      <td>Benutzername: 
      $ausgabe[Nickname]</td>
                  </tr>
                  <tr>
                      <td>K&uuml;rzel: 
      $ausgabe[kurz]</td>
                  </tr>
                  <tr>
                      <td>Slots: 
      $ausgabe[Straße]</td>
                  </tr>
                  <tr>
                      <td>Ort: 
      $ausgabe[Ort]</td>
                  </tr>
          </table>
          </div>
          <br>"
          
      );
       }
      mysql_close ($dbverbindung)
      ?>
      Es funktionier so eher halb / bis gar nicht ^^ er versteckt es zwar und man kann es im Quelltext auch sehen aber wenn man klickt kommt man immer nur zum Link (indem falle alternativLink) nur fällt mir immo nicht ein was ich da sonst nehmen sollte ... # oder index.php funktionieren nicht ^^

      Kommentar


      • #4
        Hallo,

        dein onclick-Attribut ist ungültig, weil du darin dieselben (einfachen) Anführungszeichen verwendest, wie für den Attributwert selbst. Ansonsten ist als href-Attribut "#" die erste Wahl.

        Gruß,

        Amica
        [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
        Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
        Super, danke!
        [/COLOR]

        Kommentar


        • #5
          Das kann so nicht funktionieren. Jeder "Layer" muss über eine eindeutige ID verfügen. Und das mit dem Link ist auch falsch. Du musst so in der Art vorgehen:
          PHP-Code:
          while ($ausgabe mysql_fetch_array ($result))
          {
            echo 
          '<a href="javascript:;" onclick="showHideLayer(\'meinLayer'.$ausgabe['id'].'\');">Anzeigen/Verstecken</a>
            <div id="meinLayer'
          .$ausgabe['id'].'" style="display:none;">
              ...
            </div>'
          ;

          Und informieren dich bitte über Zeichenkettenverknüpfungen, da kannst du schon einige Fehler vermeiden.

          Peter
          Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
          Meine Seite

          Kommentar


          • #6
            Zitat von AmicaNoctis Beitrag anzeigen
            Ansonsten ist als href-Attribut "#" die erste Wahl.
            Nicht bei langen Listen, da man sonst immer wieder nach oben springt.

            Peter
            Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
            Meine Seite

            Kommentar


            • #7
              PHP-Code:
              <a href='alternativerLink' onclick='showHideLayer(\"meinLayer\");return(false)'>Anzeigen/Verstecken</a
              Jut Fehler behoben ^^
              nun aber ein weiteres Problem ... wenn ich jetzt 2 Einträge in der MySQL Datenbank habe (Test1 und test2) dann kann ich auf bei Buttuns klicken, aber es wird immer nur Test1 angezeigt .... im Quellcode ist es aber richtig ... woran liegts und wenn es nen statisches Problem ist wie bekomme ich es dynamisch hin?

              thx schonmal für die vorherige Hilfe

              Kommentar


              • #8
                Siehe meine beiden letzten Posts.

                Peter
                Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                Meine Seite

                Kommentar


                • #9
                  Du kannst auch das Start-Tag des div direkt nach das End-Tag des a schreiben:

                  HTML-Code:
                  ...</a><div ...
                  Dann kannst du showHideLayer direkt mit this.nextSibling aufrufen und brauchst darin auch nicht erst mit getElementById arbeiten (das ist nämlich teuer).

                  Mal als einfaches Beispiel, wie ich sowas immer mache:

                  HTML-Code:
                  ...
                  <script type="text/javascript">/*<![CDATA[*/
                  	function toggleBlock (pNode) {
                  		pNode.nextSibling.style.display
                  			= pNode.nextSibling.style.display == 'block'
                  				? 'none'
                  				: 'block';
                  		pNode.firstChild.nodeValue
                  			= pNode.firstChild.nodeValue == 'show'
                  				? 'hide'
                  				: 'show';
                  	}
                  /*]]>*/</script>
                  ...
                  <ul>
                  	<li>
                  		<a href="#" onclick="toggleBlock(this); return false">show</a><ul>
                  			<li>
                  				...
                  			</li>
                  			...
                  		</ul>
                  	</li>
                  	...
                  </ul>
                  ...
                  [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                  Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                  Super, danke!
                  [/COLOR]

                  Kommentar


                  • #10
                    Dann kannst du showHideLayer direkt mit this.nextSibling aufrufen und brauchst darin auch nicht erst mit getElementById arbeiten (das ist nämlich teuer).
                    Du weißt aber, dass Zeilenumbrüche in den einzelnen Browsern unterschiedlich interpretiert werden? Und du hier keine entsprechende Abfrage gemacht hast? Schließlich könnte der Code ja auch so aussehen:
                    PHP-Code:
                    <a href="#" onclick="toggleBlock(this); return false">show</a>
                      <
                    ul>
                        <
                    li>
                          ...
                        </
                    li>
                      </
                    ul
                    Und warum ist getElementById teurer als nextSibling? Außerdem springt man bei einem #-Link immer wieder nach oben, was bei langen Listen nicht so prickelnd ist.

                    Peter
                    Zuletzt geändert von Kropff; 23.11.2009, 19:44.
                    Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                    Meine Seite

                    Kommentar


                    • #11
                      Zitat von Kropff Beitrag anzeigen
                      Du weißt aber, dass Zeilenumbrüche in den einzelnen Browsern unterschiedlich interpretiert werden?
                      Deswegen soll der Block auch direkt nach dem Element mit dem onclick notiert werden, weil dann kein Zeilenumbruch mehr dazwischen ist.

                      Zitat von Kropff Beitrag anzeigen
                      Und warum ist getElementById teurer als nextSibling?
                      Warum das so ist, kann ich nicht mit Gewissheit sagen. Dass es so ist, hab ich mal mit entsprechenden Tests rausgefunden.
                      [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                      Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                      Super, danke!
                      [/COLOR]

                      Kommentar


                      • #12
                        Zitat von AmicaNoctis Beitrag anzeigen
                        Deswegen soll der Block auch direkt nach dem Element mit dem onclick notiert werden, weil dann kein Zeilenumbruch mehr dazwischen ist.
                        Das kann aber keiner garantieren. Da muss nur ein Ordnungsfanatiker wie ich in den Templates aufräumen, dann ist hängen im Schacht. Darum sollte man imho immer mit nodeType vorher prüfen.

                        Peter
                        Nukular, das Wort ist N-u-k-u-l-a-r (Homer Simpson)
                        Meine Seite

                        Kommentar


                        • #13
                          Na dann musst du das halt prüfen, hier der Code für die, die es noch nicht wissen:

                          Code:
                          var nextNode = pNode.nextSibling;
                          while (nextNode.nodeType != 1) {
                              nextNode = nextNode.nextSibling;
                          }
                          // mach was mit nextNode
                          Übrigens haben andere auch die Erfahrung gemacht, dass getElementById teuer ist. Hier mal ein Exzerpt von http://www.mail-archive.com/jquery-e...msg09056.html:

                          There are fast methods and slow methods:
                          Fast
                          - parentNode
                          - nextSibling
                          - ownerDocument
                          - firstChild
                          Slow
                          - previousSibling
                          - getElementById
                          - lastChild

                          The getElemenByTagName has a paradox. It returns the list of elements very quickly. However, access to elements from that list is very slow. It feels as if it were returning a proxy of sorts.

                          In a large tree it's faster to collect a hash of all element ids than use getElementById.
                          Zuletzt geändert von AmicaNoctis; 23.11.2009, 20:09.
                          [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                          Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                          Super, danke!
                          [/COLOR]

                          Kommentar


                          • #14
                            ok ok ^^ passt ja schon halbwegs xD
                            habe jetzt das einfach auch mal das von AmicaNoctis probiert und habs soweit Fast komplett hinbekommen
                            Das einzigste was mich stört ist nur noch das es am anfang geöfnet ist ...
                            Das müsste doch i-wie einstellbar sein ... Und das mit dem immer nach oben springen habe ich wie Kropff bei dem alten script mit javascript:; gelöst ... hier mal der neue Auszug:


                            Code:
                            <script type="text/javascript">/*<![CDATA[*/
                                function toggleBlock (pNode) {
                                    pNode.nextSibling.style.display
                                        = pNode.nextSibling.style.display == 'none'
                                            ? 'block'
                                            : 'none';
                                    pNode.firstChild.nodeValue
                                        = pNode.firstChild.nodeValue == 'show'
                                            ? 'Hide'
                                            : 'show';
                                }
                            /*]]>*/</script>
                            PHP-Code:
                            <?php
                            $dbverbindung 
                            mysql_connect ($host$username$password);
                            $dbanfrage "SELECT * from $usertabelle";
                            $result mysql_db_query ($dbname$dbanfrage$dbverbindung);
                             while (
                            $ausgabe mysql_fetch_array ($result))
                             {
                             print 
                            (
                            "<a href='javascript:;' onclick='toggleBlock(this); return false'>Hide</a><ul>
                                <table>
                                         <tr>
                                            <td>Benutzername: 
                            $ausgabe[Nickname]</td>
                                        </tr>
                                        <tr>
                                            <td>K&uuml;rzel: 
                            $ausgabe[kurz]</td>
                                        </tr>
                                        <tr>
                                            <td>Slots: 
                            $ausgabe[Straße]</td>
                                        </tr>
                                        <tr>
                                            <td>Ort: 
                            $ausgabe[Ort]</td>
                                        </tr>
                                </table>
                                </ul>
                                <br>"
                                
                            );
                             }
                            mysql_close ($dbverbindung)
                            ?>

                            Kommentar


                            • #15
                              Zitat von Restless Beitrag anzeigen
                              Das einzigste was mich stört ist nur noch das es am anfang geöfnet ist ...
                              Das mach ich mit CSS. Hab ich vergessen zu erwähnen, sorry.

                              [COLOR="Red"]Edit[/COLOR]: Das mit dem ul war nur ein Beispiel. In deinem Falle würdest du das durch table ersetzen: ...</a><table>...
                              [COLOR="DarkSlateGray"]Hast du die [COLOR="DarkSlateGray"]Grundlagen zur Fehlersuche[/color] gelesen? Hast du Code-Tags benutzt?
                              Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
                              Super, danke!
                              [/COLOR]

                              Kommentar

                              Lädt...
                              X