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 :

Enregistrement MySQL: besoin d'un conseil


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 50
    Par défaut Enregistrement MySQL: besoin d'un conseil
    Bonjour à tous,

    Je n'ai pas de problème, juste besoin d'un conseil !

    J'ai dans ma bdd des tables à ralonge (une vingtaine de champs). Lorsque j'enregistre une nouvelle ligne ou que j'en met une à jour avec PHP, j'ai donc une ligne très longue !

    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mysql_query('INSERT INTO table VALUES("val1", "val2", "val3", "val4"....)');
    Et c'est évidemment la même chose pour les mysql update.

    Cette méthode me pose deux problèmes:
    • les lignes sont longues et donc une source d'erreur
    • très peu pratique lors de l'évolution d'une table


    J'ai donc utilisé à certains moment une autre méthode. Au lieu de mettre la liste exhaustive de mes champs à chaque enregistrement, je donne à mes champs de formulaire (HTML) le même nom que le nom de mes champs en bdd et je fais une boucle pour le mysql_query.

    Ce qui donne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($_POST as $key => $value) {
       mysql_query('UPDATE table SET $key="'.$value.'" WHERE id="1"');
    }
    Ou encore:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($_POST as $value) {
       mysql_query('INSERT INTO table VALUES($value)');
    }
    Cependant je ne suis pas sûr que cette solution soit très "propre" ni performante. J'aurais donc souhaité avoir vos avis, conseils et astuces concernant cette problématique.

    Merci,
    Julien

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 50
    Par défaut
    C'est en écrivant mon post que j'ai finalement pensé à construire ma chaîne en amont pour éviter les requêtes multiples:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $string = '';
     
    foreach($_POST as $key => $value) {
       $string.= $key'="'.$value.'"';
       $string.= ', ';
    }
     
    mysql_query('UPDATE table SET $string WHERE id="1"');
    C'est mieux ?

  3. #3
    Modérateur
    Avatar de grunk
    Homme Profil pro
    Lead dév - Architecte
    Inscrit en
    Août 2003
    Messages
    6 693
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Lead dév - Architecte
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2003
    Messages : 6 693
    Par défaut
    Construire la chaine en amont est une solution, mais attention à ne pas utiliser les données issue de $_POST (ou tout autres sources) directement dans tes requêtes. Tu t'expose sinon au injection sql et tous les problème que cela implique.

    les lignes sont longues et donc une source d'erreur
    Rien ne t'empêche de sauter des lignes dans ta requête pour plus de lisibilité.
    Pry Framework php5 | N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre chevronné
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2009
    Messages
    236
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Octobre 2009
    Messages : 236
    Par défaut
    Une méthode un peu plus avancée est d'utiliser un objet.

    http://hachesse.developpez.com/objetphp/

  5. #5
    Expert confirmé

    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    7 920
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 7 920
    Par défaut
    Citation Envoyé par gwharl Voir le message
    Une méthode un peu plus avancée est d'utiliser un objet.

    http://hachesse.developpez.com/objetphp/
    et de lui refiler un vieux tuto php 4, histoire de prendre de bonnes habitudes...

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2005, 10h12
  2. besoin d'un conseil : système de traduction
    Par Merfolk dans le forum API standards et tierces
    Réponses: 6
    Dernier message: 05/11/2005, 14h10
  3. [iText] besoin d'un conseil
    Par Alec6 dans le forum Documents
    Réponses: 4
    Dernier message: 12/10/2005, 06h56
  4. Game design [Besoin d'aide, conseils....]
    Par poussinphp dans le forum Langage
    Réponses: 23
    Dernier message: 24/09/2005, 09h16
  5. Besoin d'un conseil pour une sélection Access/fichier
    Par Oluha dans le forum Bases de données
    Réponses: 1
    Dernier message: 20/03/2005, 19h10

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