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 :

problème de modification dans base de données [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Par défaut problème de modification dans base de données
    Bonjour,
    je me retrouve face à un problème.
    J'ai crée un formulaire de moidification de ma base de données.
    Pour la modification je me base sur la référence du produit.
    Jusqu'ici tout va bien.
    Mais le problème vient au moment de la modification car j'aimerais que l'utilisateur puisse n'avoir qu'à rentrer un champ à modifier pour que cela se modifie.
    J'entends par là que j'aimerais, s'il souhaite modifier uniquement la date qu'il puisse le faire en entrant dans mon formulaire la nouvelle date. Mais dans mon formulaire il se trouve que je suis obligé de rentrer tous les champs, même ceux que je ne change pas pour que la modification soit effective sur le champs que je veux.
    Comment faire pour ne pas etre obligé de compléter tous les champs pour une modification d'un champs en particulier ? (bien sur, on ne sait pas quel champ l'utilisateur voudra modifier par avance).
    J'espere avoir été clair.
    Merci d'avance

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 4
    Par défaut modify
    je ne suis pas sur d'avoir exactement compris ce que tu souhaites faire, mais si tu veux mettre ç jour une colonne de ta base tu as une possibilité c'est d'initialiser les champs de ton formulaire par les anciennes valeurs, l'utilisateur changera celles qu'il veut. Et toi tu fais un update sur tes données.

  3. #3
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Par défaut
    Citation Envoyé par JulienCaron Voir le message
    je ne suis pas sur d'avoir exactement compris ce que tu souhaites faire, mais si tu veux mettre ç jour une colonne de ta base tu as une possibilité c'est d'initialiser les champs de ton formulaire par les anciennes valeurs, l'utilisateur changera celles qu'il veut. Et toi tu fais un update sur tes données.
    Si tu as compris

    Merci pour l'idée

    donc je vais utiliser value mais il va falloir que je fasse un 'prépost' où l'utilisateur choisira le nom du produit et ensuite j'afficherai dans value les champs de ce produit c'est ça ou il y a plus simple ?

  4. #4
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Salut

    Pour modifier qu'une seule colonne d'une ligne (1 champ d'une ligne), il faudrait à mon sens construire un formulaire qui le permettra, entre autre, créer 1 formulaire par champ, et aussi un bouton submit par champ.

    Un exemple, c'est peut être plus simple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
     
    <table>
    <tr>
        <td>
        <!-- colonne nom -->
        <form name="form_nom" action="maj.php">
            <input type="text" name="valeur" />
            <input type="hidden" name="champ" value="nom" />
            <input type="submit" value="Ok" />
        </form>
        </td>
        <td>
        <!-- colonne prénom -->
        <form name="form_prenom" action="maj.php">
            <input type="text" name="valeur" />
            <input type="hidden" name="champ" value="prenom" />
            <input type="submit" value="Ok" />
        </form>
        </td>
    </tr>
    </table>
    Vu que le champ de saisie porte le même nom (valeur) dans chaque formulaire, de même qu'on y renvoie le nom du champ de la Bdd concernée dans un champ caché (hidden), et bien on a tout ce qu'il faut pour le faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if (isset($_POST['valeur'], $_POST['champ']) && !empty($_POST['valeur']) && !empty($_POST['champ'])) {
        $champ = $_POST['champ'];
        $valeur = $_POST['valeur'];
        $query = "UPDATE table SET ".$champ." = '".$valeur."' WHERE machin = 'truc'";
    }
    En espérant que cela soit plus ou moins ce que tu recherche.

  5. #5
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Par défaut
    Ok ok.
    Bon bah je vais voir si j'arrive à comprendre et à mettre en oeuvre tes explications

    Merci à vous deux, je vous tiens au courant.

  6. #6
    Membre averti
    Inscrit en
    Mai 2010
    Messages
    20
    Détails du profil
    Informations forums :
    Inscription : Mai 2010
    Messages : 20
    Par défaut
    Je n'arrive pas à tout comprendre.
    Peut être que mon niveau ne me le permet pas encore...
    J'ai pensé à autre chose qui pourrait selon moi fonctionner.
    j'ai crée un premier formulaire où la personne saisie le numéro du produit qu'elle souhaite modifier.
    ensuite dans le deuxième je me sers du numéro de produit pour récupérer toutes les valeurs des autres champs de ce produit en faisant

    $noprod=@$_POST['noprod'];


    $req="select $noprod,proddesig,prodprix,qtestock,datemodif,liaison from informatique";


    C'est possible ?

    Ensuite, et ça je narrive pas à le faire. J'aimerais que dans les champs pour compléter mon formulaire il soit inscrit dès le chargement de la page les champs qui sont dans ma bdd en rapport avec ce numéro de produit mais en faisant value cela ne semble pas marcher ( je récupère le proddesig en faisant

    $proddesig=proddesig; (pas sur que ce soit possible )

    et ensuite dans mon formulaire je fais

    <label for="proddesig">Désignation ou nouvelle designation si vous souhaitez la modifier</label><br>
    <input type="text" name="proddesig" id="prod_desig" tabindex="10" value=$proddesig ><br> .

    mais cela ne fonctionne pas.
    Comment faire ? Et surtout est-ce que cela pourrait fonctionner...
    Merci encore.

  7. #7
    Membre Expert Avatar de RunCodePhp
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    2 962
    Détails du profil
    Informations personnelles :
    Localisation : Réunion

    Informations forums :
    Inscription : Janvier 2010
    Messages : 2 962
    Par défaut
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <?php
    if (isset($_POST['noprod']) && !empty($_POST['noprod'])) {
        $noprod = $_POST['noprod'];
     
     
        // Mise à jour du produit
        if (isset($_POST['valeur'], $_POST['champ']) && !empty($_POST['valeur']) && !empty($_POST['champ'])) {
            $champ = $_POST['champ'];
            $valeur = $_POST['valeur'];
            $query = "UPDATE table SET ".$champ." = '".$valeur."' WHERE noprod = '".$noprod."'";
        }
     
        // Récupération des infos du produit
        $query = "SELECT proddesig, prodprix, qtestock, datemodif, liaison WHERE noprod = '".$noprod."'";
        $rs_prod = $mysql_query($query) or die('Erreur : '.mysql_error());
        $produit = mysql_fetch_array($rs_prod);
     
    ?>
    <table>
    <tr>
        <td>
        <!-- colonne prix -->
        <form name="form_nom" action="maj.php" method="post">
            <input type="text" name="valeur" value="<?php echo $produit['prodprix']; ?>" />
            <input type="hidden" name="champ" value="prodprix" />
            <input type="hidden" name="noprod" value="<?php echo $produit['noprod']; ?>" />
            <input type="submit" value="Ok" />
        </form>
        </td>
        <td>
        <!-- colonne qtestock -->
        <form name="form_nom" action="maj.php" method="post">
            <input type="text" name="valeur" value="<?php echo $produit['qtestock']; ?>" />
            <input type="hidden" name="champ" value="qtestock" />
            <input type="hidden" name="noprod" value="<?php echo $produit['noprod']; ?>" />
            <input type="submit" value="Ok" />
        </form>
        </td>
    </tr>
    </table>
     
    <?php
    }
    else {
        // Erreur. Pas de N° de produit
    }
    Il y a tout ce qu'il faut théoriquement.
    - Récupération du N° de produit
    - La mise à jours selon le N° de produit et du champ concerné
    - Affichage des données selon le N° de produit sélectionné à l'étape d'avant.

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

Discussions similaires

  1. [Mapping] Problème méthode recheche dans base de données
    Par Braksius dans le forum Hibernate
    Réponses: 1
    Dernier message: 12/07/2012, 18h24
  2. Réponses: 3
    Dernier message: 04/08/2010, 14h05
  3. Réponses: 0
    Dernier message: 20/07/2010, 20h35
  4. [CKEditor] problème insertion texte dans base de données
    Par exeee dans le forum Bibliothèques & Frameworks
    Réponses: 1
    Dernier message: 22/10/2007, 11h12
  5. Problème d'insertion dans base de donnée
    Par Maestro57 dans le forum Langage
    Réponses: 4
    Dernier message: 11/06/2007, 10h04

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