Vous n'êtes pas identifié(e).
Pages :: 1
Bonjour,
Je cherche un moyen de mettre à jour plusieurs champs de ma base de données en même temps… Je m'explique:
J'affiche le contenu d'une table grâce au code suivant:
Tout se passe bien, je récupère correctement les données
Je souhaite, lorsqu'on clique sur le submit, que toutes les values modifiées le soient dans ma base de données.
En d'autres termes, comment écrire "au clic sur le submit, modifie tous les albums correspondants aux idAlbums"?
Merci pour vos réponses ou vos pistes
Hors ligne
Attention ! L'id est fait pour référencer des classes uniques en CSS !
Ce n'est aucunement une information que tu retrouveras à la réception de ton formulaire.
Tu peux cependant faire un truc comme cela :
Et à la réception du formulaire tester toutes les clés du tableau $_POST pour trouver des éléments de la forme "texte_numero".
Ensuite un explode() sur la clé avec le caractère "_" te séparera l'id du reste.
Besoin de plus d'explications ou tu as compris ?
Concernant l'ajout lorsque tu as tes ids le mieux serai de te former un tableau avec l'id de l'album en clé et en valeur le nom de l'album.
Et tu n'as plus qu'à faire une boucle parcourant ton tableau et faisant ta requête UPDATE.
Hors ligne
Merci pour ta réponse rapide, xTG.
Je crois que j'ai globalement compris, mais pour être sûr, si tu veux/peux prendre le temps de donner un peu plus d'explications, elles seront les bienvenues
Notamment sur:
Concernant l'ajout lorsque tu as tes ids le mieux serai de te former un tableau avec l'id de l'album en clé et en valeur le nom de l'album.
Et tu n'as plus qu'à faire une boucle parcourant ton tableau et faisant ta requête UPDATE.
Encore merci.
Hors ligne
Prenons une table Animal (id, nom) et les enregistrements suivants :
1 Chien
2 Chat
3 Zèbre
Nous avons posté notre formulaire afin d'obtenir :
1 Formulaire
2 PHPDébutant
3 arty_pop
Donc avec la méthode que je t'ai proposé tu auras dans $_POST :
array( 'texte_1' => "Formulaire", 'texte_2' => "PHPDébutant", 'texte_3' => "arty_pop");
Ensuite pour la clé on peut l'obtenir soit avec la fonction key() (que je n'apprécie pas trop) ou bien dans une boucle foreach($tableau as $clé => $valeur)
Donc on effectue le explode sur chaque clé et tu obtiens un tableau avec : array( "texte", "id" )
Et encore mieux que ce que j'ai proposé (c'était sur le vif sans trop réfléchir) tu as à ta disposition toutes les informations non ? L'id et la nouvelle valeur.
Donc tu effectue ta requête et le tour est joué.
Hors ligne
Merci.
Mmmh… Donc j'avais bien compris, mais j'ai beaucoup de mal avec foreach($tableau as $clé => $valeur); j'ai du mal à intégrer ce fonctionnement.
J'essaie ça ce soir, je reposte pour dire comment ça c'est passé dès que j'ai avancé
Hors ligne
Bon, j'arrive à un début de quelque chose…
Mon formulaire ressemble à ça:
Je précise que j'ai besoin de l'<input type"hidden">.
un print_r($_POST) me renvoie
Ce qui me pose problème, c'est la remontée de l'<input type="hidden"> ainsi que le submit…
Je peux éventuellement enlever l'attribut name du submit, mais j'ai besoin de mon champ hidden
Y a-t'il moyen de ne pas prendre ces deux input en compte pour la boucle foreach?
Hors ligne
salut,
oui tu test la valeur fournis pour la clef.
en gros si tu a foreach ($tableau as $clef => $valeur) tu test si $clef différent de v et diffèrent de ok (attention se sont des chaines de caractère).
@+
Il en faut peu pour être heureux pompompompompompompompompompompom
Hors ligne
Bonjour,
Alors autant je conçois ce que tu dis, autant je n'arrive pas à le coder
Pourtant, il me semble qu'avec le code suivant ça devrait fonctionner:
Les valeurs attribuées à v et ok remontent toujours…
Une erreur de syntaxe ou bien?
Hors ligne
Bonjour,
J'ai effectivement essayé avec &&, les valeurs non désirées remontaient toujours…
Un print_r($_POST) me renvoyait:
Pour rappel, mon formulaire:
…et ma boucle foreach:
Je ne vois pas ce qui cloche avec le code précédent, peut-être qu'un œil averti…
Quoiqu'il en soit, je viens de faire le test sur $clef autrement:
… Et là ça fonctionne
Ceci dit, si jamais vous voyait pourquoi le premier test ne fonctionne pas, ça m'intéresse fortement!
Hors ligne
Pages :: 1