Array in een tabel weergeven

Status
Niet open voor verdere reacties.

Milenko

Gebruiker
Lid geworden
27 aug 2009
Berichten
465
Hi,

Ik ben op dit moment bezig met een soort berichten systeempje op mijn website. Het Lukt al aardig, want er kunnen al berichten worden verstuurd naar andere gebruikers/accounts. Het probleem waar ik nu tegen aanloop, is dat ik de berichten niet goed kan weergeven in een tabelletje. Ik heb hiervoor een array gemaakt (hoewel dit niet mijn sterkste kant is...) in de code hieronder zie je dat de berichten worden opgehaald uit de database, maar het plaatsen in de tabel gaat mis...

PHP:
<?php

$sql="SELECT * FROM `messages` WHERE `To`='$gebruikersnaam'";
$result=mysql_query($sql);
$count=mysql_num_rows($result);
$berichten=mysql_fetch_array($result);

  $message = array(); // nieuw array
  $message[0][0]=$berichten['Date'];
  $message[1][0]=$berichten['Date'];
  $message[2][0]=$berichten['Date'];

  $message[0][1]=$berichten['From'];
  $message[1][1]=$berichten['From'];
  $message[2][1]=$berichten['From'];

  $message[0][2]=$berichten['Subject'];
  $message[1][2]=$berichten['Subject'];
  $message[2][2]=$berichten['Subject'];

  $message[0][3]=$berichten['Message'];
  $message[1][3]=$berichten['Message'];
  $message[2][3]=$berichten['Message'];

  echo "<table border=1>";
  echo "<tr><th>Datum</th><th>Van</th><th>Onderwerp</th><th>Bericht</th></tr>";
  for($rij=0;$rij<$count;$rij++){
    echo "<tr>";
    for($kolom=0;$kolom<4;$kolom++){
      echo "<td>";
      echo $message[$rij][$kolom];
      echo "</td>";
    }
    echo "</tr>";
  }
  echo "</table>";
?>

Er staan 3 berichten in de database om te testen. Maar als ik dit script gebruik, maakt hij een tabelletje met 4 kolommen en 3 rijen (wat ook moet :P) maar ik krijg 3 keer dezelfde rij te zien.

Iemand die wat beter met array's overweg kan en ziet wat ik niet goed doe? (heb er al een hoop aan geprutst, maar helaas...)

Groetjes Milenko

(PS. Als iemand weet hoe dit eenvoudiger kan, zou dat ook heel fijn zijn, want stel, iemand heeft 20 berichten, krijgt hij/zij er maar 3 te zien... En om nou 20 van die rijen aan te maken is een beetje zinloos. Krijg ik van die hele lappen tekst :P)
 
Laatst bewerkt:
Je vult je array niet goed, je vult elke "rij" in je array met dezelfde waardes uit je mysql result. daar zul je ook een loopje van moeten maken

Verder lijkt je rijprobleem al goed opgelost te worden aangezien je netzoveel rijen laat zien als je met je count opgehaalt hebt uit je database
 
Maar waarom heb ik dan dit staan:

PHP:
  $message[0][0]=$berichten['Date'];
  $message[1][0]=$berichten['Date'];
  $message[2][0]=$berichten['Date'];

3 keer dus. En niet gewoon 1 keer?

(ik heb het scriptje van een website gehaald en naar eigen wens aangepast)
 
Misschien ook enig idee hoe ik die loop het beste kan maken? Ik zie door de bomen het bos even niet meer :S
 
probeer dit eens. Op deze manier loop je door alleberichten in je database
PHP:
$berichten=mysql_fetch_array($result);
$x = 0;
$message = array(); // nieuw array
 foreach($berichten as  $bericht) {
  
  $message[$x][0]=$bericht['Date'];
 
  $message[$x][1]=$bericht['From'];
 
  $message[$x][2]=$bericht['Subject'];
 
  $message[$x][3]=$bericht['Message'];
$x++;
}
 
Bedankt voor je reactie! Maar helaas, het resultaat is er nog niet. Er wordt 2 keer eenzelfde rij gegeven, met alleen de eerste letter (in dit geval cijfer) van de inhoud. Er wordt namelijk een 3 weergeven wat staat voor ID (terwijl ik deze er niet in wil hebben :P). In de laatste rij staan A's. Deze staan waarschijnlijk voor admin (de gebruiker waar de mailtjes naar toe zijn gestuurd).

Iemand die nog een oplossing heeft??
 
Laatst bewerkt:
Kan dit niet veel handiger met een nette while loop en mysql_fetch_object?

PHP:
$result = mysql_query('...');


echo '<table>';

while($bericht = mysql_fetch_object($result))
{
   echo '<tr>';

      echo '<td>' . $bericht->Date . '</td>';
      echo '<td>' . $bericht->From . '</td>';
      echo '<td>' . $bericht->Subject . '</td>';
      echo '<td>' . $bericht->Message . '</td>';

   echo '</tr>';
}

echo '</table>';
 
Laatst bewerkt:
Heb ik geprobeerd, maar ook dit werkt niet. Dit is hoe de code er nu uitziet met de bijbehorende foutmelding:

PHP:
<?php

$sql="SELECT * FROM `messages` WHERE `To`='$gebruikersnaam'";
$result=mysql_query($sql);

echo '<table>';
 
while($bericht = myqsl_fetch_object($result))
{
   echo '<tr>';
 
      echo '<td>' . $bericht->Date . '</td>';
      echo '<td>' . $bericht->From . '</td>';
      echo '<td>' . $bericht->Subject . '</td>';
      echo '<td>' . $bericht->Message . '</td>';
 
   echo '</tr>';
}
 
echo '</table>';

?>

Foutmelding:

Fatal error: Call to undefined function myqsl_fetch_object() in C:\wamp\www\mijnberichten.php on line 71
Call Stack
 
Maak van myqsl_fetch_object eens mysql_fetch_assoc
mysql_fetch_array geeft een associative array, a numeric array terug.
En wat jij alleen maar nogid hebt is een associative array.
En dat krijg je met mysql_fetch_assoc.
 
Laatst bewerkt:
Ja, een typfout in m'n code: het is mysql_fetch_object, niet myqsl_fetch_object. Het zou zonder typfout wel moeten werken.
 
Inderdaad, door van myqsl te veranderen, werkt het perfect! Dankjewel!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan