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 :

MySQL ajout de champs dans une table [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut MySQL ajout de champs dans une table
    Bonjour à toutes et à tous,
    J'ai une table avec 175 champs. Tout fonctionne :Ajout, Modification, extraction de données.
    Je souhaite rajouter 60 champs (pour un total de 235) à cette table (15 ensembles de 4 champs : N°, date de création, date d'utilisation, définition) et là j'ai la requête de modification qui ne fonctionne pas
    après de multiples essais (2 jours à m'arracher les cheveux) j'en arrive à me demander s'il y a une nombre maximum de champs dans une table MySQL ?
    Si je rajoute 4 champs (1 ensemble) ça fonctionne, si je rajoute 8 champs (2 ensembles) ça fonctionne, si je rajoute 12 champs (3 ensembles) ça ne fonctionne plus.
    Voici ma requête:
    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
     
    $MonChamp1= strip_tags($_POST['PJ1]);
    /*...*/
    $MonChamp175 = strip_tags($_POST['PJ175']);
    $NouvChampA1 = strip_tags($_POST['PJ176']);	
    $NouvChampB1 = strip_tags($_POST['PJ177']);
    $NouvChampC1 = strip_tags($_POST['PJ178']);
    //...
    $NouvChampA2 = strip_tags($_POST['PJ191']);	
    $NouvChampB2 = strip_tags($_POST['PJ192']);
    $NouvChampC2 = strip_tags($_POST['PJ193']);
    //...
    $NouvChampA3 = strip_tags($_POST['PJ206']);	
    $NouvChampB3 = strip_tags($_POST['PJ207']);
    $NouvChampC3 = strip_tags($_POST['PJ208']);
    //...
    $NouvChampA4 = strip_tags($_POST['PJ221']);	
    $NouvChampB4 = strip_tags($_POST['PJ222']);
    $NouvChampC4 = strip_tags($_POST['PJ223']);
    //...
    // pour vérifier la récup des données j'affiche
    echo '<br />'.'Blabla : ' . $MonChamp1;
    ...
    echo '<br />'.'Blabla : ' . $MonChamp175;
     
    echo '<br />';
    echo '<br />'.'Blabla  : ' . $NouvChampA1;
    echo '<br />'.'Blabla  : ' . $NouvChampB1;
    echo '<br />'.'Blabla  : ' . $NouvChampC1;
     
    echo '<br />';
    echo '<br />'.'Blabla  : ' . $NouvChampA2;
    echo '<br />'.'Blabla  : ' . $NouvChampB2;
    echo '<br />'.'Blabla  : ' . $NouvChampC2;
     
    echo '<br />';
    echo '<br />'.'Blabla  : ' . $NouvChampA3;
    echo '<br />'.'Blabla  : ' . $NouvChampB3;
    echo '<br />'.'Blabla  : ' . $NouvChampC3;
     
    echo '<br />';
    echo '<br />'.'Blabla  : ' . $NouvChampA4;
    echo '<br />'.'Blabla  : ' . $NouvChampB4;
    echo '<br />'.'Blabla  : ' . $NouvChampC4;
     
    //-----------------------------------------------------
    // Informations pour la connexion à la base de données 
    //-----------------------------------------------------
    $nom_du_serveur  = "mysql:host=localhost;dbname=MaBase";
    $nom_utilisateur = "MonNom";
    $mot_de_passe    = "MonPsd";
     
    			$options         = array(
    				PDO::MYSQL_ATTR_INIT_COMMAND => "set names utf8",
    				PDO::ATTR_CASE               => PDO::CASE_LOWER,
    			);
     
    // Si tout va bien, on peut continuer
    //---------------------------------------
    // Connexion au Serveur en utilisant PDO 
    //---------------------------------------
    try
    {
       $link = new PDO($nom_du_serveur, $nom_utilisateur, $mot_de_passe, $options); // Instanciation de l'objet PDO (notre connexion)
       echo '<br />'.'Juste après la connexion au serveur';
    }
    catch (Exception $e) 
    {
       echo "Connexion à MySql impossible : ", $e->getMessage();
       die();    // En cas d'erreur, on affiche un message et on arrête tout
    }
     
    try
    {
     
       echo '<br />'.'Juste avant la requête préparée';
    // Utilisation d'une requête préparée
    $update = $link->prepare('UPDATE matable SET 
    MonChamp1 = :MonChamp1, ... MonChamp175 = :MonChamp175, 
    NouvChampA1 = :NouvChampA1, NouvChampA2 = :NouvChampA2, NouvChampA3 = :NouvChampA3, , NouvChampA4 = :NouvChampA4, 
    NouvChampB1 = :NouvChampB1, NouvChampB2 = :NouvChampB2, NouvChampB3 = :NouvChampB3,  NouvChampB4 = :NouvChampB4, 
    NouvChampC1 = :NouvChampC1, NouvChampC2 = :NouvChampC2, NouvChampC3 = :NouvChampC3, , NouvChampC4 = :NouvChampC4 
    WHERE id = :id');
     
    $update->bindParam('MonChamp1 ', $MonChamp1 );
    ...
    $update->bindParam('MonChamp175 ', $MonChamp175 );
    $update->bindParam('NouvChampA1', $NouvChampA1);
    $update->bindParam('NouvChampA2', $NouvChampA2);
    $update->bindParam('NouvChampA3', $NouvChampA3);
    $update->bindParam('NouvChampA4', $NouvChampA4);
    $update->bindParam('NouvChampB1', $NouvChampB1);
    $update->bindParam('NouvChampB2', $NouvChampB2);
    $update->bindParam('NouvChampB3', $NouvChampB3);
    $update->bindParam('NouvChampB4', $NouvChampB4);
    $update->bindParam('NouvChampC1', $NouvChampC1);
    $update->bindParam('NouvChampC2', $NouvChampC2);
    $update->bindParam('NouvChampC3', $NouvChampC3);
    $update->bindParam('NouvChampC4', $NouvChampC4);
     
    echo '<br />'.'Juste avant exécution de la requête préparée';
    $update ->execute();
    echo '<br />'.'Juste après exécution de la requête préparée';
    return($update->errorInfo());
    }
    catch ( Exception $e )
    {
    				$link->rollback();
    				echo "Une erreur est survenue dans la requête UPDATE : ", $e->getMessage();
    				die();
    }		
    $update->closeCursor();
     
    $link = null;	// et maintenant, je ferme la connexion PDO
    Je n'ai pas d'erreur affichée par le gestionnaire, mon affichage de contrôle affiche bien le contenu de mes input mais :
    la table ne se met pas à jour.
    Si je supprime le 3ème ensemble (NouvChampC1 à C4) elle se met à jour ???
    Pouvez-vous m'aider?
    merci

  2. #2
    Membre expérimenté
    Inscrit en
    Août 2006
    Messages
    191
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 191
    Par défaut
    Salut,

    J'ai peur de comprendre ton problème mais ça me parait bizarre.

    Tu veux ajouter des colonnes à ta table ou des lignes ?

    souhaites tu le faire de façon dynamique ?

    et si tu as répondu colonnes puis oui aux 2 questions précédentes peux tu nous décrire ton besoin car je pense que tu n'as pas choisi la meilleur des solutions ?

  3. #3
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut
    Tu veux ajouter des colonnes à ta table ou des lignes ?
    Les besoins ayant évolué je dois rajouter des colonnes.
    souhaites tu le faire de façon dynamique ?
    Non, j'ai modifié la table sans problème. Mais c'est lors de la modification des lignes existantes pour les compléter que ce que j'ai décrit se produit (ou plutôt ne se produit pas )
    C'est pour cela que j'en suis venu, à fin de test, à supprimer ces ajouts fait en bloc pour les remettre un par un. Au troisième ça ne met plus à jour.
    Je me demande donc s'il y a un nombre de colonnes maximum. 183 ça passe et 187 ça ne passe plus.
    Merci

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Essaie en faisant 2 requêtes, prenant chacune la moitié des colonnes.

  5. #5
    Membre éclairé Avatar de MelkInarian
    Profil pro
    Inscrit en
    Février 2007
    Messages
    260
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 260
    Par défaut 2 requêtes
    2 requêtes: je n'y avais pas pensé mais c'est pareil.
    Je vais faire une table supplémentaire.
    Merci à vous.

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

Discussions similaires

  1. Ajouter des champ dans une table avec une procedure sp
    Par Abdou1 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 26/07/2006, 18h32
  2. Ajout de champ dans une table
    Par captainamerica75 dans le forum Access
    Réponses: 9
    Dernier message: 09/02/2006, 13h47
  3. ajouter un champ dans une table existant
    Par zidenne dans le forum Bases de données
    Réponses: 3
    Dernier message: 29/10/2005, 21h27
  4. Ajouter des CHAMPS dans une table via ASP
    Par hysteresis dans le forum Access
    Réponses: 1
    Dernier message: 27/09/2005, 15h39
  5. Ajouter un champs dans une table (Access 2000)
    Par Didier100 dans le forum Bases de données
    Réponses: 2
    Dernier message: 12/10/2004, 13h02

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