Ecraser la requete précèdente PHP

jialo -  
fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,
je travaille sur une petite application Php/MySQL et je me trouve confronté à un problème :

j'effectue une requete SQL puis affiche le résultat dans un tableau.
Seulement lorsque j'effectue une opération sur page (actualiser, trier une colonne..) la requète se relance et mon tableau est en double, triple .. (si je ne vide pas mes tables)

Quelqu'un a-t-il une idée pour résoudre le probléme?
Merci d'avance



A voir également:

6 réponses

Defouille Messages postés 388 Date d'inscription   Statut Membre Dernière intervention   54
 
Bonjour,

je ne comprend pas bien ton problème, tu modifie ta base ou ? Dans ta page principale ? à partir d'informations que tu récupères d'un POST et si tu fais F5 la requête se relance, c'est bien ça le problème ?
0
dariumis Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   63
 
Salut, si la page que tu rafraichie est une page dans laquelle il y a une requette de type "insert" a chaque actualisation de la page tu executeras de nouveau cette requête.
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Avant de remplir ton tableau après exécution de ta requête pense à vider le tableau en question...
0
jialo
 
Disons que sur la même page php j'effectue des requete INSERT TO dans deux tables différentes puis une jointure sur une troisième table.
A l'issue de ces insertions, j'affiche le résultat de ma jointure dans un tableau, si je ne vide pas les trois tables, effectivement si je fais F5, les requêtes s'effectuent de nouveau à la suite des précédentes.

Mais ce qui m'embête le plus c'est lorsque que je veux trier mon tableau, c'est un lien qui affiche cette même page et du coup les résultats s'inscrivent plusieurs fois.

Voila, j'espere avoir été plus claire!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
dariumis Messages postés 571 Date d'inscription   Statut Membre Dernière intervention   63
 
Il faut partir faire tes insertion sur une page uniquement dédié a cela, et te rediriger vers la page d'affichage avec un header. dissocier insertion et affichage.
0
jialo
 
Alors j'ai bien compris ce principe de dissocier insertion et affichage.

J'ai donc crée une page insertion avec mes requête INSERT dedans à la fin de laquelle je redirige vers la page affichage grace à la fonction :

<?php
header('Location: /repertoire/mapage.php');
?>

Seulement un message d'erreur s'affiche :
Warning:Cannot modify header information - headers already sent by(output started at C:\wamp\..\affichage_general.php:808) in C:\ma_page_dinsertion.php on line 63.

Je ne comprend pas ce message d'erreur..
0
Breub62 Messages postés 2989 Date d'inscription   Statut Membre Dernière intervention   369
 
Le header ne doit se faire qu'avant l'exécution de code HTML. Je te conseille plutôt :
echo "<script language=javascript>setTimeout(\"window.location='/repertoire/mapage.php'\",1500);</script>";


où 1500 est le temps en millisecondes avant la redirection

ou un simple :

echo "<script language='javascript'>window.location.replace('/repertoire/mapage.php');</script>";
0
jialo
 
Alors le premier code m'affiche une page blanche :( mais le deuxième marche :)
Pour actualiser c'est donc ok.

Une autre petite question : pour atteindre ce tableau je clique sur un lien de mon menu, si je clique une fois c'est ok, si je quitte la page de mon tableau et reviens dessus via mon menu j'ai le même problème .. puisqu'on passe par la page d'insertion PUIS la page d'affichage.

Comment procéder pour ne passer que par la page d'affichage une fois le tableau construit?

Merci
0
fxtaa Messages postés 1050 Date d'inscription   Statut Membre Dernière intervention   74
 
Le plus simple serait de créer une variable de session lorsque ton tableau est contruit.

Puis de rajouter sur tes pages un petit if(isset()){} afin de vérifier si ta variable de session existe.

Si elle n'existe pas, tu construis le tableau. Sinon tu ne fait que l'afficher.
0