Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Lancer une page php quand je coche un checkbox


Messages recommandés

Posté(e)

Bonjour tout le monde,

 

je souhaiterais savoir s'il est possible de faire un genre de submit en cochant un checkbox???

 

Plus clairement, j'ai un formulaire avec différents checkbox et un compteur. Je voudrais que dès qu'un utilisateur coche un checkbox, la page se mette à jour (mette à jour aussi la BDD MySQL) et donc mette à jour le compteur...

 

Le problème n'est pas les traitements, mais comment lancer la page au moment où je coche le checkbox?

 

Apparemment il est possible de faire ceci avec la fonction onClick, mais c'est une fonction javascript? S'il y a d'autres solutions, je suis à l'écoute...

 

Merci d'avance

Posté(e)

Le rechargement, ça serait uniquement pour mettre à jour le compteur ?!?

C'est effectivement possible de le faire en Javascript, mais il est tout aussi possible de mettre à jour l'affichage sans faire un aller-retour serveur (et sans forcer l'utilisateur à attendre que la page se recharge !)

Posté(e)

Nan nan le rechargement ce n'est pas que pour mettre à jour le compteur.

En fait, je fais un mixte entre des informations récupérées en BDD MySQL et d'autres récupèrées sur des serveurs, le tout servant à former un fichier de conf pour un serveur. Donc, en fait il y a des checkbox cochés et d'autres non. Un compteur indique le nombre de case coché.

 

Le but est que si un user coche une case, les infos de la ligne aille s'enregistrer dans la BDD MySQL et le compteur s'incrémente. Je sais le faire avec un formulaire et un bouton submit. Seulement la je n'y arrive pas...

 

Si je mets sur la page "formulaire":

<FORM method='post' action='Gestion_profil.php'>

<INPUT type='checkbox' name='myhb' value='myhb' onclick=\"document.location.href='Gestion_profil_traitement.php'\">

</FORM>

 

Sur la page de traitement, je ne vois pas qu'il y a eu un cochage ou décochage...

if (isset($_POST['myhb'])) {

echo 'on le voit';

Posté(e)

OK, y'a pas qu'une mise à jour du compteur... Mais ça ne m'explique pas pourquoi tu as *besoin* que les changements se fassent en temps réel sur le serveur (pour un utilisateur c'est pénible d'attendre que la page se recharge à chaque fois qu'il coche / décoche une checkbox).

Le document.location te sert à dire au navigateur de charger une autre page, alors que ce qu'il faudrait c'est poster les infos et donc envoyer le formulaire...

Si le traitement est fait sur gestion_profil_traitement.php pourquoi as-tu mis getsion_profil.php comme action pour le formulaire ?

Peux-tu fournir plus d'infos sur le rôle de chaque script, s'il te plait ?

Posté(e)
Si le traitement est fait sur gestion_profil_traitement.php pourquoi as-tu mis getsion_profil.php comme action pour le formulaire ?

Peux-tu fournir plus d'infos sur le rôle de chaque script, s'il te plait ?

 

C'est juste une erreur de copier coller, car je fais différents traitements PHP, et j'ai pris cette ligne du mauvais endroit, pas de soucil de ce côté là...

 

OK, y'a pas qu'une mise à jour du compteur... Mais ça ne m'explique pas pourquoi tu as *besoin* que les changements se fassent en temps réel sur le serveur (pour un utilisateur c'est pénible d'attendre que la page se recharge à chaque fois qu'il coche / décoche une checkbox).

 

Euh tout simplement pour un soucil d'ergonomie, c'est les spécifications qui m'ont été données...

En fait, je récupère différentes infos sur un serveur d'infos. Si jamais une info est présente dans ma BDD MySQL, je la présente d'une certaine manière. Mais si elle ne l'est pas, je la présente d'une autre manière. Donc si je coche ou déoche, je la présente de l'autre manière.

Tout cela pour dire qu'il faut que ça soit dynamique, et que dés que je coche ou décoche, l'info doit changer d'apparence...

 

Le document.location te sert à dire au navigateur de charger une autre page, alors que ce qu'il faudrait c'est poster les infos et donc envoyer le formulaire...

 

Tu veux me dire que je n'ai pas d'autre choix que d'avoir un bouton submit pour envoi l'info?

 

En tout cas, merci de tes remarques pertinentes comme à l'accoutumée

