SQL abfrage zeigt nur einen Datensatz an obwohl es mehrere sein müssten

  • Themenstarter Themenstarter ba2
  • Beginndatum Beginndatum
B

ba2

Guest
Moin,

Ich habe mir ein kleines News Skript gemacht, jetzt habe ich folgendes Problem

es wird immer nur ein Datensatz angezeigt auch wenn mehrere vorhanden sind, wenn ich die Kommenta funktion rausnehme

PHP:
//Komentare Anzeigen
$abfrage = "SELECT * FROM comment where beitrag like '$id'"; 
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   { 
   $name = $row->name;
   $comment = $row->comment;
   //Text bearbeiten
   include 'funktionen/comment.php';
   //Ende Text bearbeiten
   echo "<b>$name:</b> $comment<br>\n";
   }
//Ende Kommentare anzeigen


Dieser teil, werden alle daten angezeigt, aber die kommentare nicht.


Komplettes Skript:
PHP:
<?php
include 'config/config.php'; //Konfigurationen Laden
include 'config/sql.php'; //Datenbank Verbindung herstellen

//News anzeigen
$abfrage = "SELECT * FROM news ORDER BY id desc";
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   { 
   $titel = $row->titel;
   $datum = $row->datum;
   $bild = $row->bild;
   $text = $row->text;
   $autor = $row->autor;
   $id = $row->id;
   include 'funktionen/bild.php'; //Bild ueberpruefen
   
echo "<table border=\"1\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"750\">\n";
echo "  <tr>\n";
echo "    <td width=\"748\" colspan=\"2\">\n";
echo "    <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" style=\"border-collapse: collapse\" bordercolor=\"#111111\" width=\"100%\">\n";
echo "      <tr>\n";
echo "        <td width=\"70%\"><b>$titel - [</b><i>$datum</i><b>]</b></td>\n";
echo "        <td width=\"30%\">\n";
echo "        <p align=\"right\"><a href=\"?aktion=kommentar\">Kommentar abgeben</a></td>\n";
echo "      </tr>\n";
echo "    </table>\n";
echo "    </td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"150\" valign=\"top\">\n";
echo "    <img border=\"0\" alt = \"Bild nicht gefunden\" src=\"$bild\" width=\"150\" height=\"150\"></td>\n";

//Text bearbeiten
include 'funktionen/text.php';
//Ende Text bearbeiten

echo "    <td width=\"600\" valign=\"top\">$text</td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"734\" colspan=\"2\"><b>Kommentare:</b><br> \n";
//Ende News anzeigen

//Komentare Anzeigen
$abfrage = "SELECT * FROM comment where beitrag like '$id'"; 
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   { 
   $name = $row->name;
   $comment = $row->comment;
   //Text bearbeiten
   include 'funktionen/comment.php';
   //Ende Text bearbeiten
   echo "<b>$name:</b> $comment<br>\n";
   }
//Ende Kommentare anzeigen

echo "</td>\n";
echo "  </tr>\n";
echo "  <tr>\n";
echo "    <td width=\"734\" colspan=\"2\"><b>Autor:</b> $autor</td>\n";
echo "  </tr>\n";
echo "</table><br>\n";
}
?>


Kann mir jemand helfen?

mfg ba2
 
jup und zwar das Problem hatte ich auch schonmal.
Und zwar führst du die Abfrage SELECT * FROM news ORDER BY id desc durch und in der while Schleife fragst du dann zeilen weise ab.
Allerdings führst du jetzt innerhalb dieser Schleife wiedrum eine Abfrage über das gleiche sql handle.
Das heißt die erste Schleife wird einmal durchlaufen weil es mit der zweite Abfrage "überschrieben" wurde.

Abhilfe:

du baust 2 SQL Connecten auf und zwar indem du den Connection handles zuweist:

$handle1 = mysql_connect ();
$handle2 = mysql_connect ();

Allerdings finde ich das jetzt etwas unelegant.
Deshalb habe ich so etwas immer mit einem Join(http://v.hdm-stuttgart.de/~riekert/lehre/db-kelz/chap7.htm#Chap7.2.6) gemacht, was das ganze erheblich vereinfacht.

gruß
 
ich habs jetzt anders gelöst

unzwar bei der abfrage einfach die variabeln geändert


PHP:
$abfrage2 = "SELECT * FROM comment where beitrag like '$id'"; 
$ergebnis2 = mysql_query($abfrage2);
while($row = mysql_fetch_object($ergebnis2))
   { 
   $name = $row->name;
   $comment = $row->comment;
   //Text bearbeiten
   include 'funktionen/comment.php';
   //Ende Text bearbeiten
   echo "<b>$name:</b> $comment<br>\n";
   }


so gehts auch


mfg and THX by BA
 
PHP:
$Link = mysql_connect($Host, $User, $Password) or die(print"Keine Verbindung möglich zu Datenbank");

$Query = "SELECT * FROM comment where beitrag like '$id'";

$Result = mysql_db_query($DBname, $Query, $Link) or die(print"Fehler!.");

while ($Row = mysql_fetch_array($Result))
{

include('funktionen/comment.php');
echo"<b>$Row['name']:</b> $Row['comment'] <br>\n";

}

sollte so funktionieren (ist ungetestet...)
 
Zurück
Oben