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 :

Projet PHP : Génération de numéro de Références et Stockage [MySQL]


Sujet :

PHP & Base de données

  1. #21
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Comment on récupère en variable une informations d'une cellule ?
    Une cellule dont on indique son emplacement ?

  2. #22
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Jimmy_S
    Comment on récupère en variable une informations d'une cellule ?
    Une cellule dont on indique son emplacement ?
    Qu'est-ce que tu appelles une cellule ?

  3. #23
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    une cellule de la table !
    Enfin une des allocations quoi :p

    Comment dire : un équivalent à :

    'entity' where id = 1 par exemple. là je prends la valeur entity où id = 1 .

  4. #24
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Jimmy_S
    une cellule de la table !
    Enfin une des allocations quoi :p

    Comment dire : un équivalent à :

    'entity' where id = 1 par exemple. là je prends la valeur entity où id = 1 .
    Je crois plutôt que cellule correspond à un tableau, mais bon...
    Pour ta question, je pense que c'est de la syntaxe sql de base. Il faut donc que tu lises les tutoriels avant de poser ces questions. Celui-ci est excellent : http://sql.developpez.com/

  5. #25
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Pour simplifier , je veux donnez comme valeur à une variable quelquonque , la valeur d'une des données présente ma BDD .
    Tu vois ce que je veux dire ?

  6. #26
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu l'as plus ou moins déjà fait dans ton script au début !

  7. #27
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Ouép mais j'arrive pas à adapter.

    Quelque chose comme ça irait ? :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $Yearbdd = mysql_query("SELECT Year from iso where id = $Edit") or die ("Erreur SQL");
          print '<br>';
          print $Yearbdd;
    Ca me sort ça chez moi :

    Resource id #4

  8. #28
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut

    Est ca c'est quoi ?
    Citation Envoyé par Jimmy_S
    ...
    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
    ...
    while ( $resultat = mysql_fetch_array($req))
    {
       $output .= '<tr>';
     
     
       $output .= '<td><div align="center">'.$resultat['Id'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Year'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Project'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['DocNumber'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Kind'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Entity'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Ref'].'</div></td>';
     
       $output .= '</tr>';
    }
    $output .= '</table>';
    ...
    ...

    Tu n'as plus qu'à faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $concatenation = $resultat['Year'].$resultat['Project']....;

  9. #29
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Oui mais dans ce cas là on recalcule toutes les ref non ? N'est il pas plus léger de coder ça juste à la fin d'une modification et d'update la ref ?

    C'est moins lourd pour la BDD non ?

  10. #30
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Bon on efface tout et on recommence car je m'embrouille, toi aussi et finalement je sais pas si quelqu'un sait ce que tu veux faire....
    Alors, quel est ton problème du moment ?

  11. #31
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Jimmy_S
    Oui mais dans ce cas là on recalcule toutes les ref non ? N'est il pas plus léger de coder ça juste à la fin d'une modification et d'update la ref ?

    C'est moins lourd pour la BDD non ?
    Je me répète, mais tu dois lire les tutoriels car ça c'est vraiment de l'interaction php/mysql de base : une requête n'envoie pas un résultat mais un identifiant de résultat, qu'il faut ensuite utiliser dans une boucle pour obtenir les valeurs dans un array...
    Lis les tutoriels !

  12. #32
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Alors le probleme :

    Quand un user modifie les informations d'une ligne de données, il rentre l'id de la ligne et peut donc modifier tous les éléments.

    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
     
    if (isset($_POST['Edit'])){
     
       if ($_POST['Edit'] != "") {
       print 'Edit Activé';
       $Edit = $_POST['Edit'];
       print ' Le Champ à modifier est :';
       print $Edit;
     
     
     
     
     
            if (isset($_POST['Year'])) {
            if ($_POST['Year'] != "") {
            $Year = $_POST['Year'];
             mysql_query("Update iso Set Year ='$Year' where Id =$Edit ");}}
     
            if (isset($_POST['Project'])) {
            if ($_POST['Project'] != "") {
            $Project = $_POST['Project'];
             mysql_query("Update iso Set Project ='$Project' where Id =$Edit ");}}
     
            if (isset($_POST['DocNumber'])) {
            if ($_POST['DocNumber'] != "") {
            $DocNumber = $_POST['DocNumber'];
             mysql_query("Update iso Set DocNumber ='$DocNumber' where Id =$Edit ");}}
     
            if (isset($_POST['Entity'])) {
            if ($_POST['Entity'] != "") {
            $Entity = $_POST['Entity'];
             mysql_query("Update iso Set Entity ='$Entity' where Id =$Edit ");}}
     
            if (isset($_POST['Kind'])) {
            if ($_POST['Kind'] != "") {
            $Kind = $_POST['Kind'];
             mysql_query("Update iso Set Kind ='$Kind' where Id =$Edit ");}}
     
    }}
    A la fin de ce code , il faut donc regénérer la référence (Ref) de la ligne qu'il a modifié . Par conséquent il faut récupérer toutes les données de la bdd , générer la nouvelle Ref et faire écraser l'ancienne.
    On ne peut la générér via une concaténation des saisie clavier dans la formulaire car, l'user n'est pas obligé de changer tous les champs.

    Exemple : Il modifie 'Year' dans la ligne 3 (id = 3) , alors la référence de cette ligne 3 dans la BDD devra être regénéré !

    Si je lis la réponse d'audessus , je suis obligé de regénérer toutes les Référence dans un While ? Comme j'ai fait pour l'affichage du tableau ? N'y a t'il pas plus léger ?

  13. #33
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    alors :
    1. tu récupère les données du formulaires (id & cie), ca tu sais faire
    2. tu récupère les données correspondant à l'id, suit les tutoriels comme te l'a suggéré si justement vg33; Cadeau : http://php.developpez.com/cours/
    3. Tu construit ta nouvelle référence en prenant les données de (2.) + celles du user (1.)
    4. Tu fais la mise à jour de la BD avec un joli update en prenant (1.) + (3.)

    Et c'est fini...

  14. #34
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Bon, quelques remarques puisque tu ne veux pas lire les tutoriels
    1) Dans ton script, si tu as 5 données à modifier, tu fais 5 requêtes, alors qu'une seule suffit quel que soit le nombre de données.
    2) Ton identifiant ne change pas à chaque requête ! Heureusement, sinon il serait impossible de le retrouver ! MySql va sûrement modifier l'emplacement où sera enregistré ta ligne (pour faire simple), mais ça, ça ne te concerne pas, puisque tu lui demanderas toujours le même identifiant qui permet justement de retrouver un enregistrement unique.
    Tu fais peut être l'erreur à cause de l'AUTO INCREMENT. Cette fonctionnalité ne fonctionne que lors d'un INSERT, heureusement pas lors d'un UPDATE, d'un SELECT ou encore d'un ALTER TABLE...

  15. #35
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    J'ai fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while ( $resultat = mysql_fetch_array($req))
    				{
     
    	 			$Kindd = "-".$resultat['Kind'];
    	 			$RefNew = $resultat['Entity'].$resultat['Project'].$Kindd.$resultat['DocNumber'];
    	 			mysql_query("Update iso Set Ref ='$RefNew");}

  16. #36
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Je mets tout le code :

    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
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
     
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
     
    <head>
      <title>Hello!</title>
    </head>
     
    <body>
    <br><A HREF="ajout.php">Accéder à la page d'ajout de nouvelles données</A><br><br>
    <form method="POST" action="modif2.php">
    <b> Entrez l'ID de la Ligne à Modifier :</b><br>
    <input type="text" name="Edit"><br><br>
    Year :<br>
    <input type="text" name="Year"><br><br>
    Project :    <br>  
    <input type="text" name="Project"><br><br>
    Document Number :<br>
    <input type="text" name="DocNumber"><br><br>
     
    Kind :<br>
    <input type="text" name="Kind"><br><br>
     
    Entity :<br>
    <input type="text" name="Entity"><br><br>
     
     
    <input type="submit" name="submit" value="Modifier">
    <i>Ne rentrez que les valeurs à modifier..</i>
     
     
     
     
     
     
     
    <?
     
    $db = mysql_connect('localhost','root','root') or die ("Erreur de connexion");
    mysql_select_db('mysql',$db) or die ("erreur de connexion base");
     
    $req = mysql_query("SELECT Id,Year,Project,DocNumber,Entity,Kind,Ref from iso") or die ("Erreur SQL");
     
     
     
     
    if (isset($_POST['Edit'])){
     
       if ($_POST['Edit'] != "") {
       print 'Edit Activé';
       $Edit = $_POST['Edit'];
       print ' Le Champ à modifier est :';
       print $Edit;
     
     
     
     
     
            if (isset($_POST['Year'])) {
            if ($_POST['Year'] != "") {
            $Year = $_POST['Year'];
             mysql_query("Update iso Set Year ='$Year' where Id =$Edit ");}}
     
            if (isset($_POST['Project'])) {
            if ($_POST['Project'] != "") {
            $Project = $_POST['Project'];
             mysql_query("Update iso Set Project ='$Project' where Id =$Edit ");}}
     
            if (isset($_POST['DocNumber'])) {
            if ($_POST['DocNumber'] != "") {
            $DocNumber = $_POST['DocNumber'];
             mysql_query("Update iso Set DocNumber ='$DocNumber' where Id =$Edit ");}}
     
            if (isset($_POST['Entity'])) {
            if ($_POST['Entity'] != "") {
            $Entity = $_POST['Entity'];
             mysql_query("Update iso Set Entity ='$Entity' where Id =$Edit ");}}
     
            if (isset($_POST['Kind'])) {
            if ($_POST['Kind'] != "") {
            $Kind = $_POST['Kind'];
             mysql_query("Update iso Set Kind ='$Kind' where Id =$Edit ");}}
     
     
     
     
     
       }}
     
     
    [quote]
    while ( $resultat = mysql_fetch_array($req))
    				{
     
    	 			$Kindd = "-".$resultat['Kind'];
    	 			$RefNew = $resultat['Entity'].$resultat['Project'].$Kindd.$resultat['DocNumber'];
    	 			mysql_query("Update iso Set Ref ='$RefNew'");}[/quote]
     
     
    print'<br><br><br>';
     
     
     
     
    $output = '<TABLE BORDER=5 BORDERCOLOR="blue">';
       $output .= '<tr>';
       $output .= '<td><div align="center"></div>  <b>Id</b>  </td>';
       $output .= '<td><div align="center"></div>  <b>Year</b>  </td>';
       $output .= '<td><div align="center"></div>  <b>Project</b>  </td>';
       $output .= '<td><div align="center"></div>  <b>DocNumber</b>  </td>';
       $output .= '<td><div align="center"></div>  <b>Kind</b>  </td>';
       $output .= '<td><div align="center"></div>  <b>Entity</b>  </td>';
       $output .= '<td><div align="center"></div>  <b>References</b>  </td>';
     
     
     
     
    while ( $resultat = mysql_fetch_array($req))
    {
     
       $output .= '<tr>';
       $output .= '<td><div align="center">'.$resultat['Id'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Year'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Project'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['DocNumber'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Kind'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Entity'].'</div></td>';
       $output .= '<td><div align="center">'.$resultat['Ref'].'</div></td>';
     
       $output .= '</tr>';
    }
    $output .= '</table>';
     
     
    echo $output;
     
     
    ?>
     
     
    </body>
     
    </html>
    Cela ne marche pas , la boucle while ne semble pas marcher et ne pas mettre à jour la BDD.

  17. #37
    Membre expérimenté

    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Janvier 2005
    Messages : 1 278
    Points : 1 639
    Points
    1 639
    Par défaut
    Citation Envoyé par Jimmy_S
    J'ai fait comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    while ( $resultat = mysql_fetch_array($req))
    				{
     
    	 			$Kindd = "-".$resultat['Kind'];
    	 			$RefNew = $resultat['Entity'].$resultat['Project'].$Kindd.$resultat['DocNumber'];
    	 			mysql_query("Update iso Set Ref ='$RefNew");}
    Je comprends mieux : ta réference est constuite avec les différents champs.
    Dans ce cas-là, c'est très simple. Que tu sois en UPDATE ou en INSERT, tu as à ta disposition toutes les données dans tes variables php. Tu modifies donc tout dans la bdd en une seule requête... Je ne vois pas où est le problème.

  18. #38
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    Elles ne sont pas toutes dans le script car :

    L'user n'est pas obligé de rentrer tous les champs à modifier.

    Il peut modifier qu'un seul champs si il le souhaite, donc je ne peux pas faire la concaténation à partir des $_POST , c'est pour cela que je dois générer la Réf via la BDD.

  19. #39
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Tu attaques trop de problème de front. occupe toi déjà de modifier proprement ta bd avant de t'occuper de la gestion des ref...

  20. #40
    Membre régulier Avatar de Jimmy_S
    Inscrit en
    Octobre 2005
    Messages
    214
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 214
    Points : 85
    Points
    85
    Par défaut
    while ( $resultat = mysql_fetch_array($req))
    {

    $Kindd = "-".$resultat['Kind'];
    $RefNew = $resultat['Entity'].$resultat['Project'].$Kindd.$resultat['DocNumber'];
    mysql_query("Update iso Set Ref ='$RefNew'");


    $output .= '<tr>';
    $output .= '<td><div align="center">'.$resultat['Id'].'</div></td>';
    $output .= '<td><div align="center">'.$resultat['Year'].'</div></td>';
    $output .= '<td><div align="center">'.$resultat['Project'].'</div></td>';
    $output .= '<td><div align="center">'.$resultat['DocNumber'].'</div></td>';
    $output .= '<td><div align="center">'.$resultat['Kind'].'</div></td>';
    $output .= '<td><div align="center">'.$resultat['Entity'].'</div></td>';
    $output .= '<td><div align="center">'.$resultat['Ref'].'</div></td>';

    $output .= '</tr>';
    }
    $output .= '</table>';


    echo $output;
    J'essaye comme ceci , et toutes les références ont pris la valeur de la dernière référence ajouter sur la page ajout.php

+ Répondre à la discussion
Cette discussion est résolue.
Page 2 sur 7 PremièrePremière 123456 ... DernièreDernière

Discussions similaires

  1. [PHP-JS] Préformatage numéro de téléphone
    Par ChrisColumbus dans le forum Langage
    Réponses: 4
    Dernier message: 21/11/2006, 13h08
  2. Afficher le label dans une bibliographie à la place du numéro de référence
    Par nocoment dans le forum Bibliographies - Index - Glossaires
    Réponses: 1
    Dernier message: 21/09/2006, 16h31
  3. Projet PHP
    Par Nacros dans le forum XMLRAD
    Réponses: 9
    Dernier message: 09/04/2006, 14h46
  4. Génération de numéro de série
    Par shadeoner dans le forum Algorithmes et structures de données
    Réponses: 10
    Dernier message: 06/04/2005, 14h25

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