Ankündigung

Einklappen
Keine Ankündigung bisher.

von mySQL zu mySQLi OOP

Einklappen

Neue Werbung 2019

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

  • von mySQL zu mySQLi OOP

    hi,

    ich möchte eines meiner alten Scripte umschreiben. Es handelt sich um ein kleines Forum welches über vier Dateien und nur einer einzigen SQL-Tabelle verfügt.

    Die index.php ist soweit kein Problem:
    PHP-Code:
    if ($stmt $mysqli->prepare('
    SELECT `id`, `titel`, `usw` FROM `forum` WHERE `titel`!=\'\' ORDER BY `lasttime` DESC '
    )){

    $stmt->execute(); 
    $stmt->store_result();
    $stmt->bind_result($id$titel$usw);

    while(
    $stmt->fetch()){
      echo 
    '<p>Mustertitel30</p>';
    }

    $stmt->close();
    }
                                    
    else {
    echo 
    '<pre>Fehler: '.$mysqli->error.'</pre>';

    Mustertitel hat z.b. 4 Antworten, ich bekomme aber nur das Topic angezeigt ohne die dazugehörigen Antworten und genau da ist mein Problem.

    Mein Ansatz war bisher:
    PHP-Code:
    // topic.php?id=30

    $id intval($_GET['id']);

    if (
    $stmt $mysqli->prepare('
    SELECT `id`, `titel`, `usw`, FROM `forum` WHERE `id` = ?'
    )){
    $stmt->bind_param('i',$id);
    $stmt->execute(); 
    $stmt->bind_result($id$titel$usw);

    while (
    $stmt->fetch()){
       echo 
    '<p>alle Antworten</p>';
    }

    $stmt->close();

    Mag mir jemand bei der formulieren der Abfrage helfen ?

    gruß Gianna


  • #2
    Du solltest mehr Infos zur DB liefern.
    PHP-Code:
    SELECT `id`, `titel`, `usw`, FROM `forumWHERE `id` = ?
    Hier wirst Du vermutlich nur ein Ergebnis erhalten, weil es nur eine ID gibt.(?)

    Wo erkennst Du in der DB, das die Antworten einem Titel zugeordnet sind?

    Kommentar


    • #3
      hi kaptainIglo,

      mal eben der "alte" Code:
      PHP-Code:
      if (isset($_GET['id']) && is_numeric($_GET['id'])){

      $id intval($_GET['id']);

      $sql1 "
      SELECT `id`, `username`, `titel`, `usertext`, `lasttime`, `datum`, `lastuser`, `reply`, `tid`, `userip`, `klicks` 
      FROM forum 
      WHERE id='
      $id' ";
      $res1 mysql_query($sql1);
      $row1 mysql_fetch_array($res1);

      echo 
      '<p>topic</p>';

      $sql2 "
      SELECT `id`, `username`, `titel`, `usertext`, `lasttime`, `datum`, `lastuser`, `reply`, `tid`, `userip`, `klicks` 
      FROM forum 
      WHERE tid='
      $id
      ORDER BY id ASC"
      ;
      $res2 mysql_query($sql2);
      while(
      $row2 mysql_fetch_array($res2)){

      echo 
      '<p>antworten</p>';

      }



      else {
      echo 
      '<pre>Fehler: Keine ID.</pre>';

      Kommentar


      • #4
        oops, hab versehentlich auf Enter gedrückt, war noch nicht fertig

        der Code ist ja so schön einfach, ich komme aber noch nicht so mit bind_param , execute, bind_result und fetch() zurecht

        Kommentar


        • #5
          Du hast 2 Schleifen.
          Die erste, äußere Schleife, sucht alle Beiträge.

          PHP-Code:
          while ($stmt->fetch()){ 
             echo 
          '<p>alle Antworten</p>'

          In dies while Schleife legst Du die zweite, innere Schleife, und gibst alle Antworten aus.

          Kommentar


          • #6
            müsste ich dann 1x so:
            PHP-Code:
            $stmt $mysqli->prepare('SELECT `id`, `username`, `titel`, `usertext`, `lasttime`, `datum`, `lastuser`, `reply`, `tid`, `userip`, `klicks` FROM `forum` WHERE id = ?');
            $stmt->bind_param('i'$id);
            $stmt->execute();
            $stmt->bind_result($id$username$titel$usertext$lasttime$datum$lastuser$reply$tid$userip$klicks);
            $stmt->fetch();

            echo 
            '<p>'.$titel.'</p>';

            $stmt->close(); 
            und dann 1x mit white:
            PHP-Code:
            $stmt $mysqli->prepare('SELECT `id`, `username`, `titel`, `usertext`, `lasttime`, `datum`, `lastuser`, `reply`, `tid`, `userip`, `klicks` FROM `forum` WHERE tid = ?');
            $stmt->bind_param('i'$id);
            $stmt->execute();
            $stmt->bind_result($id$username$titel$usertext$lasttime$datum$lastuser$reply$tid$userip$klicks);

            while (
            $stmt->fetch()){
            echo 
            '<p>RE: '.$titel.'</p>';
            }

            $stmt->close(); 
            das scheint mir einfach zu viel Code :/ ... egal, ich teste das erst mal bevor ich hier weitere doofe Fragen stelle.

            Kommentar

            Lädt...
            X