Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] Select Abfragen zusammenführen

Einklappen

Neue Werbung 2019

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

  • [Erledigt] Select Abfragen zusammenführen

    Einen wunderbaren guten Tag,

    ich habe ein kleines Problem und stehe irgendwie auf dem Schlauch.
    Mein "Problem" ist folgendes:

    Ich habe ein Script mit 3 Select abfragen aus ein und der selben Tabelle. Die Tabelle enthält 4 Felder mit den Bezeichnungen "id", "link", "name" und "target".
    Es handelt sich dabei um eine Linkliste.

    Nun möchte ich mit meiner Abfrage jeweils 5 dieser Links in einen DIV-Container packen. Das ganze funktioniert mit meinem Script bisher auch wunderbar, nur bin ich mir sicher, das man aus den drei Abfragen auch lediglich eine Abfrage machen kann.

    Oder liege ich damit falsch?

    PHP-Code:
    <?php
    include_once("config.php");


    $link mysql_connect(db_serverdb_userdb_pass);
    mysql_select_db(db_database,$link);
    if (!
    $link) {
        die(
    'keine Verbindung möglich: ' mysql_error());
    }

    #abfrage nummer 1
    $sql 'SELECT * FROM links ORDER BY id LIMIT 5 ';
    $db_erg mysql_query$sql );
    if ( ! 
    $db_erg )
    {
      die(
    'Ungültige Abfrage: ' mysql_error());
    }
    echo 
    "<div id=\"id1\">\n<ul>\n";
    while (
    $zeile mysql_fetch_array$db_ergMYSQL_ASSOC))
    {
      echo 
    "<li><a href=\""$zeile['link'] . "\" target=\"" $zeile['target'] . "\">" $zeile['name'] . "</li>\n";
    }
    echo 
    "</ul>\n</div>\n";
    mysql_free_result$db_erg );

    #abfrage nummer 2
    $sql2 'SELECT * FROM links ORDER BY id LIMIT 5,5';
    $db_erg2 mysql_query$sql2 );
    if ( ! 
    $db_erg2 )
    {
      die(
    'Ungültige Abfrage: ' mysql_error());
    }
    echo 
    "<div id=\"id2\">\n<ul>\n";
    while (
    $zeile mysql_fetch_array$db_erg2MYSQL_ASSOC))
    {
      echo 
    "<li><a href=\""$zeile['link'] . "\" target=\"" $zeile['target'] . "\">" $zeile['name'] . "</li>\n";
    }
    echo 
    "</ul>\n</div>\n";
    mysql_free_result$db_erg2 );

    #abfrage nummer 3
    $sql3 'SELECT * FROM links ORDER BY id LIMIT 10,5';
    $db_erg3 mysql_query$sql3 );
    if ( ! 
    $db_erg3 )
    {
      die(
    'Ungültige Abfrage: ' mysql_error());
    }
    echo 
    "<div id=\"id3\">\n<ul>\n";
    while (
    $zeile mysql_fetch_array$db_erg3MYSQL_ASSOC))
    {
      echo 
    "<li><a href=\""$zeile['link'] . "\" target=\"" $zeile['target'] . "\">" $zeile['name'] . "</li>\n";
    }
    echo 
    "</ul>\n</div>\n";
    mysql_free_result$db_erg3 );

    mysql_close($link);
    ?>
    Ich bin für jede Hilfe und jeden Denkanstoß dankbar

  • #2
    Äh wie jetzt? Mach doch einfach LIMIT 15 ???

    Kommentar


    • #3
      hmmm wie soll ich das erklären. ICh möchte halt das in 3 DIV-Container jeweils 5 links auftauchen, nehm ich LIMIT 15 werden in einem Container alle Links angezeigt. Das möchte ich ja nciht, ich will es schon so haben wie es jetzt ist, jeweils 5 Links in 3 Containern. Meine Frage ansich ist, muss ich wirklich diese 3 Select-Abfragen starten und die Datenbank dreimal "beanspruchen" oder kann ich es in einer Abfrage zusammenführen und Link 1 - 5 in DIV 1, Link 6 - 10 in DIV 2 und Link 11 - 15 in DIV 3 ausgeben lassen?

      Kommentar


      • #4
        Ganz einfach, du machst LIMIT 15 und zählst mit an welcher Stelle du gerade bist. Dann gibst du halt an den definierten Stellen zusaetzlich deinen Div-kram aus.

        Kommentar


        • #5
          danke erstmal für den Tipp, stehe aber immer noch vor der Mauer bzw. aufm Schlauch.

          Hab jetzt mit folgendem Code die Ausgabe der ersten 5 Daten ausgelesen und in den DIV-Container 1 geschrieben:

          PHP-Code:
          $sql 'SELECT * FROM links ORDER BY id LIMIT 15';
          $db_erg mysql_query$sql );
          if ( ! 
          $db_erg )
          {
            die(
          'Ungültige Abfrage: ' mysql_error());
          }
          echo 
          "<div id=\"id1\">\n<ul>\n";
          while (
          $zeile mysql_fetch_array($db_ergMYSQL_ASSOC))
          {
              if(
          current($zeile)<=5){
                  echo 
          "<li><a href=\""$zeile['link'] . "\" target=\"" $zeile['target'] . "\">" $zeile['name'] . "</li>\n";
              }
          }
          echo 
          "</ul>\n</div>\n"
          Wie bekomme ich es nun hin, die nächsten fünf in einen anderen DIV-Container zu schreiben. Entweder bin ich zu doof oder seh die einfache Lösung nur nicht.

          Kommentar


          • #6
            PHP-Code:
            $dreierzähler 0;
            $sql "SELECT .... LIMIT 15";
            $erg mysql_query($sql);
            while ( 
            $row mysql_fetch_assoc($erg) ) {

              
            // Ausgabe

              
            $dreierzähler++;
              if ( 
            $dreierzähler == 3) {
                
            // Drei Augaben sind vorbei - jetzt Kram ausgeben
                
            $dreierzähler 0
              }

            [PHP]if ($var != 0) {
            $var = 0;
            }[/PHP]

            Kommentar


            • #7
              Thx für die Hilfe, jetzt at es so geklappt, wie ich es mir vorgestellt hab.

              Kommentar

              Lädt...
              X