J'ai un message d'erreur dans un tableau

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : J'ai un message d'erreur dans un tableau

par alaingpl » 13 mai 2007, 13:43

jojolapine à écrit :
pourquoi la fonction en majuscule ?
Par habitude, tout simplement. Je fais des copieer collé à partir de mes bouts de code afin d'éviter de tout retaper.

par jojolapine » 13 mai 2007, 13:36

"Sortez vos mor.. euh.. vos variables..." ;)
idem içi:
MYSQL_CONNECT("$localhost","$login","$mot") 
vaut mieux faire
mysql_connect($localhost,$login,$mot) 
(pourquoi la fonction en majuscule ?

par Ryle » 13 mai 2007, 13:30

Cool ! Ben ça, ça fait plaisir :)

Tiens, pis histoire d'alléger encore un peu :
for ($i=$debut;$i+1<=$fin;$i++) 
// revient au même que
for ($i=$debut;$i<$fin;$i++) 
Ca permet de moins se poser de question pour savoir quand il doit s'arrêter :)


Et par ailleurs ici :
<INPUT TYPE="HIDDEN" NAME="debut" VALUE="<? echo "$debut"; ?>">
il n'est pas nécessaire de mettre des guillemets autour d'une variable pour l'utiliser, tu peux l'afficher directement
<INPUT TYPE="HIDDEN" NAME="debut" VALUE="<? echo $debut; ?>" />
"Sortez vos mor.. euh.. vos variables..." ;)

par alaingpl » 13 mai 2007, 12:58

Bon, bon , ça va. Moi non plus j'aime pas cacher les messages d'erreurs (c'est la premiere fois)mais comme mon code fonctionne c'était la meilleure solution car je suis dessus depuis vendredi soir et j'ai sauté dessus (l'@) bien sûr. Juré, craché, je ne recommencerai plus..

Merci à Ryle qui m'a mis sur une piste que j'avais complétement omise :
et accessoirement $i+0 ou $i tout court, ca revient au même
je l'ai ré-écrite da façon suivante :
for ($i=$debut;$i+1<=$fin;$i++)
Bien sûr j'ai enlevé les @.
Pour d'autres voici le code complet avec le formulaire et vous pouvez voir le résultat à l'adrese suivante : http://www.qcmresto.fr/simone/index2.ph ... =1&debut=0

Dans quelques semaines :
www.lameresimone.com " livre d'or"
Merci à tous de l'aide.
<HTML>
<HEAD>
	<TITLE>Restaurant La Mère Simone</TITLE>
<LINK rel=stylesheet type="text/css" href="../style.css">
<style type="text/css">
<!--
#menu a {
display:inline;
color:#0033FF;
text-decoration:none;
}
-->
</style>

</HEAD>

<BODY BGCOLOR="#FFFFFF">
<div id="menu">
<?
	require("admin/config.php");
	$mysql_link =  MYSQL_CONNECT("$localhost","$login","$mot") OR DIE("Unable to connect to database !!");
	@mysql_select_db($dbName ,$mysql_link ) or die( "Unable to select database ??");
	
	    if (isset($_POST['nom']) AND isset($_POST['message2']))
{
    
    $nom = htmlentities($_POST['nom'], ENT_QUOTES); 
        
    $message = htmlentities($_POST['message2'], ENT_QUOTES); 
    $message = nl2br($message2); 
    
		$dater=date("Y-m-d H:i:s");
		$req=mysql_query("INSERT INTO message (nom, message, dater) VALUES ('$nom','$message','$dater')");
		echo"<br><div align=\"center\">Nous vous remercions de l'intérêt que vous portez à notre établissement</div>";
		
?>
		
<?
	}
?>

		<TABLE CELLPADDING=0 CELLSPACING=0 WIDTH="500" BORDER=0>
		<TR>
			<TD width="500"><br>
			<p><center><b><em><h3>Notre livre d'or</h3></em></b></center></p><br>
			</TD>
		</TR>
		<TR>
			<TD COLSPAN=3>
				<TABLE CELLPADDING=10 CELLSPACING=0 WIDTH="500" BORDER=1 BORDERCOLOR=#808080 style="border-collapse: collapse" ALIGN=MIDDLE>
				<TR>
				  <TD ALIGN=LEFT VALIGN=MIDDLE WIDTH=400>
						<div align=justify>
						<font face="Arial" size=1 color=#000000>
