Modifications de code PHP (mise en page)

Modifications de code PHP (mise en page) - PHP - Programmation

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
Reply

Marsh Posté le 31-05-2008 à 23:44:08   

Reply

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 ? :o


---------------
PSN : XprtZ - BattleTag : XprtZ#2257 - 3DS : 2492-4109-3060
Reply

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">&nbsp;<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">&nbsp;<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\">&nbsp;</TD><TD ALIGN=\"LEFT\" NOWRAP>&nbsp;</TD></TR><TR><TD ALIGN=\"LEFT\">$form[comments]</TD><TD ALIGN=\"LEFT\" NOWRAP>&nbsp;</TD></TR><TR><TD ALIGN=\"LEFT\">&nbsp;</TD><TD ALIGN=\"LEFT\" NOWRAP>&nbsp;</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>&nbsp;</p></td>
            </tr>


Message édité par zepouss le 01-06-2008 à 00:41:28
Reply

Marsh Posté le 01-06-2008 à 02:06:18    

ça ne viendrait pas de ça ?
 
$query = "SELECT * FROM $table ORDER BY ID DESC";  

Reply

Marsh Posté le 01-06-2008 à 11:56:43    

une idée quelqu'un ? merci !

Reply

Marsh Posté le 01-06-2008 à 12:53:19    

mysql_num_rows , pas  mysql_numrows  
 
 
et que vaut $table ?


---------------

Reply

Marsh Posté le 01-06-2008 à 16:44:17    

c'est à dire ?
 

Reply

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 :(

Reply

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 ?


---------------
PSN : XprtZ - BattleTag : XprtZ#2257 - 3DS : 2492-4109-3060
Reply

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 :(

Reply

Marsh Posté le 02-06-2008 à 00:25:47   

Reply

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".


Message édité par XprtZ le 02-06-2008 à 00:27:13

---------------
PSN : XprtZ - BattleTag : XprtZ#2257 - 3DS : 2492-4109-3060
Reply

Marsh Posté le 02-06-2008 à 00:41:02    

qu'est ce qu'un champ ID ?
 
et comment réparer ce problème ?
 
Merci ! !

Reply

Marsh 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 :
  1. $query = "SELECT * FROM $table ORDER BY ID DESC";
 

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 :o ).

 

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)


Message édité par XprtZ le 02-06-2008 à 00:54:28

---------------
PSN : XprtZ - BattleTag : XprtZ#2257 - 3DS : 2492-4109-3060
Reply

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 :


<?
 
}                                                                    
}
 
/* 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  =  "A l'heure actuelle, personne n'a encore laissé de message"; }
 
elseif  ($number  == "1" )  {
$entry  = "A l'heure actuelle, 1 personne a laissé un message"; }
 
else  {
$entry  = "A l'heure actuelle, $number personnes ont laissé un message"; }
 
echo    "<CENTER><BR>";
echo    "<P>$entry  dans le livre d'or.<BR>";
echo    "<H4><FONT FACE=\"Verdana\" SIZE=\"-2\"><A HREF=\"$scriptname?action=add\" onMouseOver=\"window.status='Ajouter votre message';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"Ajouter votre message\">Ajouter votre message</A></FONT></H4>";
 
if  ($number  > "" ) {  
echo    "<H4><FONT FACE=\"Verdana\" SIZE=\"-2\"><A HREF=\"$scriptname?action=view\" onMouseOver=\"window.status='Lire les messages';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"Lires les messages\">Lire les messages</A></FONT></H4>"; }
echo    "</P></CENTER>";
}
?>


 
Voilà ce que ça donne :  
 
http://www.jusdeframboise.com/help.jpg
 
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 !

Message cité 1 fois
Message édité par zepouss le 02-06-2008 à 22:37:49
Reply

Marsh Posté le 02-06-2008 à 22:34:39    

zepouss a écrit :

Merci beaucoup ! Ca fonctionne maintenant :)
 
Autre question, voici le bout de code que j'aimerai modifier :  
 


 
Et le modifier pour ?  :sarcastic:


---------------
2 * yo = yoyo
Reply

Marsh Posté le 03-06-2008 à 10:26:21    

Any idea ?
 
Merci beaucoup !

Reply

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 :
  1. echo    "<CENTER><BR>";
  2. echo    "<P>$entry  dans le livre d'or.<BR><BR>";
  3. echo    "<H4><FONT FACE=\"Verdana\" SIZE=\"-2\"><A HREF=\"$scriptname?action=add\" onMouseOver=\"window.status='Ajouter votre message';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"Ajouter votre message\">Ajouter votre message</A></FONT></H4><BR>";
  4. if  ($number  > "" ) { 
  5. echo    "<H4><FONT FACE=\"Verdana\" SIZE=\"-2\"><A HREF=\"$scriptname?action=view\" onMouseOver=\"window.status='Lire les messages';return true\" onMouseOut=\"window.status='';return true\" TITLE=\"Lires les messages\">Lire les messages</A></FONT></H4>"; }
  6. echo    "</P></CENTER>";


Message édité par xphanoo le 03-06-2008 à 13:31:46
Reply

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'>

Reply

Marsh Posté le 03-06-2008 à 18:43:03    

Merci ! !

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed