Quand j'actualise la page un commentaire s'ajoute bizarrd

saphae100
Invité n'ayant pas de compte PHPfrance

01 juin 2012, 02:53

Bonjour tout le monde

Quand j'actualise la page un commentaire s'ajoute bizarrd
par exemple j'ajoute un commentaire simple mais quand j'actualise la page il se redouble et ainsi de suite

Eléphant du PHP | 75 Messages

01 juin 2012, 06:40

Actualiser avec F5 recharge la page et les données précédentes.
Tu recherches comment ?

ViPHP
xTG
ViPHP | 7331 Messages

01 juin 2012, 09:28

Sans un brin de code nous ne pouvons faire que des suppositions...

saphae100
Invité n'ayant pas de compte PHPfrance

01 juin 2012, 15:37

quand je mets F5 une ligne s'ajoute ( un commentaire vide s'ajoute )
est ce que je peux copier tout le code ?? est ce que c'est pas grave ?

ViPHP
xTG
ViPHP | 7331 Messages

01 juin 2012, 16:21

C'est une condition manquante, un code qui s'exécute alors qu'aucune donnée n'a été envoyé.
Mais on ne peut t'en dire plus si tu ne nous montres pas ton code.
Quand à poster tout le code... Postes nous le code faisant le traitement des données du formulaire et de l'ajout en bdd.

saphae100
Invité n'ayant pas de compte PHPfrance

01 juin 2012, 17:57

merci c gentille
voila mon code
<?php
 
// Maintenant, on va afficher les messages
// ---------------------------------------
if (isset($_GET['page']))
{
        $page = $_GET['page']; // On récupère le numéro de la page indiqué dans l'adresse (livreor.php?page=4)
}
else // La variable n'existe pas, c'est la première fois qu'on charge la page
{
        $page = 1; // On se met sur la page 1 (par défaut)
}
 
// On calcule le numéro du premier message qu'on prend pour le LIMIT de MySQL
$premierMessageAafficher = ($page - 1) * $nombreDeMessagesParPage;
 
$format = ' DAY(Date_creation) AS jour, MONTH(Date_creation) AS mois, YEAR(Date_creation) AS annee, HOUR(Date_creation) AS heure, MINUTE(Date_creation) AS minute';
$reponse = mysql_query('SELECT *, '.$format.' FROM livreor WHERE fiche_id = '.$fiche.' AND source_fiche_id = '.$id.' ORDER BY id DESC LIMIT ' . $premierMessageAafficher . ', ' . $nombreDeMessagesParPage);
if(isset($_SESSION['membre_id'])){
$memb = "SELECT * FROM membres WHERE membre_id = '".$_SESSION['membre_id']."'";
			$result_memb = mysql_query($memb);
			$dato = mysql_fetch_array($result_memb);
			$level = $dato['Niveau'];
			}
while ($donnees = mysql_fetch_array($reponse))
{
		switch($donnees['mois']){
		case 1:
			$month = 'Janvier';
		break;
		case 2:
			$month = 'Février';
		break;
		case 3:
			$month = 'Mars';
		break;
		case 4:
			$month = 'Avril';
		break;
		case 5:
			$month = 'Mai';
		break;
		case 6:
			$month = 'Juin';
		break;
		case 7:
			$month = 'Juillet';
		break;
		case 8:
			$month = 'Aout';
		break;
		case 9:
			$month = 'Septembre';
		break;
		case 10:
			$month = 'Octobre';
		break;
		case 11:
			$month = 'Novembre';
		break;
		case 12:
			$month = 'Décembre';
		break;
		default: 
		echo "invalide";
		}
		if(isset($level) && $level == 2){
        echo '<div class="comment"><p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />
		le ' . $donnees['jour'] . ' ' . $month . ' ' . $donnees['annee'] . ' à ' . $donnees['heure'] . 'h' . $donnees['minute'] . 'min<br /></p><p>
		' . $donnees['message'] . '</p>
		<form name="supp" id="supp" method="post" action="report.php?g='.$donnees['id'].'&f='.$fiche.'&d='.$id.'">
		<input type ="submit" name="suppcom" value="Supprimer"></form>
		<a href="javascript: prompter('.$fiche.','.$id.')" class="rigg">Report</a></div>';
		}
		else{
		echo '<div class="comment"><p><strong>' . $donnees['pseudo'] . '</strong> a écrit :<br />
		le ' . $donnees['jour'] . ' ' . $month . ' ' . $donnees['annee'] . ' à ' . $donnees['heure'] . 'h' . $donnees['minute'] . 'min<br /></p><p>
		' . $donnees['message'] . '</p><a href="javascript: prompter('.$fiche.','.$id.')" class="rigg">Report</a></div>';
		}
}


?>


ViPHP
xTG
ViPHP | 7331 Messages

01 juin 2012, 18:36

Il n'y a pas le code d'insertion dans ce que tu nous donnes.

