PDA

Bekijk Volledige Versie : [PHP] tabel generen uit sql output



Patrick
14/01/05, 20:05
Hallo allemaal,

Ik ben bezig met een foto gallery in elkaar aan het zetten. Ik heb
hiervoor een database gevuld met url's waar de foto's staan. De foto's
staan los in een andere map.

Als ik de datbase uitlees krijg ik prima de thumbnails onder elkaar op
het scherm. Maar nu wil ik er een tabel van maken. En dit lukt voor geen
meter..

Mijn code die werkt om de thumbnails te laten zien is


<?php
include ("include/db_init.php");
$query = "SELECT
thumb_pad,thumb_naam,thumb_over_naam,thumb_over_pa d,categorie FROM
album_portfolio";

$result = mysql_query($query, $db) or die (mysql_error());
while
list($thumb_pad,$thumb_naam,$thumb_over_naam,$thum b_over_pad,$categorie)=
mysql_fetch_row($result)){
echo ("

<a href=serie_display.php?serie=$categorie&id=0><img
src=http://www.sprangers-fotografie.nl/nieuw/album/$thumb_pad$thumb_naam></a>)";
}
?>



Kunnen jullie mij een aanzet geven hoe ik de tabel opmaak ? Ik ben niet
verder gekomen dan de volgende code:



<?php
include ("include/db_init.php");
$query = "SELECT
thumb_pad,thumb_naam,thumb_over_naam,thumb_over_pa d,categorie FROM
album_portfolio";

$result = mysql_query($query, $db) or die (mysql_error());
print "<table>\n";
while
(list($thumb_pad,$thumb_naam,$thumb_over_naam,$thu mb_over_pad,$categorie)=
mysql_fetch_row($result)){
print "\t<tr>\n";
foreach ($line as $col) {
print "\t\t<td><a
href=serie_display.php?serie=$categorie&id=0><img
src=http://www.sprangers-fotografie.nl/nieuw/album/$thumb_pad$thumb_naam></a></td>\n";
}
print "\t</tr>\n";
}
print "</table>\n";
?>


maar dit levert meteen ook de volgende error op: Warning: Invalid
argument supplied for foreach() in
/local/web/websites/1669071696/www/web/nieuw/series.php on line 39

Alvast bedankt voor jullie moeite !

Patrick

Daniel Tryba
15/01/05, 03:25
Patrick <no@email.com> wrote:
> maar dit levert meteen ook de volgende error op: Warning: Invalid
> argument supplied for foreach() in
> /local/web/websites/1669071696/www/web/nieuw/series.php on line 39

2 stukken code van minder van 39 regels.... Wat staat er dus op regel
39?

BTW het helpt als je een klein zelfstandig script post ipv losse stukken
uit grotere gehelen. Zo lijkt het dat argumenten als $line aan een
foreach zomaar uit de lucht komen vallen...

Patrick
15/01/05, 09:55
Beste Daniel,

>
> 2 stukken code van minder van 39 regels.... Wat staat er dus op regel
> 39?
>
> BTW het helpt als je een klein zelfstandig script post ipv losse stukken
> uit grotere gehelen. Zo lijkt het dat argumenten als $line aan een
> foreach zomaar uit de lucht komen vallen...

1 stuk code is het hele script, hierboven staat alleen de rest van html
met de nodige div-jes voor de opmaak. Die heb ik hier maar even weggelaten.

De regel waar ie over valt...

foreach ($line as $col) {

inderdaad op $col, daarom heb ik de clean code meegestuurd, zodat ik de
juiste basis heb om de kolom op te bouwen..

Als iemand een suggestie heeft dan hoor ik het graag !

Patrick

Ronald Klip
15/01/05, 11:55
Patrick schreef:
>
> Als ik de datbase uitlees krijg ik prima de thumbnails onder elkaar op
> het scherm. Maar nu wil ik er een tabel van maken. En dit lukt voor geen
> meter..

Hoe moet die tabel eruit zien? Hoeveel kolommen?

> while
> (list($thumb_pad,$thumb_naam,$thumb_over_naam,$thu mb_over_pad,$categorie)=
> mysql_fetch_row($result)){
> print "\t<tr>\n";
> foreach ($line as $col) {
> print "\t\t<td><a
> href=serie_display.php?serie=$categorie&id=0><img
> src=http://www.sprangers-fotografie.nl/nieuw/album/$thumb_pad$thumb_naam></a></td>\n";
> }
> print "\t</tr>\n";
> }
>
> maar dit levert meteen ook de volgende error op: Warning: Invalid
> argument supplied for foreach() in

Zoals al gehint door Daniel: $line bestaat niet,

--
groet, Ronald

Daniel Tryba
15/01/05, 13:55
Patrick <no@email.com> wrote:
>> BTW het helpt als je een klein zelfstandig script post ipv losse stukken
>> uit grotere gehelen. Zo lijkt het dat argumenten als $line aan een
>> foreach zomaar uit de lucht komen vallen...
>
> 1 stuk code is het hele script, hierboven staat alleen de rest van html
> met de nodige div-jes voor de opmaak. Die heb ik hier maar even weggelaten.
>
> De regel waar ie over valt...
>
> foreach ($line as $col) {
>
> inderdaad op $col,

Waarom denk je dat?
$ cat foo.php
<?php
$line="foo";
foreach($line as $col);
?>
$ php ./foo.php

Warning: Invalid argument supplied for foreach() in /tmp/foo.php on line 3
$

Het ligt echt niet aan $col, maar aan $line.

> daarom heb ik de clean code meegestuurd, zodat ik de > juiste basis
> heb om de kolom op te bouwen..

Maar het is juist geen cleane code, een voorbeeld van een zelfstandig
simpel script wat tabelen maakt:

<?php
$ar[]=array(0,0,0);
$ar[]=array(1,1,1);
$ar[]=array(2,2,2);

echo '<table>';
foreach($arr as $record)
{
echo '<tr>';
foreach($record as $data)
{
echo '<td>'.htmlspecialchars($data).'</td>';
}
echo '</tr>';
}
echo '</table>';
?>

Produceert precies de zelfde foutmelding, maar heir is wel meteen
duidelijk wat de fout is: arr ipv ar. Dit soort stomme typos
kan je overigens redelijk snel achterhalen door error reporting
op max te zetten.

MAW met de door jou geposte stukjes kan men hier niets anders dan
gokken naar de oorzaak.


BTW vertaalt naar iets uit een mysql database halen:

eerste foreach wordt dan:
while($record=mysql_fetch_assoc($query))

en de 2de bv:
foreach($record as $data)
of
foreach($record as $key => $data) //als je de colomn naam nog wilt weten