CONNEXION
  • RetourJeux
    • Sorties
    • Hit Parade
    • Les + populaires
    • Les + attendus
    • Soluces
    • Tous les Jeux
    • Gaming
  • RetourActu Gaming
    • News
    • Astuces
    • Tests
    • Previews
    • Toute l'actu gaming
  • RetourBons plans
    • Bons plans
    • Bons plans Smartphone
    • Bons plans Hardware
    • Bons plans Image et Son
    • Bons plans Amazon
    • Bons plans Cdiscount
    • Bons plans Decathlon
    • Bons plans Fnac
    • Tous les Bons plans
  • RetourJVTech
    • Actus High-Tech
    • Intelligence Artificielle
    • Smartphones
    • Mobilité urbaine
    • Hardware
    • Image et son
    • Tutoriels
    • Tests produits High-Tech
    • Guides d'achat High-Tech
    • JVTech
  • RetourCulture
    • Actus Culture
    • Culture
  • RetourVidéos
    • A la une
    • Gaming Live
    • Vidéos Tests
    • Vidéos Previews
    • Gameplay
    • Trailers
    • Chroniques
    • Replay Web TV
    • Toutes les vidéos
  • RetourForums
    • Hardware PC
    • PS5
    • Switch 2
    • Xbox Series
    • Switch
    • Pokemon pocket
    • FC 25 Ultimate Team
    • League of Legends
    • Tous les Forums
  • PC
  • PS5
  • Xbox Series
  • Switch 2
  • PS4
  • One
  • Switch
  • iOS
  • Android
  • MMO
  • RPG
  • FPS
En ce moment Genshin Impact Valhalla Breath of the wild Animal Crossing GTA 5 Red dead 2
Liste des sujets

[PHP] requête en retard ?

Yechiko
Yechiko
Niveau 21
03 mars 2017 à 20:05:11

Bonsoir !
Voila mon soucis :hap: :

J'ai une page blanche avec une drop-down list,et le resultat du choix lorsque je clique sur un choix qu'elle contient avant rafraichissement automatique de la page.

Voila mon code :
<form action="<?php if (isset($_POST['myselect'])){ $select=$_POST['myselect']; $sql_query = "UPDATE jointure_di_capteurs SET id_conforme = ".$select." WHERE jointure_di_capteurs.jid_di = 2 AND `jointure_di_capteurs`.`jid_capteur` = 29" ; mysql_query($sql_query); } ?>" method="post"> <select name="myselect" id="myselect" onchange="this.form.submit()"> <option value="0"selected="">Choix</option> <option value="3">Non Conforme</option> <option value="2">En attente</option> <option value="1">Conforme</option> </select><br><br> </form> <?php echo "<br>"; echo "<br>"; if ($dirow[11] == 1){echo "Conforme";} if ($dirow[11] == 2){echo "En attente";} if ($dirow[11] == 3){echo "Non conforme";} ?>

Désoler pour la "tronche du code , ça rend bien mieux sur le traitement de texte et quand j'essaie d'espacer le code , les balises <code> ne font plus effets :noel:

Bref ce code permet actuellement de faire un update dés que je clique sur un choix, ça marche , mais avec une actualisation de page en retard.

Je choisi la première fois -> rafraîchissement de page -> résultat "null" ...
Je choisi la deuxième fois -> rafraîchissement de page -> résultat de la première fois ...
Je choisi la troisième fois -> rafraîchissement de page -> résultat de la deuxième fois ...

Etc etc ...

Merci et bonne soirée !

darkiron_natty
darkiron_natty
Niveau 8
04 mars 2017 à 07:25:45

Y'a un principe que ta pas compris [[sticker:p/1kkn]]
Déjà sur le dom html form action doit avoir une url.
Et essaye de faire du mvc. Regarde les moteur de template ( twig. ) sinon y'a aucune raison de ce retard . Fais du debug

AzazelBee
AzazelBee
Niveau 10
04 mars 2017 à 13:51:44

Le 03 mars 2017 à 20:05:11 yechiko a écrit :
Bonsoir !
Voila mon soucis :hap: :

J'ai une page blanche avec une drop-down list,et le resultat du choix lorsque je clique sur un choix qu'elle contient avant rafraichissement automatique de la page.

Voila mon code :
<form action="<?php if (isset($_POST['myselect'])){ $select=$_POST['myselect']; $sql_query = "UPDATE jointure_di_capteurs SET id_conforme = ".$select." WHERE jointure_di_capteurs.jid_di = 2 AND `jointure_di_capteurs`.`jid_capteur` = 29" ; mysql_query($sql_query); } ?>" method="post"> <select name="myselect" id="myselect" onchange="this.form.submit()"> <option value="0"selected="">Choix</option> <option value="3">Non Conforme</option> <option value="2">En attente</option> <option value="1">Conforme</option> </select><br><br> </form> <?php echo "<br>"; echo "<br>"; if ($dirow[11] == 1){echo "Conforme";} if ($dirow[11] == 2){echo "En attente";} if ($dirow[11] == 3){echo "Non conforme";} ?>

