[PHP + MYSQL] Hoe gegevens uit tabel laten zien?

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ben pas bezig met php dus zeg niet gelijk van das makkelijk knul... want ik kom er echt niet uit.

Het is zo, ik heb een Comment script gemaakt wat dus bijna af is (mijn 1e script)
het is de bedoeling dat je wat in de tabel kunt zetten, dit lukt ook goed en daarna moet ie alle comments laten zien die in de tabel onder de juiste id maar dit lukt mij niet. Wat doe ik fout ?

de Tabel: (omdat ik niet weet hoe ik die tabel moet laten zien, doe ik dit op 2 manieren)
code:
1
2
3
4
5
6
7
8
9
CREATE TABLE comments (
  id int(10) NOT NULL auto_increment,
  commentid varchar(15) NOT NULL default '',
  nickname varchar(60) NOT NULL default '',
  email varchar(75) NOT NULL default '',
  reactie text NOT NULL,
  ip varchar(45) NOT NULL default '',
  PRIMARY KEY  (id)
) TYPE=MyISAM;


code:
1
2
3
4
5
6
7
Veld         Type       Attributen   Null    Standaardwaarde Extra Actie 
id           int(10)                  Nee    auto_increment  
commentid    varchar(15)              Nee      
nickname     varchar(60)              Nee      
email        varchar(75)              Nee      
reactie      text                     Nee      
ip           varchar(45)              Nee



Source van mijn file, de file word opgehaald via index.php?id=CentralRoom
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<? 
 mysql_connect(localhost,username,passwd);
 mysql_select_db(database);
 
// als in de tabel commentid staat het id wat we hebben opgegeven met openen 
// van de pagina (dus in dit geval CentralRoom) dan inhoud checken
 $sql = "SELECT * FROM comments WHERE commentid ='$id' ORDER by id ASC";
 $query = mysql_query($sql);
 $aantal = mysql_num_rows($query);

// als de tabel inhoud bevat dan ...
if ($aantal !="0"){
 while ($show = mysql_fetch_object($query)); {
?>
<table width="450" cellspacing="0" cellpadding="0">
  <tr> 
    <td><div align="right">
  
 // ... dit laten zien MAAR
 // hier gaat het mis, dit wil die niet laten zien
   <? echo "<b>$show->nickname</b>"; ?></div></td>
  </tr>
  <tr> 
    <td>&nbsp;</td>
  </tr>
</table>

// als inhoud wel 0 is dan:
<? }} else {echo "Nog geen berichten geplaatst"; } ?>
<br><hr>

// Informatie invoegen in de tabel (dit gaat goed)
<? if ($post == posting){  
if (empty($nickname)) { echo "Je bent je naam vergeten in te vullen!<br>
Klik <a href=\"javascript:history.back(1)\"><font color=\"000000\">hier</font></a> om terug tegaan.<br>"; }
if (empty($email)) { echo "Je bent je e-mail adres vergeten in te vullen!<br>
Klik <a href=\"javascript:history.back(1)\"><font color=\"000000\">hier</font></a> om terug tegaan.<br>"; } 
elseif (empty($reactie)) { echo "Je bent het bericht vergeten in te vullen!<br>
Klik <a href=\"javascript:history.back(1)\"><font color=\"000000\">hier</font></a> om terug tegaan.<br>";
} else {
  
 mysql_connect(localhost,username,passwd);   
 mysql_select_db(database);   
  
 $insert = "INSERT INTO comments (id, commentid, nickname, email, reactie, ip) VALUES   
 ('','$commentid','$nickname','$email','$reactie', '$REMOTE_ADDR' )";   
 mysql_query($insert) or die(mysql_error());   
 echo "Comment is succesvol toegevoegd!<br>";  
 
 }}
 ?>
Post ook een Comment: 
<form method="post" action="index.php?id=CentralRoom&post=posting#comments">
  <p>Naam<b>:</b> 
    // Nickname uit sessie includen
    <input name="nickname" value="<? echo $_SESSION['FOX']; ?>">
    <br>
    E-mail<b>:</b> 
    <input name="email">
    <br>
    Bericht<b>:</b> 
    <textarea name="reactie"></textarea>
    <input type="hidden" name="commentid" value="<? echo "$id" ?>">
  </p>
  <p> 
    <input type="submit" name="Submit" value="Post">
    <input type="reset" name="Submit2" value="Reset">
  </p>
</form>

[ Voor 16% gewijzigd door Verwijderd op 28-07-2003 19:12 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Ik doe een snel gokje:

regel 21 van je code:

<? echo "<b>$show->nickname</b>"; ?></div></td>

maak daar eens van"

<? echo "<b>" . $show->nickname . "</b>"; ?></div></td>

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Regel 11 - 12 - 13:

PHP:
1
2
3
4
<?
if ($aantal !="0"){ 
while ($show = mysql_fetch_object($query)); { 
?>


moet zijn:

PHP:
1
2
3
4
5
6
7
8
9
<?
if($aantal != 0)
{
  while($show = mysql_fetch_object($query))
  {
     // laat data zien...
  }
}
?>


dus zonder ; en quotes rond cijfers, want das niet netjes.

[ Voor 13% gewijzigd door Verwijderd op 28-07-2003 20:16 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Klopt de volgorde van je query's wel? Nu staat de insert na de select. Wil je de record die zojuist is ingevoegd laten zien maak dan direct na de insert query een variabele aan met het laatst ingevoegde ID:
dus:
PHP:
1
2
3
4
5
6
$insert = "INSERT INTO comments (commentid, nickname, email, reactie, ip)
 VALUES ($commentid,'$nickname','$email','$reactie', '$REMOTE_ADDR' )";
mysql_query($insert) or die(mysql_error();
$last_id = mysql_insert_id(); //Deze pakt de waarde van je autoincrement ID

$select = "SELECT * FROM comments WHERE comment=$last_id";


Houd je php zoveel mogelijk gescheiden van je html dat maakt het een stuk overzichtelijker :P . En PHP parsed je pagina gewoon van boven naar beneden dus volgorde is belangrijk.

Normaliseer je tabel ontwerp scheidt comments en user info van elkaar in twee tabellen.

Wat is het verschil tussen ID en comment_id in je tabel? Zijn die niet beiden hetzelfde? Anyway het kan wel werken maar het kan een stuk eenvoudiger.

Acties:
  • 0 Henk 'm!

  • supakeen
  • Registratie: December 2000
  • Laatst online: 09-09 14:42
*psst* REGISTER_GLOBALS *psst*

;)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
jah het werkt beter zonder die quotes :D nu doet ie ut

thnx iedereen _/-\o_

[ Voor 50% gewijzigd door Verwijderd op 28-07-2003 20:26 ]

Pagina: 1