Modifications de code PHP (mise en page) - PHP - Programmation
Marsh Posté le 01-06-2008 à 00:36:12
Tu retournes un nombre de ligne et non ce que tu as saisies.
C'est possible d'avoir un peu plus de code ?
Marsh Posté le 01-06-2008 à 00:39:59
Voici le code :
<tr>
<td colspan="2"><p align="left">
<?
/* connect to the database */
mysql_pconnect("$host","$user","$password" ) or die("Can't connect to the SQL-server" );
mysql_select_db("$database" );
/* action=view : retrieve data from the database and show it to the user */
if($action == "view" ) {
/* function for showing the data */
function search_it($name) {
/* some vars */
global $offset,$total,$lpp,$dir,$records;
global $table,$html_mail,$admin_name,$admin_mail;
/* select the data to get out of the database */
$query = "SELECT * FROM $table ORDER BY ID DESC";
$result = mysql_query($query);
$total= mysql_numrows($result); la fameuse ligne 186
print "<CENTER><FONT FACE=\"Verdana\" SIZE=\"-2\"><A HREF=\"$scriptname?action=add\" onMouseOver=\"window.status='Add your name';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"Add your name\">(Add your name)</A></FONT></CENTER><br><br>";
if ($total== 0) {
print "<CENTER>At the moment there are no persons in the guestbook.</CENTER><br><br>"; }
elseif ($total> 0) {
/* default */
$counter=0;
if ($dir=="" ) $dir="Next";
$lpp = $records;
if ($offset==0) $offset=0;
if ($dir=="Next" ) {
if ($total > $lpp) {
$counter=$offset;
$offset+=$lpp;
$num=$offset;
if ($num > $total) {
$num=$total; } }
else {
$num=$total; } }
elseif ($dir=="Previous" ) {
if ($total > $lpp) {
$offset-=$lpp;
if ($offset < 0) {
$offset=0; }
$counter=$offset-$lpp;
if ($counter < 0)
$counter=0;
$num=$counter+$lpp; }
else {
$num=$total; } }
while ($counter < $num) {
$j=0;
$j=$counter + 1;
/* now really grab the data */
$i1=mysql_result($result,$counter,"name" );
$i2=mysql_result($result,$counter,"email" );
$i3=mysql_result($result,$counter,"job" );
$i4=mysql_result($result,$counter,"comments" );
$i4 = stripslashes ("$i4" );
/* print it in a nice layout */
print "<CENTER>\n";
print "<TABLE WIDTH=400 BORDER=0 ALIGN=CENTER VALIGN=TOP><TR><TD><FONT FACE=\"Verdana\" SIZE=\"-2\">\n";
print "<HR>\n";
print "<B>Name:</B> <A HREF=\"mailto:$i2\" onMouseOver=\"window.status='Email $i1';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"Email $i1\">$i1</A>\n";
print "<BR><B>Job:</B> $i3\n";
print "<BR><B>Comment:</B>\n";
print "<BR>$i4\n";
print "</FONT></TD></TR></TABLE>\n";
print "</CENTER>\n";
$counter++;
}
}
mysql_close();
}
/* execute the function */
search_it($name);
/* See if we need to put on the NEXT or PREVIOUS buttons */
if ($total > $lpp) {
echo("<form action=\"$scriptname?action=view\" method=\"POST\">\n" );
/* See if we need a PREVIOUS button */
if ($offset > $lpp) {
echo("<input type=\"submit\" value=\"Previous\" name=dir>\n" ); }
/* See if we need a NEXT button */
if ($offset < $total) {
echo("<input type=\"submit\" value=\"Next\" name=dir>\n" ); }
echo("<input type=hidden name=\"offset\" value=\"$offset\">\n" );
echo("<input type=hidden name=\"name\" value=\"$name\">\n" );
echo("</form>" );
}
}
/* action=add : show a form where the user can enter data to add to the database */
elseif($action == "add" ) { ?>
<FORM ACTION="<?php echo $scriptname; ?>?action=send" METHOD="POST">
<TABLE CELLSPACING="2" ALIGN="CENTER">
<TR>
<TD COLSPAN="3" ALIGN="LEFT">
<B>Please take your time to enter something<BR>
<CENTER><SMALL>[required fields are marked with *]</SMALL></CENTER></B><BR>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Name</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<INPUT TYPE="TEXT" NAME="form[name]">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Job</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<INPUT TYPE="TEXT" NAME="form[job]">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Email</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<INPUT TYPE="TEXT" NAME="form[email]">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Comments</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<TEXTAREA NAME="form[comments]" COLS="23" ROWS="8" WRAP="VIRTUAL"></TEXTAREA>
</TD>
</TR>
<TR ALIGN="CENTER">
<TD COLSPAN="3">
<INPUT TYPE="SUBMIT" VALUE="Submit"> <INPUT TYPE="RESET" VALUE="Reset">
</TD>
</TR>
</TABLE>
</FORM>
<?
}
/* action=send : add the data from the user into the database */
elseif($action == "send" ) {
$reset = reset($required);
while (list($key, $value) = each($required)) {
if($form[$value] == "" ) {
$count++;
}
}
if($count > 0) {
?>
<FORM ACTION="<?php echo $scriptname; ?>?action=send" METHOD="POST">
<TABLE CELLSPACING="2" ALIGN="CENTER">
<TR>
<TD COLSPAN="3" ALIGN="LEFT">
<B>Please take your time to enter something<BR>
<CENTER><SMALL>[<FONT COLOR="red">you forgot some fields (marked with *)</FONT>]</SMALL></CENTER></B><BR>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Name</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<INPUT TYPE="TEXT" NAME="form[name]" VALUE="<?php echo $form[name]; ?>">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Job</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<INPUT TYPE="TEXT" NAME="form[job]" VALUE="<?php echo $form[job]; ?>">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Email</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<INPUT TYPE="TEXT" NAME="form[email]" VALUE="<?php echo $form[email]; ?>">
</TD>
</TR>
<TR>
<TD ALIGN="LEFT">Comments</TD>
<TD ALIGN="LEFT"><B>*</B></TD>
<TD ALIGN="LEFT" NOWRAP>
<TEXTAREA NAME="form[comments]" COLS="23" ROWS="8" WRAP="VIRTUAL"><?php echo $form[comments]; ?></TEXTAREA>
</TD>
</TR>
<TR ALIGN="CENTER">
<TD COLSPAN="3">
<INPUT TYPE="SUBMIT" VALUE="Submit"> <INPUT TYPE="RESET" VALUE="Reset">
</TD>
</TR>
</TABLE>
</FORM>
<? }
else {
if(!$form[email]) {
$form[email] = "n/a"; }
if(!$form[subject]) {
$form[subject] = "n/a"; }
if(!$form[name]) {
$form[name] = "n/a"; }
/* check if a HTML-mail should be send or a plain/text mail */
if($html_mail == "yes" ) {
mail("$admin_name <$admin_mail>","PHP3 Guestbook Addition","<HTML><BODY><FONT FACE=\"Century Gothic\"><TABLE BORDER=\"0\" WIDTH=\"100%\" CELLSPACING=\"4\"><TR>$form[name] ($form[email]) wrote the following message in the guestbook :</TR><TR><TD ALIGN=\"LEFT\"> </TD><TD ALIGN=\"LEFT\" NOWRAP> </TD></TR><TR><TD ALIGN=\"LEFT\">$form[comments]</TD><TD ALIGN=\"LEFT\" NOWRAP> </TD></TR><TR><TD ALIGN=\"LEFT\"> </TD><TD ALIGN=\"LEFT\" NOWRAP> </TD></TR><TR><TD ALIGN=\"LEFT\">Name:</TD><TD ALIGN=\"LEFT\" NOWRAP>$form[name]</TD></TR><TR><TD ALIGN=\"LEFT\">Beroep:</TD><TD ALIGN=\"LEFT\" NOWRAP>$form[job]</TD></TR><TR><TD ALIGN=\"LEFT\">Email:</TD><TD ALIGN=\"LEFT\" NOWRAP>$form[email]</TD></TR></TABLE></BODY></FONT></HTML>", "From: $form[name] <$form[email]>\nReply-To: $form[name] <$form[email]>\nContent-type: text/html\nX-Mailer: PHP/" . phpversion());
}
else {
mail("$admin_mail","PHP3 Guestbook Addition","$form[name] ($form[email]) wrote the following message in the guestbook : \n\n $form[comments]\n\n Name: $form[name] \n Job: $form[job] \n Email: $form[email] \n", "From: $form[name] <$form[email]>\nReply-To: $form[name] <$form[email]>\nContent-type: text/plain\nX-Mailer: PHP/" . phpversion());
}
/* MySQL really hates it when you try to put things with ' or " characters into a database, so strip these...*/
$form[comments] = addslashes ("$form[comments]" );
$query = "INSERT INTO $table VALUES('','$form[name]', '$form[email]', '$form[job]', '$form[comments]')";
$result = MYSQL_QUERY($query);
?>
<BR><P ALIGN = CENTER>Thank you, <?php echo $form[name]; ?>, for adding your name to our guestbook.
<BR><P ALIGN = CENTER><A HREF="<?php echo $scriptname; ?>?action=view" onMouseOver="window.status='View your comment now';return true" onMouseOut="window.status='';return true" TITLE="View your comment now">View your comment now.</A><BR><BR>
<?
}
}
/* if there's no action given, then we must show the main page */
else {
/* get the number of entries written into the guestbook*/
$query = "SELECT name from $table";
$result = MYSQL_QUERY($query);
$number = MYSQL_NUMROWS($result);
if ($number == "" ) {
$entry = "At the moment there are no persons"; }
elseif ($number == "1" ) {
$entry = "At the moment there is 1 person"; }
else {
$entry = "At the moment there are $number persons"; }
echo "<CENTER><BR>";
echo "<P>$entry in the guestbook.<BR>";
echo "<H4><FONT FACE=\"Verdana\" SIZE=\"-2\"><A HREF=\"$scriptname?action=add\" onMouseOver=\"window.status='Add your name to our guestbook';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"Add your name to our guestbook\">Add your name to our guestbook</A></FONT></H4>";
if ($number > "" ) {
echo "<H4><FONT FACE=\"Verdana\" SIZE=\"-2\"><A HREF=\"$scriptname?action=view\" onMouseOver=\"window.status='View the names in our guestbook';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"View the names in our guestbook\">View the names in our guestbook</A></FONT></H4>"; }
echo "</P></CENTER>";
}
?>
<BR><SMALL><CENTER>Script by <A HREF="http://www.aitsh.com/" onMouseOver="window.status='Script by Advanced IT Services Holland';return true" onMouseOut="window.status='';return true" TITLE="Script by Advanced IT Services Holland">Advanced IT Services Holland</A></CENTER></SMALL>
</FONT>
</p>
<p> </p></td>
</tr>
Marsh Posté le 01-06-2008 à 02:06:18
ça ne viendrait pas de ça ?
$query = "SELECT * FROM $table ORDER BY ID DESC";
Marsh Posté le 01-06-2008 à 12:53:19
mysql_num_rows , pas mysql_numrows
et que vaut $table ?
Marsh Posté le 01-06-2008 à 22:22:48
Même avec en ajoutant un "_" à mysql_num_rows à la place de mysql_numrows ça ne fonctionne toujours pas
Marsh Posté le 02-06-2008 à 00:18:10
zepouss a écrit : c'est à dire ? |
est ce que $table contient bien le nom de ta table ?
Marsh Posté le 02-06-2008 à 00:25:47
oui oui $table contient bien le nom de ma table. Je me demandais juste si j'avais bien créée la table.
j'y ai mis les 4 champs du script à savoir name, job, email et comments
et je vois bien ma table sur le phpmyadmin...
je ne sais donc pas d'où peut venir l'erreur
Marsh Posté le 02-06-2008 à 00:26:38
Ah ton erreur vient qu'il n'y a pas de champs ID dans ta table et que tu fais un "ORDER BY ID".
Marsh Posté le 02-06-2008 à 00:41:02
ReplyMarsh Posté le 02-06-2008 à 00:54:06
zepouss a écrit : qu'est ce qu'un champ ID ? et comment réparer ce problème ? Merci ! ! |
Quand tu as crée ta table, tu as crée 4 champs : name, job, email et comments.
Code :
|
Ta requête se traduit par "je récupére toutes les données de ma table "$table" en les ordonnant avec ton champs ID dans l'ordre décroissant (désolé il se fait tard donc c'est peut-être pas très français ).
Le problème est que tu n'as pas de champs ID dans ta table donc cela provoquera une erreur. Pour palier à ce problème il faut soit que tu enlève la clause "ORDER BY ID DESC" ou bien que tu rajoutes un champs ID dans ta table (2ieme méthode conseillée, en général on met un champs ID car utile)
Marsh Posté le 02-06-2008 à 22:29:59
Merci beaucoup ! Ca fonctionne maintenant
Autre question, voici le bout de code que j'aimerai modifier :
Citation : |
Voilà ce que ça donne :
1. Comment avoir un espace entre la ligne "A l'heure actuelle, 2 personnes ont laissé un message dans le livre d'or." et "Ajouter votre message" et idem entre "Ajouter votre message" et "Lire les messages"
2. Plus subtil encore, comment remplacer "Ajouter votre message" par une image avec un lien vers le formulaire d'ajout de message et même question, comment remplacer "Lire les messages" par une image avec un lien vers les messages !
Merci énormément pour votre patience et votre aide !
EDIT: désolé 2xyo j'ai édité mon message en mettant ce que je voulais pendant que tu postais tu as été rapide sur ce coup !
Marsh Posté le 02-06-2008 à 22:34:39
zepouss a écrit : Merci beaucoup ! Ca fonctionne maintenant |
Et le modifier pour ?
Marsh Posté le 03-06-2008 à 13:31:26
salut
pour les sauts de ligne c'est simple, tu rajoute <BR> là où tu veux.
Code :
|
Marsh Posté le 03-06-2008 à 13:45:42
pour ta 2ème question il te suffit de remplacer le texte "Ajouter votre message" par <IMG SRC='lienverstonimage.jpg'>
Marsh Posté le 31-05-2008 à 23:44:08
Bonjour, je débute complètement sur mysql/php
sur un script de livre d'or j'ai un souci, tout se passe bien, je remplis les champs sur ma page test de livre d'or, je fais submit tout va bien et quand je clique sur voir votre commentaire j'ai une erreur :
Warning: mysql_numrows(): supplied argument is not a valid MySQL result resource in /home.10.23/jusdefra/www/guestbook.php3 on line 186
Ma ligne 186 c'est : $total= mysql_numrows($result)
Il y a 4 champs dans ce livre d'or : "name", "email", "job", "comments"
tous les champs dans ma base de donnée sont en varchar(30) hormis le comments en varchar(200), l'interclassement en latin_swedish_ci et null = non
en attributs, defaut et extra je n'ai rien touché c'est vierge
Désolé d'être aussi flou mais je pense que c'est plus un problème de ma configuration de ma table mysql qu'un problème de programmation du script, j'ai juste changé mes identifiants, password, bdd, etc dans le script.
Merci beaucoup de votre aide !
Message édité par zepouss le 02-06-2008 à 23:22:08