Désoler pour la "tronche du code , ça rend bien mieux sur le traitement de texte et quand j'essaie d'espacer le code , les balises <code> ne font plus effets :noel:

Bref ce code permet actuellement de faire un update dés que je clique sur un choix, ça marche , mais avec une actualisation de page en retard.

Je choisi la première fois -> rafraîchissement de page -> résultat "null" ...
Je choisi la deuxième fois -> rafraîchissement de page -> résultat de la première fois ...
Je choisi la troisième fois -> rafraîchissement de page -> résultat de la deuxième fois ...

Etc etc ...

Merci et bonne soirée !

1- Fait de la PDO... please... C'est pas car y a pas un champs texte que je peux pas customiser une requête POST avec $_POST['myselect'] contenant une injection...

2- Tu peux mettre ce le code PHP ailleurs que dans l'attribut action ? ... En soit ça sert à rien du tout de le mettre là, et je trouve ça plus perturbant à lire qu'autre chose. Action sert à mettre une URL, dans les 2 cas ici, il vaudra "" soit rien, ce qui revient à taper sur la page actuel...

Sinon, j'ai du mal à comprendre où le résultat est affiché, il s'agit des $dirow[11] en bas ? Si oui, ils sont définis où dans ton code ?

Yechiko
Yechiko
Niveau 21
05 mars 2017 à 22:20:28

Merci pour vos réponses, j'ai palier le problème avec un header, c'est très "sale" car je rafraîchi ma page deux fois si ma requête a été effectuer avec :

if (mysql_query($sql_query)==TRUE){header('Location: Untitled_4.php');}} ?>

Mais au moins ça marche!

Et pour le "$dirow" c'est simplement que je vous ai donner une partie du code , (j'ai juste enlever l'include de la page de connexion à la bdd et la requete sql qui ressort $dirow), du coup ça donne :

<?php include_once 'dbconfig.php';
$sql_query=("SELECT batiment,id_di,type,fabricant,gammemesure,installation,fonction,libelle,rtpf,reffiche,valide_op_capteur,id_conforme FROM capteurs INNER JOIN jointure_di_capteurs ON capteurs.idcapteur=jointure_di_capteurs.jid_capteur INNER JOIN di ON jointure_di_capteurs.jid_di=di.id_di WHERE id_di = 2 AND idcapteur = 29");
$result_set=mysql_query($sql_query);
$dirow=mysql_fetch_row($result_set);
?>
<?php if (isset($_POST['myselect'])){
$select=$_POST['myselect'];
$sql_query = "UPDATE jointure_di_capteurs SET id_conforme = ".$select." WHERE jointure_di_capteurs.jid_di = 2 AND `jointure_di_capteurs`.`jid_capteur` = 29" ;
mysql_query($sql_query);
if (mysql_query($sql_query)==TRUE){header('Location: Untitled_4.php');}
} ?>
<form method="post">
			<select name="myselect" id="myselect" onchange="this.form.submit()">
			<option value="0"selected="">Choix</option>
			<option value="3">Non Conforme</option>
			<option value="2">En attente</option>
			<option value="1">Conforme</option>
			</select><br><br>
			</form>
			<?php 
			 echo "<br>";
			 echo "<br>";
			if ($dirow[11] == 1){echo "Conforme";}
			if ($dirow[11] == 2){echo "En attente";}
			if ($dirow[11] == 3){echo "Non conforme";}
			 ?>
darkiron_natty
darkiron_natty
Niveau 8
06 mars 2017 à 07:57:19

C'est pas la bonne solution !

arsh222
arsh222
Niveau 10
06 mars 2017 à 17:40:04

si ton $dirow[11] est initialisé avant la requête update, c'est logique qu'il contienne l'ancienne valeur au moment où tu l'affiches. Tu pourrais faire l'update d'abord, et ensuite charger les données. Cela dit ça ne me paraît pas "sale" de recharger la page, ça élimine les données du form de l'historique du navigateur (le fameux "voulez-vous renvoyer le formulaire blabla" en cas de refresh). Quoi qu'il en soit, après une redirection tu devrais faire un exit; pour arrêter l'exécution du script, et si le script risque d'être appelé par des utilisateurs qui ne sont pas 100% dignes de confiance, échapper/valider les données pourrait être utile.

darkiron_natty
darkiron_natty
Niveau 8
06 mars 2017 à 17:57:47

Si c'est degeu. Ça peux même générer des erreurs. Il faut bien gérer c'est variable ( faire du pdo) avoir de joli objects [[sticker:p/1kkn]]

Sous forums
  • Aide à l'achat Mac
  • Création de Jeux
  • Linux
  • Création de sites web
  • Programmation
  • Internet
  • Steam Deck
  • Macintosh
  • Hardware
La vidéo du moment