IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PHP & Base de données Discussion :

Modification de champ [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut Modification de champ
    Bonjour,

    Je débutes en PHP & MySQL et mon premier projet a été de créer une lettre d'invitation sous forme de site web codé en PHP. Le principe est relativement simple: les invités recevront le lien de ce site par e-mail et iront, grâce à une interface déjà créée, s'inscrire en y déposant leur nom et un commentaire court de leur choix. Jusque là, tout va bien. J'ai réussi à enregistrer ces données dans une base MySQL et les afficher dans une interface "sécurisée" d'administration sous forme de tableau de trois colonnes: id (auto_increment), nom (entré par l'utilisateur) et commentaires (aussi entré par l'utilisateur).

    Mon problème concerne la dernière colonne, commentaire, j'affiche déjà mes données dans un champ de texte sauf que je souhaiterais pouvoir modifier à ma guise ces commentaires en modifiant le contenu de ce champ texte et en validant le formulaire (enregistrer). C'est à ce moment que je bloque... y a-t-il une manière de récupérer les données contenues dans ces champs textes (qui ont tous le même name= car il ne s'agit que d'une ligne de tableau répétée par fetch()) et d'appliquer les modifications à ma base ?

    Dans le fond, ce que je souhaites savoir, c'est comment récupérer un à un les ID et appliquer les modifications à leur champ "commentaire" respectifs.

    Si quelqu'un pouvait me donner des indications en ce sens, me dire qu'elle fonction utiliser car là, j'ai eu beau faire des recherches, je ne savais même pas quels mots clé donner à Google.

    Merci d'avance.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Au lieu de leur donner tous le meme name, indexe un nom avec l'id :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '..... name="commentaire[' . $row['id'] . ']" ....';
    Tu recevras tous les commentaires dans le tableau $_POST['commentaire']
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut
    Bonjour sabotage,

    Merci pour ces précisions, et désolé du retard: je n'ai pas eu l'occasion de tester hier.

    J'ai encore de la difficulté à assimiler la notion des tableaux (array) en PHP... j'ai fait une requête, mais elle ne fonctionne pas:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = $bdd->prepare('UPDATE inscriptions SET coms = :coms WHERE id = :id');
    $req->execute(array(
    	'coms' => $_POST[coms],
    	'id' => $row[id]
    	));
    Pouvez-vous m'aider s'il vous plait ?

    P.S.: Voici la ligne de mon champ commentaires:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <td style="vertical-align: top;"><input type="text" value="<?php echo $donnees['coms']; ?>" name="coms[' . $row['id'] . ']" style="width: 250px;" />
    </td>

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    Tout est faux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td style="vertical-align: top;"><input type="text" value="' . $donnees['coms'] . '" name="coms[' . $row['id'] . ']" style="width: 250px;" />':
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $req = $bdd->prepare('UPDATE inscriptions SET coms = :coms WHERE id = :id');
     
    foreach ($_POST['coms'] as $id => $value) {
    $req->execute(array(
    	':coms' => $value,
    	':id' => $id
    	));
    }
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Décembre 2009
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 9
    Par défaut
    Citation Envoyé par sabotage Voir le message
    Tout est faux
    C'est l'histoire ma vie, j'aurais peut-être dû viser moins haut comme premier projet . Enfin, le reste fonctionne c'est déjà ça !

    Juste une chose, c'est normal que j'ai dû additionner 1 à la variable $id ? Car, autrement, à chaque fois que je modifiais un commentaire, ce dernier montait d'une position dans la liste...

    En tout cas, avec ça, ça fonctionne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $req = $bdd->prepare('UPDATE inscriptions SET coms = :coms WHERE id = :id');
     
    foreach ($_POST['coms'] as $id => $value) {
    $req->execute(array(
    	':coms' => $value,
    	':id' => ($id + 1)
    	));
    }

    Merci

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Par défaut
    C'est parce que c'est $donnees, pas $row
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    echo '<td style="vertical-align: top;"><input type="text" value="' . $donnees['coms'] . '" name="coms[' . $donnees['id'] . ']" style="width: 250px;" />':
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 17/06/2006, 18h56
  2. Code si modification sur champ dans formulaire
    Par guiguikawa dans le forum IHM
    Réponses: 1
    Dernier message: 14/06/2006, 15h31
  3. Modification de champ différent selon contrainte
    Par leloup84 dans le forum Requêtes
    Réponses: 11
    Dernier message: 14/03/2006, 14h49
  4. [HTML][INPUT FILE]Empécher la modification du champ
    Par jothi35 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 7
    Dernier message: 06/10/2005, 15h14
  5. [HTML][CSS] modification dans champs de texte
    Par java_fun dans le forum Mise en page CSS
    Réponses: 1
    Dernier message: 21/09/2005, 14h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo