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. #41
    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
    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.
    Justement, le plus simple à mon avis est de lui proposer tous les champs à modifier, préremplis avec le contenu de la bdd. L'user ne change que ce qu'il veut, mais toutes les données sont transmises. Ensuite, tu n'as plus qu'à valider ces données, générer ton Ref, et faire un joli UPDATE global du tout. Tu comprends ?

  2. #42
    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 vois , mais on m'impose dans le cahier des charges un refresh Références à chaque ouverture de pages , car certains users sont censé modifier directement dans la BDD .

    C'est ici que ça coince :

    mysql_query("Update iso Set Ref ='$RefNew' ");

    dans
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    while ( $resultat = mysql_fetch_array($req))
    {
     
    	 $Kindd = "-".$resultat['Kind'];
    	 $RefNew = $resultat['Entity'].$resultat['Project'].$Kindd.$resultat['DocNumber'];
    	 print $RefNew;
    	 mysql_query("Update iso Set Ref ='$RefNew' ");}
    Je pense que c'est un petit truc , mais je ne vois pas ^^

  3. #43
    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
    Et en plus, c'est plus simple pour l'user. Plutôt que de se dire 'Je dois modifier tel champ de telle référence', ce qui d'ailleurs doit lui prendre au moins 2 clicks, il se dit 'je dois modifier telle référence', ce qui lui prend 1 click. Et ensuite, avec la ligne sous les yeux, il décide de ce qu'il doit changer. C'est quand même beaucoup plus simple !

  4. #44
    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
    Je vois , mais on m'impose dans le cahier des charges un refresh Références à chaque ouverture de pages , car certains users sont censé modifier directement dans la BDD .
    Tu veux dire en passant par PhpMyAdmin ? Ils sont fous ? Tu n'auras aucune validation des données !

  5. #45
    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 sais que c'est plus simple mais je dois le faire comme ça ^^

    J'aimerai bien faire ta méthode mais je n'ai point le droit !




    Donc bref si tu as ma solution dit le moi .

  6. #46
    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
    Tu ne peux pas raisonnablement accepter un accès direct à la bdd. Tu n'auras aucune certitude sur la validité des données, sur l'absence de doublons, sur la validité de Ref, sur la présence de tous les champs, sur l'absence de données dangereuses...
    Ou alors, tu dois valider toutes les extractions avant de les utiliser. Et alors, bonjour le travail et la lourdeur du script !

  7. #47
    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
    Ne te cantonne pas sur ce probleme , deux autres admin systèmes vont faire ça, aucun soucis de ce côté là .

    Maintenant essaye de m'aider sur la ligne défaillante de mon code :

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

    On ne peut faire un update sans where ? Quesque j'ai comme alternative ?

  8. #48
    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
    Citation Envoyé par vg33
    Tu ne peux pas raisonnablement accepter un accès direct à la bdd. Tu n'auras aucune certitude sur la validité des données, sur l'absence de doublons, sur la validité de Ref, sur la présence de tous les champs, sur l'absence de données dangereuses...
    Ou alors, tu dois valider toutes les extractions avant de les utiliser. Et alors, bonjour le travail et la lourdeur du script !
    +1

  9. #49
    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
    Ne te cantonne pas sur ce probleme , deux autres admin systèmes vont faire ça, aucun soucis de ce côté là .

    Maintenant essaye de m'aider sur la ligne défaillante de mon code :

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

    On ne peut faire un update sans where ? Quesque j'ai comme alternative ?
    Bien entendu ! Il faut que tu lui donnes l'identifiant de la ligne à modifier, sinon, il ne sait pas quelle ligne modifier :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE iso SET Ref ='$RefNew' WHERE id='$ton_id'");

  10. #50
    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
    Citation Envoyé par Jimmy_S
    On ne peut faire un update sans where ?
    As-tu lu la doc, les tutos ?
    - non => et bien jette un oeil car la réponse est dedans
    - oui => et bien rejette un oeil car la réponse est dedans

    Citation Envoyé par Jimmy_S
    J'veux apprendre ^^ [...] On ne court pas avant de savoir marcher !
    C'étaient des paroles en l'air ?

  11. #51
    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
    La question n'est vraiment pas là ^^

    Puis je Update la BDD dans une fonction While ?
    Ou quelle serait la méthode adaptée ?


    Citation Envoyé par vg33
    Citation Envoyé par Jimmy_S
    Ne te cantonne pas sur ce probleme , deux autres admin systèmes vont faire ça, aucun soucis de ce côté là .

    Maintenant essaye de m'aider sur la ligne défaillante de mon code :

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

    On ne peut faire un update sans where ? Quesque j'ai comme alternative ?
    Bien entendu ! Il faut que tu lui donnes l'identifiant de la ligne à modifier, sinon, il ne sait pas quelle ligne modifier :


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query("UPDATE iso SET Ref ='$RefNew' WHERE id='$ton_id'");
    Il n'y aurait pas une équivalence à l'Update fonctionnant sans WHERE mais uniquement par la boucle ?

    En C ça aurait donné un truc du genre :

    for (int i = 0;i<i = longueurbdd;i++){

    tabref[i] = concaténation etc.}

  12. #52
    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 Mr N.
    Citation Envoyé par Jimmy_S
    On ne peut faire un update sans where ?
    As-tu lu la doc, les tutos ?
    - non => et bien jette un oeil car la réponse est dedans
    - oui => et bien rejette un oeil car la réponse est dedans

    Citation Envoyé par Jimmy_S
    J'veux apprendre ^^ [...] On ne court pas avant de savoir marcher !
    C'étaient des paroles en l'air ?
    +1

  13. #53
    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
    La question n'est vraiment pas là ^^
    A qui réponds-tu ?

  14. #54
    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
    Ca fait deux heures que je me casse la tête pour trouver une fonction qui pourrait faire ce que je souhaite et je ne trouve pas. Je ne fais que ça de lire des tutos , mais là j'ai besoin d'un petit truc dont je n'arrive pas à saisir le concept et la manière de procéder.

  15. #55
    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
    Il n'y aurait pas une équivalence à l'Update fonctionnant sans WHERE mais uniquement par la boucle ?
    Php et MySql sont deux programmes entièrement indépendants. Ils dialoguent par l'intermédiaire des fonctions php et des réponses MySql. Donc, si tu n'indiques pas à MySql la ligne qu'il doit modifier, il ne va pas la deviner, même si tu es dans une boucle php. MySql ne peut interpréter que les instructions sql données dans la fonction mysql_query. Tout ce qui n'est pas transmis dans cette fonction est inconnu de MySql.
    J'en reviens à ton problème : si tu ne dis pas à MySql l'id de la ligne à modifier (clause WHERE), il ne le devinera pas tout seul.

  16. #56
    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
    Ok parfait , merci

    (En passant, je ne trouve pas ça très logique qu'on puisse avec le while afficher toutes les données Id par Id, alors qu'on ne peut pas les écrire )

    Bref !

    Alors comment mettre en oeuvre ta méthode .

    Je me pose pas mal de questions sur le code qui permet d'afficher les champs déja remplies des valeurs de la BDD dont l'id aurait été rentré précédemment par l'user

    Ca ressemble à quoi ça monsieur ?

  17. #57
    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
    Citation Envoyé par vg33
    J'en reviens à ton problème : si tu ne dis pas à MySql l'id de la ligne à modifier (clause WHERE), il ne le devinera pas tout seul.
    ...et donc il appliquera la modification sur toutes les lignes de la table.

  18. #58
    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 j'ai compris Donc pour conclure il n'ya pas de solutions comme je l'entendais quelques posts plus haut ^^. Et dire qu'en C c'est parfaitement réalisable

    Bref m'sieur =), j'suis tout ouie face à la syntaxe de votre méthode

  19. #59
    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
    Je me pose pas mal de questions sur le code qui permet d'afficher les champs déja remplies des valeurs de la BDD dont l'id aurait été rentré précédemment par l'user

    Ca ressemble à quoi ça monsieur ?
    1) Tu récupères dans ta bdd les données associées à l'id (SELECT).
    2) En affichant ton formulaire la première fois, tu affectes à value, checked ou selected les valeurs récupérées.
    3) En cas d'erreur, tu affectes cette fois-ci les données provenant du POST ou du GET au formulaire.
    Est-ce clair ?

  20. #60
    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
    Ca ressemble à quoi ça monsieur ?
    Au passage, qu'en sais-tu si je suis un monsieur ? Ou est-ce une (simili) formule de politesse ?

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

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