Posté(e)
C'est juste une erreur de copier coller, car je fais différents traitements PHP, et j'ai pris cette ligne du mauvais endroit, pas de soucil de ce côté là...
OK, donc quand tu coches la case tu peux faire un "this.form.submit()", si la cible (l'attribut "action") c'est le bon fichier : ça va soumettre le formulaire...

<form method="post" action="gestion_profil_traitement.php">
 <input type="checkbox" name="myhb" value="osef" onclick="this.form.submit()" />
</form>

 

Tout cela pour dire qu'il faut que ça soit dynamique, et que dés que je coche ou décoche, l'info doit changer d'apparence...
Si les deux apparences sont toujours les mêmes (pas si "dynamique" que ça, finalement) tu peux parfaitement précharger les deux apparences dans la page, et passer de l'une à l'autre lorsque tu cliques sur la checkbox (du coup, plus besoin d'aller-retour serveur) ?

 

Tu veux me dire que je n'ai pas d'autre choix que d'avoir un bouton submit pour envoi l'info?
Pour envoyer l'info tu n'as pas d'autre choix que de soumettre le formulaire. Après, tu peux envoyer le formulaire avec un appel Javascript comme celui que je t'ai donné au début de ce post, donc tu peux le placer sur n'importe quel élément de la page (même sur un onmouseover sur une image, si ça t'amuse)
Posté(e)
OK, donc quand tu coches la case tu peux faire un "this.form.submit()", si la cible (l'attribut "action") c'est le bon fichier : ça va soumettre le formulaire...

<form method="post" action="gestion_profil_traitement.php">
 <input type="checkbox" name="myhb" value="osef" onclick="this.form.submit()" />
</form>

Ca a l'air de correspondre parfaitement à ce que je recherche, mais je ne vois pas la trace sur gestion_profil_traitement.php avec :

if (isset($_POST['myhb'])) {
echo 'on le voit';
}

 

Si les deux apparences sont toujours les mêmes (pas si "dynamique" que ça, finalement) tu peux parfaitement précharger les deux apparences dans la page, et passer de l'une à l'autre lorsque tu cliques sur la checkbox (du coup, plus besoin d'aller-retour serveur) ?

C'est pas bête du tout. J'aurais les infos "visuelles" gérées avec les checkbox et un bouton submit en bas de page, qui me permettra de mettre à jour en BDD MySQL.

Seulement question bête : comment précharger 2 apparences?

Et surtout comment je vais savoir ce que je dois au final ajouter (quand j'aurais coché) ou supprimr (quand j'aurais décoché)? je supprime tout en base pour le serveur à configurer et je réécris toutes les lignes (y'en pas tant que ça...)

Posté(e)
Ca a l'air de correspondre parfaitement à ce que je recherche, mais je ne vois pas la trace sur gestion_profil_traitement.php avec :

if (isset($_POST['myhb'])) {
echo 'on le voit';
}

Petit rappel : pour les checkboxes, on n'a de paramètre "myhb" dans la requête (le $_POST["myhb"]) que lorsque la checkbox était cochée (et le paramètre vaut ce qu'il y avait dans l'attribut "value" de la checkbox). Si tu veux voir "on le voit" il faut bien cocher la checkbox avant de soumettre le formulaire.

 

Seulement question bête : comment précharger 2 apparences?
Les deux dans la page avec un classe CSS "Invisible" pour la seconde, classe qu'on changera ou déplacera sur la "première apparence" lors du clic... (le "onclick" de la checkbox pilotera le masquage / affichage des "apparences" différentes)

 

Et surtout comment je vais savoir ce que je dois au final ajouter (quand j'aurais coché) ou supprimr (quand j'aurais décoché)? je supprime tout en base pour le serveur à configurer et je réécris toutes les lignes (y'en pas tant que ça...)
Ca, c'est à toi de gérer... En fonction de l'organisation de ta base de données ça peut être plus simple de faire du "annule et remplace" (un gros DELETE suivi d'un paquet d'INSERT) comme ça peut être plus simple de récupérer d'abord la liste d'éléments en base, et parcourir la liste pour supprimer ceux qu'on n'a pas reçu dans le $_POST, faire des INSERT pour ceux qui n'y sont pas, et mettre à jour tous les autres...
Posté(e)
Petit rappel : pour les checkboxes, on n'a de paramètre "myhb" dans la requête (le $_POST["myhb"]) que lorsque la checkbox était cochée (et le paramètre vaut ce qu'il y avait dans l'attribut "value" de la checkbox). Si tu veux voir "on le voit" il faut bien cocher la checkbox avant de soumettre le formulaire.

Je comprends ce que tu veux dire, mais seulement que ça soit coché ou pas, je n'affiche jamais 'on le voit'...

 

Les deux dans la page avec un classe CSS "Invisible" pour la seconde, classe qu'on changera ou déplacera sur la "première apparence" lors du clic... (le "onclick" de la checkbox pilotera le masquage / affichage des "apparences" différentes)

Je pense comprendre à peu prés le principe, mais ce que je ne comprend pas c'est comment "mémoriser" les infos...

 

Je m'explique par un exemple : je dois afficher de cette façon si un disque présent en BDD :

chec
k
box Periode(menu_deroulant) ... Di
s
que (ce qui donne le chec
k
box coch
é
120 ... nom_du_di
s
que)

s'il n'est pas en base, je ne mets que que le checkbox non coché et le nom du disque.

Donc si je coche, l'apparence sera comme la première façon, je vois comment faire. MEC5Eais comment mémoriser les infos comme le choix du menu déroulant, pour pouvoir l'insérer en base lors du submit???

Posté(e)
Je comprends ce que tu veux dire, mais seulement que ça soit coché ou pas, je n'affiche jamais 'on le voit'...
C'est étrange... Cet extrait de code se trouve bien à un endroit "visible" de la page qui reçoit le formulaire ?

 

Je pense comprendre à peu prés le principe, mais ce que je ne comprend pas c'est comment "mémoriser" les infos...
C'est à dire ? Les infos sont en base, non ? Quand tu as fini les modifs sur le formulaire, elles sont renvoyées avec le reste, même si elles sont visuellement masquées. C'est à toi de tester si la checkbox est cochée et d'ignorer les infos reçues en fonction de... de tes tests !

 

Je m'explique par un exemple : je dois afficher de cette façon si un disque présent en BDD :

chec
k
box Periode(menu_deroulant) ... Di
s
que (ce qui donne le chec
k
box coch
é
120 ... nom_du_di
s
que)

Comme ça ?

jocheckbox1.png

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...