Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

confirmation javascript avant execution fonct ion php

4 réponses
Avatar
Laurent
bonjour

j'ai une page php avec des objets affichés par un foreach, avec un lien
"supprimer" sur chacun.
En fait je voudrais avoir une confirmation javascript avant de supprimer
réellement un objet, mais je n'arrive pas à faire le fameux mélange
javascript/php.
Je précise que si je fais MonObjet->delete(), ca fonctionne sans avoir
besoin de poster la page (car via requêtes flux xml).

actuellement j'ai fait une fonction javascript qui, après le confirm,
affecte l'id de l'objet à un champ caché, recrée l'objet avec l'id posté
et le delete, mais j'aimerais pouvoir le faire d'une seule traite...

merci de vos idées
Laurent

4 réponses

Avatar
Olivier Miakinen

j'ai une page php avec des objets affichés par un foreach, avec un lien
"supprimer" sur chacun.


Ok.

En fait je voudrais avoir une confirmation javascript avant de supprimer
réellement un objet, mais je n'arrive pas à faire le fameux mélange
javascript/php.


Si tu veux faire une confirmation JavaScript avant d'appeler la page PHP
qui va faire le delete, tu n'es pas en charte ici : c'est une question
pour fr.comp.lang.javascript. Mais je suppose que tu dois savoir faire ça.

Si maintenant tu veux un aller-retour entre PHP et JavaScript, voire
plusieurs pour chaque objet à détruire, alors c'est un peu plus complexe.

1re page : l'utilisateur choisit ID1, ID3 et ID4 à détruire
-> POST -> PHP
-> 2e page : demande de confirmation effacement ID1, champs cachés ID3
et ID4 pour la suite -> POST -> PHP
-> 3e page : demande de confirmation effacement ID3, champ cachés ID4
pour la suite -> POST -> PHP
-> 4e page : demande de confirmation effacement ID4 -> POST -> PHP
-> page finale

Note que les 2e, 3e et 4e pages sont similaires, et seront donc générées
par un seul et même script PHP, alors que la 1re page est différente, et
probablement la page finale aussi. Si ton architecture te fait des nœuds
au cerveau, commence donc par en faire trois scripts PHP *vraiment*
distincts, il sera toujours temps après de les rassembler en un seul si
tu veux limiter le nombre de fichiers sources.

Au passage, la solution ci-dessus fonctionne sans JavaScript, chaque
confirmation se faisant par exemple par le choix entre deux boutons de
submit, un appelé OK et l'autre ANNULER.

Je précise que si je fais MonObjet->delete(), ca fonctionne sans avoir
besoin de poster la page (car via requêtes flux xml).


Tu veux dire que tu utilises XmlHttpRequest pour faire les requètes de
destruction ? Si oui, c'est un problème purement JavaScript. Voir dans
le groupe fr.comp.lang.javascript.

actuellement j'ai fait une fonction javascript qui, après le confirm,
affecte l'id de l'objet à un champ caché, recrée l'objet avec l'id posté
et le delete, mais j'aimerais pouvoir le faire d'une seule traite...


Je ne comprends pas. L'objet à détruire, c'est un objet JavaScript, pour
que celui-ci puisse le créer lui-même ? Cf. remarque ci-dessus.

merci de vos idées


Merci d'expliquer un peu mieux.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)

Avatar
Laurent
Olivier Miakinen wrote:



En fait je voudrais avoir une confirmation javascript avant de supprimer
réellement un objet, mais je n'arrive pas à faire le fameux mélange
javascript/php.



Si tu veux faire une confirmation JavaScript avant d'appeler la page PHP
qui va faire le delete, tu n'es pas en charte ici : c'est une question
pour fr.comp.lang.javascript. Mais je suppose que tu dois savoir faire ça.


oui je sais :) mais je ne veux pas appeler de page delete.php, je veux
appeler une fonction dans la même page.


Si maintenant tu veux un aller-retour entre PHP et JavaScript, voire
plusieurs pour chaque objet à détruire, alors c'est un peu plus complexe.

1re page : l'utilisateur choisit ID1, ID3 et ID4 à détruire
[...]


