Ankündigung

Einklappen
Keine Ankündigung bisher.

Wie kann ich mit php/mysql einen Datensatz anzeigen lassen, wenn einer vorhanden ist?

Einklappen

Neue Werbung 2019

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

  • Wie kann ich mit php/mysql einen Datensatz anzeigen lassen, wenn einer vorhanden ist?

    Hallo zusammen,
    ich muss euch mal wieder um Hilfe beten ...

    Also:
    Ich bin gerade an einem Forum zu basteln (kein so richtig professionelles) und ich wollte eigentlich, wenn ein Datensatz vorhanden ist den anzeigen lassen und wenn keiner vorhanden ist dann nicht. Wie kann ich das machen?

    Falls nötig Code:
    PHP-Code:
      <html>
    <head>
    <style type="text/css">
    <!--
    body {
    margin-left: 20% ;
    margin-right: 20% ;
    margin-top: 10px ;
    margin-bottom:0px ;
    }
    .tab1 {
    border-color: black;
    border-style: solid;
    border-width: 2px 2px 0px 2px;
    width:800px;
    height:125px;
    }
    .tab2 {
    border-color: black;
    border-style: solid;
    border-width: 0px 2px 2px 2px;
    width:800px;
    height:50px;
    }
    .button {
    width: 85px;
    height: 18px;
    font: 11px verdana, geneva, lucida, 'lucida grande', arial, helvetica, sans-serif;
    }
    .Topic {
    background-image: url('green.jpg');
    background-repeat: no-repeat;
    padding-top: 7px;
    width: 531px;
    height:31px;
    }
    .SmallTopic {
    background-image: url('blue.jpg');
    background-repeat: no-repeat;
    padding-top: 7px;
    width: 531px;
    height:31px;
    }
    -->
    </style>
    <title></title>
    <meta name="author" content="Allgemein">
    <meta name="generator" content="Ulli Meybohms HTML EDITOR">
    </head>
    <body text="#FFFFFF" bgcolor="#98CB00" link="##0020F" alink="##0020F" vlink="##0020F">
    <table cellpadding="0" cellspacing="0" bgcolor="black">
    <tr>
     <td border="1" bgcolor="#98CB00" width="800px" height="125px"><div class="tab1">
     <br><h1 style="padding-left: 50px;"><font size="+1">Airsoft Team</font>
     <h2 style="padding-left: 200px;"><font size="+3">FAKE</font></h2></h1></div></td>
    </tr>
    <tr>
    <td align="right" class="tab2" bgcolor="#98CB00">
     <table cellspacing="0" cellpadding="0">
    <tr style="padding-left: 430px;">
     <td width="80px"><div>Benutzername:</td> <td style="padding-left: 10px;"><input class="button" type="text"><input type="checkbox"> Angemeldet bleiben?</div></td>
     </tr>
     <tr style="padding-left: 430px;">
     <td width="80px">
    <div>Passwort:</td><td style="padding-left: 10px;"> <input class="button" type="password" > <input value="Anmelden" type="submit"></div></td>
    </tr>
    </table>
      </td>
    </tr>
    <tr>
    <td height="50px"> </td>
    </tr>
    <tr>
     <td style="padding-left: 5px;" valign="top" bgcolor="black">
    <?php
    @mysql_connect("Host""User""PW")        or die("Verbindung zu MySQL gescheitert!");
    @
    mysql_select_db("db") or die("Datenbankzugriff gescheitert!");
    $sql "SELECT * FROM Topics";
    $result mysql_query($sql);
    while (
    $row mysql_fetch_assoc($result)) {
      echo 
    "<table cellspacing='0' cellpadding='0' class='Topic'><tr><td>$row[Topic]</td></tr>";
      echo 
    "<tr><td class='SmallTopic'>$row[SmallTopic]</td></tr></table>\n";
    }
    mysql_close();
    ?>
    </td>
    </tr>
    <tr>
     <td valign="top" bgcolor="black" style="padding-left: 100px; background-image: url('blue2.jpg'); background-repeat: no-repeat; padding-top: 7px; width="531px" height="500px">
    Sponsoren:
    </td>
    </tr>
    </table>
     
    </body>
    </html>
    Weitere Erklärung zum Problem:
    Wenn kein Datensatz vorhanden ist, dann wird trotzdem der Hintergrund "blue.php" angezeigt, nur halt ohne Inhalt. Das möchte ich unterbinden, aber ich weiß nicht wie

    Vielen Dank schonmal im Vorraus,
    Minimi

  • #2
    mysql_num_rows() hilft dir hier.
    oder das sparsamere Modell mit
    PHP-Code:
    <?php
    $result 
    mysql_query(..);
    $row mysql_fetch_assoc($result);
    if (!
    $row)
      echo 
    'Keine Zeile gelesen';
    else {
      do {
       
    // möp
      
    } while ($row mysql_fetch_assoc($result));
    }

    Kommentar


    • #3
      Hallo,
      ich habe es jetzt mal ausprobiert und das ist das Ergebnis davon, das leider in einem Problem endet: Die Daten werden nicht angezeigt

      PHP-Code:
      $sql "SELECT * FROM Topics";
      $sql2 "SELECT * FROM SmallTopics";
      $result mysql_query($sql);
      $result2 mysql_query($sql2);
      $row mysql_fetch_assoc($result2);
      if (!
      $row2)
        echo 
      'Keine Zeile gelesen';
      else {
        do {
         
      // möp
        
      } while ($row2 mysql_fetch_assoc($result));
      }
      while (
      $row mysql_fetch_assoc($result)) {
        echo 
      "<table cellspacing='0' cellpadding='0' class='Topic'><tr><td>$row[Topic]</td></tr>";
        echo 
      "<tr><td class='SmallTopic'>$row2[SmallTopic]</td></tr></table>\n";
      }
      mysql_close();
      ?> 
      MfG,
      Minimi

      PS: Kann man da nicht einen if Anweisung machen, die sagt, wenn der Datensatz vorhanden ist true zurückgibt und wenn man dann erst den echo Befehl sieht? Geht das?

      Kommentar


      • #4
        das //möp soltest Du durch die beiden echo Anweisungen ersetzen. Dafür entfällt Deine while-Schleife.

        Kommentar


        • #5
          Zudem benutzt du in der ersten if-Abfrage die Variable $row2, die aber noch gar nicht deklariert wurde und erst später in der while-Schleife einen Wert zugewiesen bekommt.

          Kommentar


          • #6
            Hallo zusammen,
            kann man auch 2mal den Befehl SELECT ausführen?

            Gestern habe ich mir auch mal den Quellcode von einem Forum angeschaut, aber da taucht nirgends MYSQL auf? Wie ist das möglich?

            Mit freundlichen Grüßen,
            Minimi

            Kommentar


            • #7
              Da taucht wahrscheinlich schon mysql auf nur nicht in der Form, wie du es dich vielleicht gewöhnt bist, weil wahrscheinlich für die meisten Dinge, die mehrmals verwendet werden, eigene Funktionen geschrieben wurden. Das Forum bestand ja wohl kaum aus einer einzelnen Datei. Sich an dem Quellcode eins fertigen Forums zu orientieren, ist meistens ziemlich sinnlos, weil der Code so komplex ist (und vor allem, wenn man sich noch nicht so gut auskennt), dass es ziemlich lange dauern kann, bis man den Durchblick hat.

              Was meinst du genau mit 2mal SELECT ausführen? Verschachtelt oder unabhängig voneinander? Du kannst grundsätzlich so oft eine Interaktion mit dem MySQL-Server in einem Script durchführen wie du willst.

              Kommentar


              • #8
                Also mein Plan war, dass ich einmal den äusseren Topicteil selektiere und dann noch die von den Untertopics selektiere. Funktioniert das?

                MfG,
                Minimi

                PS: Achja kann man auch eine Datei als HTML Seite ausgeben aber trotzdem die Daten von der Datenbank abrufen ohne irgendein SELECT. Also zum Beispiel show.php stehen die ganzen Daten in HTML, die von der Datenbank abgerufen werden, nur halt auf einer anderen Seite. Es gibt ja da auch readfile() und so müsste das doch auch gehen, oder? Wenn ja, wie? ^^

                Kommentar


                • #9
                  Hallo,
                  also das mit dem SELECT hat jetzt endlich geklappt, aber jetzt stehe ich vor dem nächsten Hinderniss :P

                  Also bei meinem Board soll es Topics, Threads und Posts geben, aber wie kann ich die zu den richtigen Kathegorien zuorden, ohne viel selbst zu machen. Also bei dem phpbb Forum steht da "topic_id", "post_id" und "thread_id". So sind diese immer schön geordnet, aber wie kann ich das hinbekommen? Weil sonst müsste ich zu jedem Thread einen eigenen Post Kathegorie z.B. "post_neuerThread", aber das ist dann doch ein bisschen zu viel gefummel. Geht das auch einfacher?

                  MfG,
                  Minimi

                  Kommentar


                  • #10
                    Du gibst jedem Topic, jedem Thread und jedem Post eine ID. Bei den Posts speicherst du dann irgendwo in der Tabelle die ID des Threads, wo der Post hingehört und das gleiche machst du bei den Threads bezüglich den Topics. Dann kannst du immer abfragen WHERE thread_id = dieIDhalt und so weiter.

                    Kommentar


                    • #11
                      Hallo,
                      also das mit dem WHERE funktioniet wunderschön . Nur ein einziges Problem habe ich noch

                      also: ich gebe ja als erstes meine ganzen Topics aus und dann noch die "Untertopics" und die werden einfach immer abwechselnd mit Topic abgerufen...und wenn ich WHERE nehme dann kommt 2mal das gleiche...kann man da auch irgendwas machen? Also ich lasse als Erstes in einer Tabelle die Topics abrufen und dann darunter die "Untertopics".

                      MfG,
                      Minimi

                      Kommentar

                      Lädt...
                      X