saphae100
Invité n'ayant pas de compte PHPfrance

01 juin 2012, 22:11

oui j'ai oublié en fait je suis débutante voila le code
    mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '".$fiche."', '".$id."', NOW())");

ViPHP
xTG
ViPHP | 7331 Messages

01 juin 2012, 23:41

Il nous faudrait un peu plus que seulement la ligne...
C'est justement le problème, cette ligne est exécutée alors qu'elle ne devrait pas.
Donc c'est ce qui l'entoure qui n'est pas correct.

saphae100
Invité n'ayant pas de compte PHPfrance

02 juin 2012, 01:38

voila
<?php
 if (isset($_POST['le_pseudo']) AND isset($_POST['message']))
{     
$pseudo = ($_POST['le_pseudo']);
 } else {
     $pseudo = mysql_real_escape_string(htmlspecialchars($_POST['pseudon']));
 }

    $message = ($_POST['message']); 
    $message = nl2br($message); // Pour le message, comme on utilise un textarea, il faut remplacer les Entrées par des <br />
 
    // On peut enfin enregistrer :o)
    mysql_query("INSERT INTO livreor VALUES('', '" . $pseudo . "', '" . $message . "', '".$fiche."', '".$id."', NOW())");
//}
//}

 



// --------------- Étape 2 -----------------
// On écrit les liens vers chacune des pages
// -----------------------------------------
 
// On met dans une variable le nombre de messages qu'on veut par page
$nombreDeMessagesParPage = 10; // Essayez de changer ce nombre pour voir :o)
// On récupère le nombre total de messages
$retour = mysql_query('SELECT COUNT(*) AS nb_messages FROM livreor WHERE fiche_id = '.$fiche.' AND source_fiche_id = '.$id.'');
$donnees = mysql_fetch_array($retour);
$totalDesMessages = $donnees['nb_messages'];
// On calcule le nombre de pages à créer
$nombreDePages  = ceil($totalDesMessages / $nombreDeMessagesParPage);
// Puis on fait une boucle pour écrire les liens vers chacune des pages

if($donnees['nb_messages']!=0){
echo 'Commentaires sur la fiche ' . $title1 . ' :<br/>';
echo 'Page : ';

for ($i = 1 ; $i <= $nombreDePages ; $i++)
{
    echo '<a href="viewuser.php?page=' . $i . '&f='.$fiche.'&d='.$id.'">' . $i . '</a> ';
}
}
else{
}
?>

ViPHP
xTG
ViPHP | 7331 Messages

02 juin 2012, 09:40

Tu as semble-t-il modifié le code de départ à voir les accolades en commentaires...
Et le code de départ était bon.

Ta première condition teste l'existence de données en provenance du formulaire, s'il n'y a pas de données il ne faut pas faire l'insert.
Donc dans ton cas puisque tu peux te passer de pseudo il faut tester l'existence du message, si pas de message on ne fait pas la requête. ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 juin 2012, 12:43

Petite remarque en passant... quand tu appuies sur F5 pour recharger la page, n'aurais-tu pas un message du navigateur que tu valides sans le lire (vu que si tu le fais pas, il te recharge pas la page ?)

En le lisant, tu verras que le navigateur te demande si tu veux renvoyer les informations. Si tu répond oui, ben il renvoi à nouveau ton message qui est à nouveau enregistré en base, et ainsi de suite tant que tu actualiseras et confirmera le renvoi du formulaire.

Pour éviter cela, tu peux rediriger l'utilisateur avec un header() pour que l'actualisation ne renvoi pas les données. De mémoire il y a un topic sur le pattern PRG dans la FAQ :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
xTG
ViPHP | 7331 Messages

02 juin 2012, 13:12

Petite remarque en passant... quand tu appuies sur F5 pour recharger la page, n'aurais-tu pas un message du navigateur que tu valides sans le lire (vu que si tu le fais pas, il te recharge pas la page ?)

En le lisant, tu verras que le navigateur te demande si tu veux renvoyer les informations. Si tu répond oui, ben il renvoi à nouveau ton message qui est à nouveau enregistré en base, et ainsi de suite tant que tu actualiseras et confirmera le renvoi du formulaire.

Pour éviter cela, tu peux rediriger l'utilisateur avec un header() pour que l'actualisation ne renvoi pas les données. De mémoire il y a un topic sur le pattern PRG dans la FAQ :)
Pas bien de lire en diagonale, bouh méchant piaf ! :evil:
Il n'y a pas de condition sur l'exécution de l'insert, donc données ou non c'est normal qu'on insère une ligne vide.
Sa requête se trouve sur la page d'affichage, donc à chaque affichage une insertion vide se produit.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 juin 2012, 13:30

Au temps pour moi ! (m'enfin c'est lui qui a commencé par dire que son com' se doublait :P )

Pis comme ça, il pourra corriger les deux d'un coup ! :-*

Qui ? moi de mauvaise foi ? naaaan ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...