non, je ne veux pas d'aller-retour, je voudrais juste une confirm
javascript avant d'appeler la fonction, du genre <a href="#"
onClick="javascript:if confirm("sur ?") {mafonction.php}">



Je précise que si je fais MonObjet->delete(), ca fonctionne sans avoir
besoin de poster la page (car via requêtes flux xml).



Tu veux dire que tu utilises XmlHttpRequest pour faire les requètes de
destruction ? Si oui, c'est un problème purement JavaScript. Voir dans
le groupe fr.comp.lang.javascript.


oui exactement. Tu penses que c'est un pb purement javascript ?



actuellement j'ai fait une fonction javascript qui, après le confirm,
affecte l'id de l'objet à un champ caché, recrée l'objet avec l'id posté
et le delete, mais j'aimerais pouvoir le faire d'une seule traite...



Je ne comprends pas. L'objet à détruire, c'est un objet JavaScript, pour
que celui-ci puisse le créer lui-même ? Cf. remarque ci-dessus.



non, c'est un objet normal, mais actuellement au lieu de faire
Objet123->delete() je fais un Objet123 = new Objet($_POST[id]) puis
Objet123->delete();


merci de vos idées



Merci d'expliquer un peu mieux.



J'espère que c'est un peu plus clair...


Avatar
Olivier Miakinen

Si tu veux faire une confirmation JavaScript avant d'appeler la page PHP
qui va faire le delete, tu n'es pas en charte ici : c'est une question
pour fr.comp.lang.javascript. Mais je suppose que tu dois savoir faire ça.


oui je sais :) mais je ne veux pas appeler de page delete.php, je veux
appeler une fonction dans la même page.


Alors c'est du Javascript. Lorsque la page HTML est affichée, PHP a fini
de bosser depuis longtemps ; tu ne peux refaire un traitement PHP qu'en
appelant un nouveau script (ou une nouvelle invocation du même script,
mais bon, tu repars de zéro pour PHP).

non, je ne veux pas d'aller-retour, je voudrais juste une confirm
javascript avant d'appeler la fonction, du genre <a href="#"
onClick="javascript:if confirm("sur ?") {mafonction.php}">


C'est bien évidemment impossible.

Lis <http://faqfclphp.free.fr/#rub2.3>, en particulier la « remarque
importante car à la source de nombreuses confusions ». Quand tu l'auras
lue, relis-là encore une fois pour être sûr d'avoir bien compris. Et si
après cela tu te demandes encore comment appeler une *fonction* PHP à
partir de Javascript, c'est que tu dois la relire encore.

Tu veux dire que tu utilises XmlHttpRequest pour faire les requètes de
destruction ? Si oui, c'est un problème purement JavaScript. Voir dans
le groupe fr.comp.lang.javascript.


oui exactement. Tu penses que c'est un pb purement javascript ?


Oui. Note qu'avec XmlHttpRequest tu peux refaire une requête HTTP qui va
lancer un nouveau script PHP, mais le script PHP qui t'a généré le code
initial n'existe plus.

Je ne comprends pas. L'objet à détruire, c'est un objet JavaScript, pour
que celui-ci puisse le créer lui-même ? Cf. remarque ci-dessus.


non, c'est un objet normal, mais actuellement au lieu de faire
Objet123->delete() je fais un Objet123 = new Objet($_POST[id]) puis
Objet123->delete();


Voir <http://faqfclphp.free.fr/#rub2.3>, comme ci-dessus.

J'espère que c'est un peu plus clair...


C'est très clair maintenant. J'espère que ça l'est pour toi aussi.

--
Olivier Miakinen
Troll du plus sage chez les conviviaux : le nouveau venu, avec
son clan, s'infiltre dans les groupes de nouvelles. (3 c.)


Avatar
Laurent
Olivier Miakinen wrote:

Alors c'est du Javascript. Lorsque la page HTML est affichée, PHP a fini
de bosser depuis longtemps ; tu ne peux refaire un traitement PHP qu'en
appelant un nouveau script (ou une nouvelle invocation du même script,
mais bon, tu repars de zéro pour PHP).



hum mais oui, pffft. je me suis embrouillé la tête pour rien, en fait.




C'est très clair maintenant. J'espère que ça l'est pour toi aussi.



moui, désolé. merci du coup de main :)