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 :

[Conception] Update records écrasent plusieurs lignes


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut [Conception] Update records écrasent plusieurs lignes
    Bonjour
    Je souhaite mettre à jour des records à partir de php en faisant apparaitre le nom de la société et un nom (contact). j'ai d'abord une page (majmainframe.php) qui utilise une fonction d'édition du nom de la société dans la page majmainframe.php et qui me fait apparaître les champs à mettre à jour qui sont transmis par la méthode post à cli_mainframe.fr. Le problème rencontré est que la mise à jour écrase les lignes commençant par le même nom de société. Exemple

    Si j'ai : FORD (SOCIETE) TOTO (NOM)
    et : FORD (SOCIETE) TITI (NOM)

    j'aurai après la mise à jour du premier enregistrement deux records identiques et l'information du deuxième enregistrement aura disparu.

    FORD TOTO
    FORD TOTO

    Merci de l'aide que vous pouvez m'apporter


    PAGE majmainframe.php =======>>>

    form name="formmf" action="majmainframe.php" method="post">

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
     <div align="center">
    <table border="0" width="30%">
      <tr>
        <td width="100%" colspan="12"><b><font color="#FF0000">Rechercher le client</font></b></td>
      </tr>
      <tr>
       <td width="20%" style="border-style: solid; border-color: #FF0000">
     
                   <?php 
                   lister2(mainframe,SOCIETE,lsociete,10); 
                $requete="select SOCIETE,ADR1,ADR2,VILLE,CP,CIVILITE,NOM,PRENOM,FONCTION,TEL,FAX,EMAIL,DATE,COMMENTAIRES,CC
                        from mainframe where SOCIETE='$lsociete' order by SOCIETE"; 
                  $resultat=mysql_query($requete) or die("requete echouee:<br>".mysql_error());
                $result=mysql_fetch_row($resultat);
                ?>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <input type="submit" value="ok" style="background-color: #0000FF; color: #FFFFFF; font-weight: bold; border: 3 solid #000080; padding-left: 7; padding-right: 7">  
        </td>
      <tr>  
     </form>
    </table>
    </div>
     
     
    <form name="form_cli_mf" action="cli_mainframe.php" method="post">
     
    <table border="0" width="100%" >
      <tr>     
        <td width="100%" align="center" colspan="4"><b>SOCIETE</b></td>
      </tr> 
      <tr>
           <td width="100%" colspan="4"><center><input name="societe" size="120" value="<?php echo "$societe$result[0]"; ?>" onFocus="this.select()"></center></td>
      </tr> 
      <tr>
        <td width="40%" align="center"><b>ADR1</b></td>
        <td width="40%" align="center"><b>ADR2</b></td>
        <td width="15%" align="center"><b>VILLE</b></td>
        <td width="5%" align="center"><b>CP</b></td>
     
      </tr>
      <tr>
          <td width="40%"><center><input name="adr1" size="40" value="<?php echo "$adr1$result[1]"; ?>" onFocus="this.select()"></center></td>
        <td width="40%"><center><input name="adr2" size="40" value="<?php echo "$adr2$result[2]"; ?>" onFocus="this.select()"></center></td>
       <td width="15%"><center><input name="ville" size="40" value="<?php echo "$ville$result[3]"; ?>" onFocus="this.select()"></center></td>
       <td width="5%"><center><input name="cp" size="10" value="<?php echo "$cp$result[4]"; ?>" onFocus="this.select()"></center></td>
      </tr>
      <tr>
          <td width="2%" align="center"><b>CIVILITE</b></td>
        <td width="29%" align="center"><b>NOM</b></td>
        <td width="20%" align="center"><b>PRENOM</b></td>
        <td width="49%" align="center" colspan="2"><b>FONCTION</b></td>
      </tr>
      <tr>  
         <td width="2%"><center><input name="civilite" size="5" value="<?php echo "$civilite$result[5]"; ?>" onFocus="this.select()"></center></td>
        <td width="29%"><center><input name="nom" size="40" value="<?php echo "$nom$result[6]"; ?>" onFocus="this.select()"></center></td>
        <td width="20%"><center><input name="prenom" size="40" value="<?php echo "$prenom$result[7]"; ?>" onFocus="this.select()"></center></td>
        <td width="49%"><center><input name="fonction" size="50" value="<?php echo "$fonction$result[8]"; ?>" onFocus="this.select()"></center></td> 
      </tr>
      <tr>
          <td width="20%" align="center"><b>TEL</b></td>
        <td width="20%" align="center"><b>FAX</b></td>
        <td width="30%" align="center"><b>EMAIL</b></td>
        <td width="30%" align="center" colspan="2"><b>dérnière mise à jour effectuée le:</b></td>
      </tr>
      <tr>
          <td width="20%"><center><input name="tel" size="35" value="<?php echo "$tel$result[9]"; ?>" onFocus="this.select()"></center></td>
        <td width="20%"><center><input name="fax" size="35" value="<?php echo "$fax$result[10]"; ?>" onFocus="this.select()"></center></td>
        <td width="30%"><center><input name="email" size="40" value="<?php echo "$email$result[11]"; ?>" onFocus="this.select()"></center></td>
        <td width="30%"><center><input name="last_modif" size="20" style="border-style: solid; border-color: #FFFFFF" value="<?php echo "$der_date$result[12]"; ?>" onFocus="this.select()"></center></td>
          <?php echo "<input type=\"hidden\" name=\"ste\" value=\"$lsociete\">"; ?>
      </tr>
      <tr>
      <td width="20%" align="center"><b>COMMENTAIRES</b></td>
        <td width="20%" align="center"><b>CODE</b></td>
      </tr>
      <tr>
          <td width="20%"><center><input name="commentaires" size="35" value="<?php echo "$commentaires$result[13]"; ?>" onFocus="this.select()"></center></td>
        <td width="20%"><center><input name="cc" size="35" value="<?php echo "$cc$result[14]"; ?>" onFocus="this.select()"></center></td>
      </tr>
     
     
     
    </table>
    PAGE cli_mainframe.php================>>>

    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
     if ($bouton=="CREER")
    {        
            // insertion du nouvel enreg
            echo "$last_code_cli[0]";
            $requete="INSERT INTO
            mainframe(SOCIETE,CIVILITE,NOM,PRENOM,FONCTION,TEL,EMAIL,FAX,ADR1,ADR2,CP,VILLE,DATE,LOGIN,COMMENTAIRES,CC)
            VALUES('$societe','$civilite','$nom','$prenom','$fonction','$tel','$email','$fax','$adr1','$adr2','$cp','$ville','$date','$login','$commentaires','$cc')";
     
            $verif = mysql_query($requete,$id_connex);
     
            if ($verif)
                {echo "client $nom créé";}
     
            else {echo "Insertion impossible erreur N° ",
                mysql_errno(),mysql_error();}
     
    }        
    else
    {
            // mise à jour de la table clients
     
            $requete="UPDATE mainframe SET SOCIETE='$societe',CIVILITE='$civilite', NOM='$nom', PRENOM='$prenom', FONCTION='$fonction', TEL='$tel',
            EMAIL='$email', FAX='$fax', ADR1='$adr1', ADR2='$adr2', CP='$cp', VILLE='$ville', DATE='$date', LOGIN='$login', COMMENTAIRES='$commentaires', CC='$cc'
            where SOCIETE='$ste'";
            $verif = mysql_query($requete,$id_connex);
     
            if ($verif)
                {echo "client $societe mis à jour";}
            else {echo "Insertion impossible erreur N° ",
                mysql_errno(),mysql_error();}
    }

  2. #2
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Ce qui serait bien ce serait de garder l'ancienne valeur toto ou titi ou encore tata afin de l'inclure dans le where.

    Mais coté construction de la bdd c'est pas top. Ce qu'il aura fallu c'est une tableau contenant tes sociétés, et une autre sur les infos concernant chaque société. Ce qui fait que tu aurais eu que l'id de l'élément à modifier et donc plus de problème d'écrasement.

    Par exemple :
    • Table Société : SOC_ID auto-incrémenté (id de la société) et NOM VARCHAR(255) pour le nom de la société.
    • Table Personne(l) : P_ID auto_inc (id de la personne), SOC_ID faisant référence à la société, et le reste de tes champs

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut Construction de la BDD MYSQL
    Merci de ton retour et de tes commentaires. Tu as raison : la BDD est à revoir.
    Je m'y emploie depuis hier mais ai quelques conseils à te demander pour la mettre en oeuvre dans mysql.
    Je définis une table "SOCIETE" avec ID_SOC clef primaire autoincrémenté et les autres champs (ADRESSE, VILLE, CP, etc)
    Une autre table "PERSONNEL" avec ID_PERS autoincrémenté et sauf erreur CLEF PRIMAIRE, NOM avec VARCHAR(255), ID-SOC. Stp, comment je définis ID-SOC?? clef primaire 2 (non incrémenté) et comment je lis les tables dans MYSQL4 Stp?

  4. #4
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Ce qu'il faudrait faire c'est mettre ID_PERS en PRIMARY KEY comme tu l'as déjà fait et mettre ID-SOC en
    FOREIGN KEY REFERENCES SOCIETE(ID_SOC)
    Histoire du lui dire que si on a pas d'id de société alors on ne peut insérer dans la table personnel (vu qu'elles sont liées)

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 11
    Par défaut Syntaxe Sql
    Merci
    J'ai du mal avec la syntaxe et je peux modifier chez online. J'ai rentré la syntaxe suivante mais ai été jeté :

    ALTER TABLE PERSONNEL
    ADD FOREIGN KEY REFERENCES SOCIETE (ID_SOC) où les tables sont selon ton exemple PERSONNEL et SOCIETE

    http://dev.mysql.com/doc/refman/5.0/...nstraints.html

  6. #6
    Inactif  
    Avatar de Kerod
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    11 672
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 11 672
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     ALTER TABLE PERSONNEL
        ADD FOREIGN KEY (ID-SOC) REFERENCES SOCIETE (ID_SOC)
    Ce que j'avais donné était à inclure dans le code de création de la table

    D'ailleurs si tu veux bien faire les choses il faudrait donner un nom à la contrainte dans le cas d'une probable supression

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

Discussions similaires

  1. sqlloader - import de records sur plusieurs lignes
    Par Vincent_D dans le forum SQL*Loader
    Réponses: 8
    Dernier message: 16/07/2007, 10h55
  2. Réponses: 2
    Dernier message: 09/04/2007, 10h21
  3. Update sur plusieurs lignes
    Par JOUCHET dans le forum Oracle
    Réponses: 1
    Dernier message: 20/05/2006, 18h37
  4. update simultané de plusieur lignes dans table
    Par jarod_bx dans le forum Access
    Réponses: 2
    Dernier message: 22/12/2005, 22h13
  5. Réponses: 2
    Dernier message: 10/05/2005, 18h15

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