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

Zend_Db PHP Discussion :

Problème d'insertion de données dans ma table


Sujet :

Zend_Db PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut Problème d'insertion de données dans ma table
    Bonjour,

    j'ai un formulaire qui permet de saisir des données afin de les intégrer dans ma base.
    Voilà comment je m'y prends:
    - je récupère les données du formulaire dans un tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach ($this->getElements() as $nom=>$val){
    $tab [$nom] = $val;
    }
    Si je fais un "Zend_Debug;;dump", j'obtiens bien un tableau avec les valeurs saisies dans le formulaire.
    - j'insère les données dans ma table à l'aide de ce tableau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $model = new My_Model_Table();
    $row = $model->createRow ( $tab );
    $row->save();
    Mon problème c'est que l'insertion ne se fait pas et j'obtiens le message d'erreur:
    SQLSTATE[22P02]: Invalid text representation: 7 ERREUR: syntaxe en entrée invalide pour l'entier : « »
    Ce que je ne comprends pas c'est que si je m'y prends autrement pour faire l'insertion, en utilisant la methode "insert":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $model = new My_Model_Table();
    $model->insert ( $tab );
    Ca fonctionne???
    Quelqu'un aurait une idée sur le pourquoi du comment????

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Aucun retour

    Je reformule alors ma question: pour l'insertion de données dans une table de ma base de données, quelle est la différence si j'utilise la méthode "insert" ou "createRow" puis "save" comme ci-dessous:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    $tab = array(...) ; // contient les données à insérer dans ma table
    $myModel =new Model_Table_myTable();
     
    // méthode 1
    $myModel->insert ($tab); 
     
    // méthode 2
    $row = $myModel->createRow ($tab);
    $row->save();
    Dans quel cas l'une ou l'autre ne fonctionne pas???
    Pour ce qui me concerne c'est la méthode 2 qui fonctionne et je ne comprends pas pourquoi la méthode 1 ne fonctionne pas alors que jusqu'ici, c'est toujours avec cette méthode que j'insérais mes données.

    Merci d'avance pour vos retours!

  3. #3
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    avec insert tu récupère l'id de ce qui a été inséré il me semble.
    Dans un cas donc tu travail avec un objet (createRow) et l'autre tu n'as que l'id.

    Par contre createRow tu ne lui passe pas ton tableau d'élément c'est plutot :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $row = $table->createRow();
    $row->element1 = $tab['element1'];
    Et il serait bon de nous mettre le résultat de ton Zend_Debug::dump() plutôt que de dire que ça fonctionne, on pourra mieux juger de ce que tu as récupérer

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Mon zend_debug m'affiche bien les valeurs associés aux champs de mon formulaire sous forme d'un tableau. J'obtiens un résultat du type:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    array(19){
    champ1=>val1,
     champ2=>val2, ...
    }

  5. #5
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    Je veux pas un exemple je veux le résultat complet sinon on ne peut pas voire ce qui peut poser problème.

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Merci 5h4rk pour ton retour.

    J'ai toujours utilisé la méthode createRow en passant mon tableau d'éléments comme dans l'exemple 7 du tuto et l'enregistrement se faisait correctement.
    Voilà comment je m'y prends ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $row = $model->createRow ( $tabDefaultElement );	// $tabDefaultElement est un tableau associatif de la forme array ( "champ1" => "val1", "champ2"=>"val2", ....)
    Zend_Debug::dump($row->toArray());
    $rowUcs->save ();
    Ci-dessous le résultat de mon Zend_Debug::dump($row->toArray()), suivi du message d'erreur:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array(20) { ["id1"] => NULL ["id2"] => string(6) "141616" ["no_etude"] => string(1) "1" ["surface"] => NULL ["nom"] => NULL ["nom_local"] => NULL ["nb"] => string(1) "1" ["organ"] => NULL ["comm"] => NULL ["relief"] => NULL ["domai1"] => NULL ["domai2"] => NULL ["surf"] => NULL ["pays"] => NULL ["min"] => NULL ["max"] => NULL ["mod"] => NULL ["methode"] => NULL ["region"] => NULL ["no_int"] => NULL } SQLSTATE[22P02]: Invalid text representation: 7 ERREUR: syntaxe en entrée invalide pour l'entier : « »
    Voilà j'espère que c'est ce que tu demandais et que tu pourras m'apporter ton aide.

    Merci d'avance...

  7. #7
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    C'est exactement ce que je voulais, donc ce qui te pose problème c'est certainement les NULL du coup dans la requête.

    En effet pour le createRow c'est que je surcharge quasiment tout le temps cette méthode ^^.

    Tu vas surement devoir surcharger soit cette méthode toi aussi soit le save().
    En gros il ne faut pas que tu passe tes NULL à ton objet il me semble, pourrais tu essayer et nous dire ce qu'il en est ?

    EDIT: je ne suis pas sur que cela puisse poser des problèmes mais tu n as pas l'affichage de la requête qui est envoyé ?
    Tu utilise ZFDebug ?

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Comment je pourrais afficher la requête??
    Non, je n'utilise pas ZFDebug, et je ne sais pas s'il a été installé dans mon application

    merci...

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    Si je ne passe pas NULL à mon objet , j'obtiens toujours le meme message d'erreurs.
    Voici le résultat de mon Zend_Debug:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    array(20) { ["id1"] => string(0) "" ["id2"] => string(6) "141616" ["no_etude"] => string(1) "1" ["surface"] => string(0) "" ["nom"] => string(0) "" ["nom_local"] => string(0) "" ["nb"] => string(1) "1" ["organ"] => string(0) "" ["comm"] => string(0) "" ["relief"] => string(0) "" ["domai1"] => string(0) "" ["domai2"] => string(0) "" ["surf"] => string(0) "" ["pays"] => string(0) "" ["min"] => string(0) "" ["max"] => string(0) "" ["mod"] => string(0) "" ["methode"] => string(0) "" ["region"] => string(0) "" ["no_int"] => string(0) "" } SQLSTATE[22P02]: Invalid text representation: 7 ERREUR: syntaxe en entrée invalide pour le type numeric : « »

  10. #10
    Membre éprouvé
    Avatar de 5h4rk
    Homme Profil pro
    CTO at TabMo
    Inscrit en
    Février 2011
    Messages
    813
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : CTO at TabMo
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2011
    Messages : 813
    Points : 1 297
    Points
    1 297
    Par défaut
    J'ai l'impression que ton problème vient en faite que tu passe un string à la place d'un entier ce qui poserait le problème et d'où le message d'erreur.

    Je te conseil d'intégrer ZFDebug c'est pas compliqué et ça te permets d'avoir plus de details sur les erreurs

  11. #11
    Membre régulier
    Profil pro
    Inscrit en
    Février 2011
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 152
    Points : 119
    Points
    119
    Par défaut
    C'est ce que je pensais au début j'ai donc converti mes champs numériques en valuer entières avant de les insérer dans mon tableau mais j'ai toujours un message d'erreur. Je ne vois pas d'ou ca peut venir alors?

    Je vais voir ce que je pux faire avec ZFDebug....

Discussions similaires

  1. [MySQL] problème d'insertion de données dans 3 tables
    Par goldray dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 26/04/2011, 20h07
  2. Réponses: 2
    Dernier message: 18/03/2010, 13h31
  3. [Oracle] problème d'insertion de données dans une table sous oracle
    Par Zombiman dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 27/05/2009, 14h58
  4. problème d'insertion de données dans table
    Par loic20h28 dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 31/01/2008, 17h26
  5. [MySQL] Problème d'insertion de données dans table d'associations
    Par Yukhaa dans le forum PHP & Base de données
    Réponses: 13
    Dernier message: 07/02/2006, 17h10

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