<?
	$req3=mysql_query("SELECT * FROM message ORDER BY dater DESC");
	$nbr3=mysql_num_rows($req3);
	if ($nbr3=="0") 
			{ 
		echo "<FONT FACE=\"Arial\" SIZE=2 COLOR=#000000><b><center>Aucun message dans le forum</center></b>";
			}
	else
			{
		if ($debut+5<=$nbr3) { $fin=$debut+4; } else { $fin=$nbr3; }
		for ($i=$debut;$i+1<=$fin;$i++)
			{
			$nom = mysql_result($req3,$i+0,"nom");
			$message = mysql_result($req3,$i+0,"message");
			$dater = mysql_result($req3,$i+0,"dater");
			$dater2= substr($dater,8,2)."/".substr($dater,5,2)."/".substr($dater,0,4)." à ".substr($dater,11,8);	
			
			echo "<font size=2>$message</font><br>";
			echo "<div align=right><i>$nom, le $dater2</i>";
			echo "</div>";
			echo "<br>";
			echo "<font color=#808080>";
			for ($j=1;$j<=160;$j++) { echo "·"; }
			echo "</font><br>";
			
			}
			}
				
?>

<? 
			
		$nbrpage = ceil($nbr3 / 5);
		echo "<FONT FACE=\"Arial\" SIZE=2 COLOR=#000000><center>";  
		for ($i=1;$i<=$nbrpage;$i++)
			{
			$debut2=5*($i-1)+0;
			if ($debut2!=$debut)
			{
					echo '<a href="index2.php?page=livreor/livre_or.php&Numero=1&debut='.$debut2.'">'.$i.'</a>';
			}
			else
			{
				echo "<b>$i</b>";
			}
			if ($i!=$nbrpage) { echo " | ";}
			}

mysql_close();
?>					</TD>
				</TR>
				</TABLE><br>

				<TABLE CELLPADDING=10 CELLSPACING=0 WIDTH="500" BORDER=0 BORDERCOLOR=#808080 style="border-collapse: collapse" ALIGN=MIDDLE>
				<TR>
					<TD ALIGN=CENTER VALIGN=MIDDLE>

						<FORM id="formulaire_de_contact" METHOD="POST" ACTION="index2.php?page=livreor/livre_or.php" NAME="livre">
		</font><br>
						
						<div>
						<label for="nom">Nom ou Pseudo</label>
						<INPUT TYPE="TEXT" id="nom" NAME="nom" VALUE="">
						</div>
						 <div>
						 <label for="sujet">Message</label>
						<TEXTAREA NAME="message2" ROWS=5 COLS=50> </TEXTAREA>
						</div>
						<INPUT TYPE="HIDDEN" NAME="debut" VALUE="<? echo "$debut"; ?>">
						<div>
						<input type="reset" id="reset" name="Submit" value="Tout effacer">  
						<input type="submit" id="submit" name="Submit" value="Signer le livre d'or">
						</div>
											
	
		</TABLE>

	</TD>
</TR>
</TABLE>
</FORM>
</div>
</BODY>
</HTML>

par Ryle » 13 mai 2007, 11:52

Arf, oki, je comprend mieux, c'est peut être l'ironie ou la phrase suivante qui a du échapper à alaingpl :
Peut-être le même philosophie qui prévaut chez les mauvais développeurs PHP
M'enfin je le gronderais quand même, je sais qu'il aime bien ça ;)

par jojolapine » 13 mai 2007, 11:45

