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

SGBD Perl Discussion :

[sgbd] [CGI + MySQL] Insert ne s'effectuant pas


Sujet :

SGBD Perl

  1. #1
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 883
    Par défaut [sgbd] [CGI + MySQL] Insert ne s'effectuant pas
    Bonjour à vous

    Voilà un sacré bout de temps que je me bagarre avec ma base MySQL. Pour vous retracer l'histoire, j'ai créer un petit script Perl qui parse un fichier XML. Le parsing est bon. Des infos récupérées de ce parsing, je veux les stocker dans ma base MySQL. Tout se passe correctement excepté pour une donnée (Arghhh !!!).
    Voici comment je récupère ma données dans mon script et comment je la stocke :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    elsif ($key eq "percent_coverage" and $protein eq 'protein') {
                    $val = $attrs{$key};
                    my($dbh) = DBI->connect("DBI:mysql:database=proteinprophet;host=localhost", 
                            "login", 
                            "password",
                            {'RaiseError' => 1}
                    );
                    my($query) = "update proteine set Coverage='$val' where NomDossier='$NOM' AND NumGroupe='$gn';";
       				 my($sth) = $dbh->do($query);
                }
    Voici la structure de la table en question :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    CREATE TABLE proteine (
      NomDossier varchar(255) NOT NULL default '',
      NumGroupe int(11) NOT NULL default '0',
      AccessNumber varchar(255) NOT NULL default '',
      Probability double NOT NULL default '0',
      Coverage double NOT NULL default '0',
      Unique_stripped_peptide varchar(255) NOT NULL default ''
    ) TYPE=MyISAM;
    Je ne pense pas que mon code soit faux car tout est impec' pour les autres données. Toutefois, quand je rentre à la mimine (dans une console) cette fameuse données avec la même requête, ça marche !
    Alors, à quoi est dû cette bizarrerie ? Mon code est faux ?

    @ ++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

  2. #2
    Membre expérimenté
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Par défaut
    Hum rapidement je detecte rien... Maintenant faudrait voir un exemple concret... C'est long ton code (le avant elseif) ? Tu peux nous donner les differentes valeurs de $key $protein, peut etre attrs .... Car comme ca ca me semble difficile de voir.

    En tout cas je pense que ca vient d'avant la requete... et peut etre plus particulierement du $val = $attrs{$key}; On peut avoir plus d'infos ? mettre un test pour savoir si tu as une valeur ...

    @+

  3. #3
    Membre expérimenté
    Avatar de Choupi
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    223
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 223
    Par défaut
    Une question:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $key eq "percent_coverage" and $protein eq 'protein'
    Une raison à l'emploi de guillemets ou non ?

  4. #4
    Membre expérimenté
    Avatar de GLDavid
    Homme Profil pro
    Service Delivery Manager
    Inscrit en
    Janvier 2003
    Messages
    2 883
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Service Delivery Manager
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Janvier 2003
    Messages : 2 883
    Par défaut
    A y est !!!!
    J'ai trouvé ! .
    Voici mon 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
     
    sub handle_start2 {
       my(@stack);
       my($name, $desc, $val, $sequence, $an);
       my( $expat, $protein, %attrs ) = @_;
       push( @stack, { protein_group=>$protein});
       if( %attrs ) {
            foreach my $key( keys %attrs ) {
    	    if ($key eq "group_number") {
                    $gn = $attrs{$key};
                }
                elsif ($key eq "percent_coverage" and $protein eq 'protein') {
                    $val = $attrs{$key};
                    my($dbh) = DBI->connect("DBI:mysql:database=proteinprophet;host=localhost", 
                            "login", 
                            "password",
                            {'RaiseError' => 1}
                    );
                    my($query) = "update proteine set Coverage=$val where NomDossier='$NOM' AND NumGroupe=$gn;";
       				 my($sth) = $dbh->do($query);
       				 $sth = $dbh->do($query);
                }
            }     
        }   
    } 
     
    #Dans le "main"
     
    my($parser) = XML::Parser->new( Handlers => 
    		{
    			Start=>\&handle_start
    		});
    		$parser->parsefile("interact-prot.xml");
    	my($parser2) = XML::Parser->new( Handlers => 
    		{
    			Start=>\&handle_start2
    		});
    		$parser2->parsefile("interact-prot.xml");
    	}
    Il n'empêche que je trouve cette méthode, certes, fonctionnelle, mais peu élégante Mais je chipotte sans doute .

    @ ++
    GLDavid
    Consultez la FAQ Perl ainsi que mes cours de Perl.
    N'oubliez pas les balises code :tagcode: ni le tag :resolu:

    Je ne répond à aucune question technique par MP.

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

Discussions similaires

  1. [MySQL] Insert qui n enregistre pas ?
    Par nikki113 dans le forum Langage SQL
    Réponses: 10
    Dernier message: 20/06/2006, 20h31
  2. [SGBD] [MySQL] Insert Into
    Par Pigoulou dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/01/2006, 07h34
  3. [C#] Redirection qui ne s'effectue pas
    Par Ditch dans le forum ASP.NET
    Réponses: 5
    Dernier message: 18/10/2004, 20h35
  4. Réponses: 2
    Dernier message: 22/07/2004, 00h27

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