Ankündigung

Einklappen
Keine Ankündigung bisher.

Überschrift ausblenden wenn keine Datensätze m. wehre folgen

Einklappen

Neue Werbung 2019

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

  • Überschrift ausblenden wenn keine Datensätze m. wehre folgen

    Moin,

    ich habe folgendes vor.
    Auf der Seite sollen die Ausgabedaten mit vielen Tabellen dargestellt werden.
    Die Datensätze haben verschiedene Felder, wovon das Suchkriterium bei dem Feld pnummer ist.
    Dieses ist ein Gruppenzuordnung.

    Suchkriterien gibt es viele, 238 Stück, auf dieser Seite frage ich jedoch nur 20 ab.
    Die sichtbare Tabelle soll aber nur denn erscheinen wenn ich einen Eintrag habe der meiner where-Abfrage entspricht.
    Ich möchte vermeiden dass die 20 Tabellenüberschriften erscheinen, wovon 4 Ausgaben unter der Überschrift haben, der Rest 16 nur die Überschrift.
    Wenn als nur eine Überschrift erschein ohne Text darunter, soll sie auch gar nicht erst erscheinen.
    Ich habe verschiedene If-Abfragen und Schleifen versucht, leider ohne Erfolg.

    Unten der Code, wo wird was eingetragen?
    Vielen Dank für Eure Mühe im Voraus.

    Gruss aus Hamburg

    Klaus

    PHP-Code:
    <?php
    <?php
    include ("db12357connect.php");

    $SQL_Befehl "SELECT * FROM `mannschaftbm` WHERE pnummer = 'flotkdr' order by jj01,mm01,tt01,jj02,mm02,tt02";
    $resultat mysql_db_query("db12357"$SQL_Befehl);

    // ab hier soll nun angezeigt werden wenn pnummer = 'flotkdr' 
    // wenn nicht, dann zur nächsten Abfrage

    echo"[b]<font face=Arial,Helvetica>Ausgabetext über der Überschrift</font>[/b]";
    echo
    "<table>";
    echo
    "<tr bgcolor=B4B0B0>";
    echo
    "<td WIDTH=140>[b]<font face=Arial,Helvetica>Name u. Mail</font>[/b]</td>";
    echo
    "<td WIDTH=140>[b]<font face=Arial,Helvetica>Vorname</font>[/b]</td>";
    echo
    "<td WIDTH=220>[b]<font face=Arial,Helvetica>Dienstzeit</font>[/b]</td>";
    echo
    "<td WIDTH=270>[b]<font face=Arial,Helvetica>Dienstgrad u. Verwendung</font>[/b]</td>";
    echo
    "<td WIDTH=230>[b]<font face=Arial,Helvetica>Bemerkung</font>[/b]</td>";
    echo
    "</tr>";
      
    $color1="#E6E6E6";
      
    $color2="#F4F4F4";
      
    $row_count=0;

    while (
    $row mysql_fetch_OBJECT($resultat)) {
    $row_color = ($row_count 2) ? $color1 $color2;
    echo
    "<tr bgcolor="$row_color .">";
    echo
    "<td WIDTH=140 align=\"left\"><a href=\"mailto:"
        
    .$zeile->postmail
        
    ."?subject=Text für Betreffzeile in der Mail $row->vname $row->name\"><font face=Arial,Helvetica>"
        
    .$row->name
        
    ."</font></a></td>";
    echo
    "<td WIDTH=140><font face=Arial,Helvetica>$row->vname</font></td>";
    echo
    "<td WIDTH=220><font face=Arial,Helvetica>$row->tt01.$row->mm01.$row->jj01 bis $row->tt02.$row->mm02.$row->jj02</font></td>";
    echo
    "<td WIDTH=270><font face=Arial,Helvetica>$row->taetigkeit</font></td>";
    echo
    "<td WIDTH=230><font face=Arial,Helvetica>$row->bemerkung</font></td>";
    echo
    "</tr>";
    $row_count++;
      }

    .....
    // weitere Abfragen
    ....

    echo
    "</table>";

    mysql_close;
    ?>

    ?>

  • #2
    Ich weiß nicht ob ich das jetzt richtig verstanden habe, aber Du kannst es ja so
    machen, dass nur wenn in $row etwas steht, es auch ausgegeben wird, z.B. so:

    PHP-Code:
    <?php
    if($row){
    Ausgabe}
    ?>
    Ist $row nämlich nicht gefüllt, bzw. ohne Wert, dann wird auch nichts ausgegeben.

    Kommentar


    • #3
      Wandle die ganzen Echo-Anweisungen in eine Zuweisung um und packe damit den ganzen Tabellenkopf in eine String-Variable.
      Nach dem mysql_query() kannst Du mit mysql_num_rows() nachgucken, ob Du ein Ergebnis hast.
      Wenn das >0 ist, gibst Du den Tabellenkopf aus.

      Für das untere Ende der Tabelle gilt das gleiche.

      Der Vorschlag von funky bringt nix, weil $row ja für jede Zeile ausgelesen und verarbeitet wird. Somit hättest Du pro Zeile noch ne Überschrift.
      **********************************
      Nein, ich bin nicht die Signatur.
      Ich putze hier nur.
      **********************************

      Kommentar


      • #4
        Gut, nun hab ich es auch verstanden, dass pro zeile eine Überschrift
        ausgegeben wird

        Kommentar


        • #5
          Moin,

          vielen Dank für die rasche Antwort.
          Heute Abend eingefügt, es klappt, allerdings mit ein paar Änderungen, die mir als Neuling nicht ganz so nachvollziehbar sind, aber auch google.de sei Dank fand ich letztlich die Lösung zu den Fehlermeldungen.
          Erweitern musste ich
          PHP-Code:
          <?php
          $SQL_Befehl 
          mysql_query(" SELECT *  FROM`mannschaftbm` WHERE pnummer = 'flottkdr' order by jj01,mm01,tt01,jj02,mm02,tt02");

          mysql_query(" SELECT…”);
          ?>
          Dann aber hatte
          PHP-Code:
          <?php
          while ($row mysql_fetch_OBJECT($resultat)) { 
          ?>
          eine Fehlermeldung produziert.
          Ich schrieb alles zurück und fügte zwei Zeilen komplett neu ein
          PHP-Code:
          <?php
          $resultat2 
          mysql_query("SELECT *  FROM mannschaftbm WHERE pnummer = 'flottkdr'");
          if(
          mysql_num_rows($resultat2) >) {
          ?>
          Zweite Abfrage für die Zeilenauswertung, siehe da es klappte.
          Sicherlich nicht die eleganteste Lösung, aber ich bin froh dass es nun klappt.
          Schönen Abend und schönes Wochenende.

          Gruss aus Hamburg

          Klaus

          Kommentar


          • #6
            Bist Du sicher, dass im Fehlerfall nicht auch schon mysql_num_rows() einen Fehler gemeldet hat?

            Du solltest immer zum Testen oben im Script die Zeile
            error_reporting(E_ALL);
            stehen haben und bei jedem mysql_query sollte dahinter
            mysql_query(...) or die (mysql_error())
            stehen.

            Was soll denn das da für ein Code sein?
            PHP-Code:
            <?php
            $SQL_Befehl 
            mysql_query(" SELECT *  FROM`mannschaftbm` WHERE pnummer = 'flottkdr' order by jj01,mm01,tt01,jj02,mm02,tt02");

            mysql_query(" SELECT…”);
            ?>
            Sowas ist Quatsch. Die Funktion mysql_query() aufrufen aber den Rückgabewert nicht verwenden bringt nix.
            Darum kannst Du aus $resultat auch keine Objekte holen, weil Du da kein Query-Ergebnis reingepackt hast...

            Tippe nicht irgendwelches Zeugs aus dem Gedächnit, sondern poste hier mit copy&paste. Alles andere ist wertlos.
            **********************************
            Nein, ich bin nicht die Signatur.
            Ich putze hier nur.
            **********************************

            Kommentar


            • #7
              Hallo Gerhard,

              vielen Dank für die doch forsche Antwort.
              Muster einer von 56 Abfragen/Ausgaben:
              PHP-Code:
              <?php
              $SQL_Befehl 
              "SELECT *  FROM`mannschaftbm` WHERE pnummer = 'flottkdr' order by jj01,mm01,tt01,jj02,mm02,tt02";
              $resultat mysql_db_query("db12357"$SQL_Befehl);
              $resultat2 mysql_query("SELECT *  FROM mannschaftbm WHERE pnummer = 'flottkdr'");
              if(
              mysql_num_rows($resultat2) >) {
              echo
              "[b]<font face=Arial,Helvetica>Kdr Kommandeur der Schnellboote</font>[/b]";
              echo
              "<table>";
              echo
              "<tr bgcolor=B4B0B0>";
              echo
              "<td WIDTH=140>[b]<font face=Arial,Helvetica>Name u. Mail</font>[/b]</td>";
              echo
              "<td WIDTH=140>[b]<font face=Arial,Helvetica>Vorname</font>[/b]</td>";
              echo
              "<td WIDTH=220>[b]<font face=Arial,Helvetica>Dienstzeit</font>[/b]</td>";
              echo
              "<td WIDTH=270>[b]<font face=Arial,Helvetica>Dienstgrad u. Verwendung</font>[/b]</td>";
              echo
              "<td WIDTH=230>[b]<font face=Arial,Helvetica>Bemerkung</font>[/b]</td>";
              echo
              "</tr>";
                
              $color1="#E6E6E6";
                
              $color2="#F4F4F4";
                
              $row_count=0;

              while (
              $row mysql_fetch_OBJECT($resultat)) {
              $row_color = ($row_count 2) ? $color1 $color2;
              echo
              "<tr bgcolor="$row_color .">";
              echo
              "<td WIDTH=140 align=\"left\"><a href=\"mailto:"
                  
              .$zeile->postmail
                  
              ."?subject=Kameradensuchen über schnellboot.net - Nachricht für $row->vname $row->name\"><font face=Arial,Helvetica>"
                  
              .$row->name
                  
              ."</font></a></td>";
              echo
              "<td WIDTH=140><font face=Arial,Helvetica>$row->vname</font></td>";
              echo
              "<td WIDTH=220><font face=Arial,Helvetica>$row->tt01.$row->mm01.$row->jj01 bis $row->tt02.$row->mm02.$row->jj02</font></td>";
              echo
              "<td WIDTH=270><font face=Arial,Helvetica>$row->taetigkeit</font></td>";
              echo
              "<td WIDTH=230><font face=Arial,Helvetica>$row->bemerkung</font></td>";
              echo
              "</tr>";
              $row_count++;
                }
              echo
              "</table>
              "
              ;
              } else
              {}
              ?>
              Unterscheiden tun sie sich nur mit:
              pnummer = 'einer von 56'
              Eine Fehlermeldung bekomme ich nicht.
              Muster, wenn nur vier Abfragen von 56 Inhalte haben:

              Es gibt Sachen zwischen Himmel und Erde, die lassen sich momentan und nicht sofort erklären.
              Für das wieso oder warum, darüber mache ich mir heute keine Gedanken mehr.
              Dafür ist die Zeit heute zu kurzlebig.
              Ich selber bin seit 86 dabei, damals waren die Kisten so gross wie Schrankwände.
              Selbst eine AS/400 nahm erst Mitte der 90er die Form eines Towers an.
              PHP selber ist bei mir privat, soll einige Seiten bei mit mit HTML ersetzen, die sich stetig mit den Inhalten erweitern.
              EVA ist gefragt und mir die Handarbeit ersparen.
              http://schnellboot.net/de/bm/crewlist/index.html
              Eingabe und Ausgabe in Echtzeit, nicht wie momentan noch per Mail, dann händisch einpflegen.
              PHP sei Dank.

              Gruss aus Hamburg

              Klaus

              PS. Ich vergass
              bitte mit oben vergleichen:
              Erweitern musste ich
              .................
              Dann aber hatte
              ....................
              eine Fehlermeldung produziert
              Das zum Thema Fehlermeldungen, die hatte ich, aber entsprechend wieder ausgebügelt.
              Wer lesen kann, ist klar im Vorteil.

              Kommentar


              • #8
                Mach bitte nicht den Fehler, eine auf den ersten Blick etwas rüde klingende Antwort persönlich zu nehmen.
                Erfahrungsgemäß ist der Erinnerungswert von deutlichen Worten höher als von nüchternen Ausführungen.

                Wenn der von mir bemängelte Code dem fehlerhaften Zustand entsprach, war es aus den genannten Gründen klar, dass er nicht funktionieren konnte. Da braucht der Query-String gar nicht falsch zu sein, weil die Aufrufe schon nicht passen.
                Auch wenn Du es selbst gefunden hattest, wollte ich nochmal drauf hinweisen, dass das so nix werden kann.
                Ich habe sehr wohl gelesen, dass Du schon was zurück geändert hast. Aber das sollte ja die fehlerhafte Version sein.


                Und weil ich grad am Rummeckern bin...
                Werte von Attributen in HTML-Tags gehören in Anführungszeichen:
                <td WIDTH="140">
                In Hinblick auf XHTML sollten Attribute klein geschrieben werden, aber das ist für HTML nicht bindend.

                Ich mache PHP übrigens auch zu 100% privat. Beruflich hab ich nichts mit Webseiten am Hut.
                **********************************
                Nein, ich bin nicht die Signatur.
                Ich putze hier nur.
                **********************************

                Kommentar

                Lädt...
                X