Seite 1 von 1

PHP Neuling, kenn mi nix aus --> sicher einfach zu lösen

Verfasst: 04.05.2003 02:50
von Ronnie
Hi Leute,

ich beschäftige mich sozusagen jetzt seit 2 Tagen mit PHP und dafür hab ich eigentlich schon einiges geschafft.

Nun bin ich aber auf folgendes Problem gestossen:

Ich lese aus einer Datenbank (Access) verschiedene Felder aus (Kommentare) und setze diese in Tables,... was auch ganz gut funktioniert.

Das Ganze ist so eine Art Bilddatenbank.

Das heißt, manchmal gibt es 5 Bilder, manchmal 3, manchmal (maximal) 10 Bilder und entsprechend viel Kommentare dazu.

Es funktioniert auch alles richtig toll, nur jetzt kommt die Frage:

Wenn ein Datensatz (Beitrag) z.B. nur 5 Bilder und 5 Kommentare hat, dann will ich natürlich im Table auch nur 5 anzeigen und nicht das Maximum von 10 (und 5 bleiben davon leer)!

Es gibt sicherlich irgendeine Möglichkeit, wie ich prüfen kann, daß in der jeweiligen Tabelle noch Werte stehen, und wenn nicht, daß der ganze Prozeß beendet wird ?? Eventuell mit Javascript (aber da kenn ich mich noch weniger aus *gg*)

Vielleicht kann mir ja jemand helfen ?

Am besten per Email: day_walker@chello.at

Danke + liebe Grüße aus Wien
Ronnie :roll:

Verfasst: 04.05.2003 10:23
von Steffen
Vielleicht irgendwas in der Richtung:

Code: Alles auswählen

...

if($anfrage = @mysql_query($sql))
{
  echo "<table>";

  while($spalte = @mysql_fetch_array($anfrage))
  {
    echo "<tr>";

    $max = 10;

    for($i = 0; $i < count($spalte); $i++)
    {
      echo "<td>" . $spalte[$i] . "</td>";

      max--;
    }

    for($i = 0; $i < $max; $i++) echo "<td>&nbsp;</td>";

    echo "</tr>";
  }

  echo "</table>";
}
Es wird bei jedem Datensatz mitgezählt, wieviele Tabellenspalten leer bleiben müssen. Diese werden dann in der 2. FOR-Schleife mit leeren Zellen geschrieben.

Re: PHP Neuling, kenn mi nix aus --> sicher einfach zu lö

Verfasst: 04.05.2003 14:47
von Pyramide
Ronnie hat geschrieben:Es gibt sicherlich irgendeine Möglichkeit, wie ich prüfen kann, daß in der jeweiligen Tabelle noch Werte stehen, und wenn nicht, daß der ganze Prozeß beendet wird ??
Ja, die Funktion odbc_fetch_row gibt false zurück, wenn keine weiteren Datensätze verfügbar sind.
Kommentar zur Funktion odbc_fetch_row im PHP-Handbuch hat geschrieben:see following i.e:

Code: Alles auswählen

$cx=odbc_connect('ww'); 
$cur=odbc_exec($cx,"select id,pass from table_name"); 
while(odbc_fetch_row($cur)){ 
$id=odbc_result($cur,1); 
$pass=odbc_result($cur,2); 
echo "id:$id,pass:$pass"; 
}
Die while-Schleife von der 3. bis zur letzten Zeile ist was du suchst.

Ronnie hat geschrieben:Eventuell mit Javascript (aber da kenn ich mich noch weniger aus *gg*)
Javascript bringt hier gar nichts, da es erst vom Browser ausgeführt wird, nachdem die PHP-Ausführung auf dem Server beendet und die Seite geschickt worden ist.

Verfasst: 04.05.2003 16:38
von Steffen
Oh sorry, hab total überlesen, daß es mal nicht um 'ne MySQL-Datenbank geht.

geht leider auch nicht

Verfasst: 04.05.2003 21:47
von Ronnie
Hi Leute,
danke für die raschen Antworten, geht aber leider auch nicht.

Hier mal das Script, daß ich jetzt verwende und das auch funktioniert, bis auf die Tatsache, daß es eben auch 10 Td aufbmacht, auch wenn nur z.B. 4 Bilder und 4 Kommentare in der DB sind.

Wahrscheinlich ist es ja nur eine Kleinigkeit die ich ändern muß ??

Code: Alles auswählen

<?	$Quelle = odbc_connect("$VWM", "$User", "$Pw"); 
	$Ergebnis = odbc_exec($Quelle, "SELECT Kom1, Kom2, Kom3, Kom4, Kom5, Kom6, Kom7, Kom8, Kom8, Kom9, Kom10 FROM VWM WHERE KatId ='KatId2'");
	$Spaltenzahl = odbc_num_fields($Ergebnis);

	echo "<div align='center'><table border='0'><width='800'><height='1000'><cellspacing='5'><tr>";


$n = 1; 
while ($n <=1 and odbc_fetch_row($Ergebnis, $n++))  {
	echo "<tr>";
	$i = 1; 
	$h = 1;
	while ($i <= $Spaltenzahl) {
	echo "<td width='200' height='60' bgcolor='#0099CC'><center><font color='#FFFFFF'><b>";
	echo odbc_result($Ergebnis, $i);
	echo "</center></font></b></td>";
	echo "<td width='200' height='60' bgcolor='#0099CC'><center><font color='#FFFFFF'><b>";
	echo "<img src='Bild$h.jpg')>";
	echo "</center></font></b></td></tr>";
	$i++;
	$h++;
	}	
	}

	echo "</table>"; 


?>
Danke im voraus für Eure Mühe und liebe Grüße aus Wien
Ronnie

Verfasst: 04.05.2003 22:29
von Mungo
ich würd des so machen

Code: Alles auswählen

$n =1;
while(list($var1,$var2) = odbc_fetch_row($result)) {
if($x = count($result)) {
 echo "<td>bla</td>";
 </tr>
} else {
 echo "<td>bla</td>";
}
$x++;
}
mußt halt anpassen...weiß auch net ob es funktzt....