Et c'est albat qui t'a suggéré de faire ça ? il va m'entendre le bougre !!
il fait bien d'aller donner ce genre de conseils sur d'autres forum ;)
Non non va pas le gronder, il a simplement parler de cacher la misère en comparant les développeurs de vista et les mauvais développeurs php
(cf http://www.phpfrance.com/forums/voir_re ... php#192131)
Il n'a jamais conseillé de le faire ;)

par Ryle » 13 mai 2007, 11:39

Le "@" va en effet cacher les messages d'erreur ou d'alerte... il n'y a parfois pas d'autres solution (mais c'est assez rare) mais cela revient à dire que ton code contient des erreurs, que ton traitement a un problème, mais que comme le résultat aujourd'hui es bon, au lieu d'essayer de le comprendre et de le résoudre, tu vas juste le cacher en croisant les doigts pour espérer que le jour ou ca explosera, tu seras assez loin pour que ça ne soit pas pour ta pomme ;)

Faudrait voir combien de ligne sont retournées, que contient la ligne "13", qu'est ce qui peut bloquer php... (et accessoirement $i+0 ou $i tout court, ca revient au même :))

Et c'est albat qui t'a suggéré de faire ça ? il va m'entendre le bougre !!
il fait bien d'aller donner ce genre de conseils sur d'autres forum ;)

par jojolapine » 13 mai 2007, 11:33

bouh... pas beau ça :(
Il ne faut jamais cacher la misère, en dev comme ailleur...

par alaingpl » 13 mai 2007, 11:17

Le message d'erreur venait de ces 3 lignes.
                                        $nom = mysql_result($req3,$i+0,"nom");
			$message = mysql_result($req3,$i+0,"message");
			$dater = mysql_result($req3,$i+0,"dater");
			$dater2= substr($dater,8,2)."/".substr($dater,5,2)."/".substr($dater,0,4)." à ".substr($dater,11,8);	
Grâce à Albat qui dans un autre forum m'a donné cette bidouille : mettre une @ devant une fonction pour cacher les messages d'erreurs.
J'ai donc ré - écrit :
                                        $nom = @mysql_result($req3,$i+0,"nom");
			$message = @mysql_result($req3,$i+0,"message");
			$dater = @mysql_result($req3,$i+0,"dater");
			$dater2= substr($dater,8,2)."/".substr($dater,5,2)."/".substr($dater,0,4)." à ".substr($dater,11,8);	
Je précise que mon code fonctionnait très bien et que le message d'erreur n'influençait pas le résultat. Il "polluait" la page.

par alaingpl » 13 mai 2007, 10:57

J'ai fait un test sur la variable $ndr3. Elle compte bien le nombre d'entrée dans la base de données.
Je ne comprends pas d'où peut venir le pbl.

par Truc » 12 mai 2007, 13:20

jed, tu ferais mieux d'ouvir ton propre sujet sinon ça va vite devenir fouilli :?

Des sujets traitant de parcours de dossiers exitent déjà.

par jed » 12 mai 2007, 13:16

Bonjour, je souhaiterais faire la même chose mais je n'utilise pas de bdd, mon concept est le parcours des dossiers sur le serveur, pouvez vous m'aider svp?

par alaingpl » 12 mai 2007, 12:34

Si j'ai bien compris:

$_get[debut] est inférieur au total des message car la $debut est égal à 0 Elle fait référence au dernier message posté. Elle est donc égal à 0.
Pour passer de 5 en 5 j'effectue ça:
for ($i=1;$i<=$nbrpage;$i++)
			{
			$debut2=5*($i-1)+0;
			if ($debut2!=$debut)
			{
					echo '<a href="index2.php?page=livreor/livre_or.php&Numero=1&debut='.$debut2.'">'.$i.'</a>';

par thehawk » 12 mai 2007, 11:11

Regarde precisement :
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor');
$donnees = mysql_fetch_array($retour);
Puis tu regarde si la demande $_GET[debut] est superieur au total des message et si oui tu met a la place de 15 tu met ton total

par alaingpl » 12 mai 2007, 10:57

Merci pour l'aide mais ce qu'il est expliqué sur le site du zéro est déjà ce que je fais ici.

J'utilise déjà la fonction CEIL
Je demande : total de page ($nbrpage) doit être égal au nombre de message ($nbr3) divisé par 5. CEIL arrondi au chiffre supérieur si celui ci n'est donc pas un multiple de 5.
C'est pour cela que je ne comprends pas qu'il m'affiche un message d'erreur.
 $nbrpage=ceil($nbr3/5);