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

Web Perl Discussion :

[web] cgi dbi MySQL : créer un tableau ?


Sujet :

Web Perl

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut [web] cgi dbi MySQL : créer un tableau ?
    Bonjour à tous,

    Je cherche à construire et afficher dans un navigateur un tableau dont les données seraient remplies à partir d'un résultat de requête sur ma base de donnée : en gros :
    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
     
    #!/usr/bin/perl -w
     
    use CGI;
    use DBI;
     
    my $cgi = new CGI;
    $db = "maBase";
    $host = "localhost";
     
    my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host", "root", "")
        or die "connection failed";
     
    $request = qq(select * from maTable);
    $reqDocs = $dbh->prepare($request);
    $reqDocs->execute or db_err("Unable to execute query", $dbh->errstr);
    my @tablDocs;
     
    $cgi->start_table({-border => '1'}),
      $cgi->Tr($cgi->th({-align => 'center'},'NomChamp1'),
               $cgi->td($cgi->th({-align => 'center'},'NomChamp2')),
               $cgi->td($cgi->th({-align => 'center'},'NomChamp3')),
               $cgi->td($cgi->th({-align => 'center'},'NomChamp4'))),
    ###################################################  
    while(@tablDocs = $reqDocs->fetchrow_array){
     $cgi->Tr($cgi->th({-align => 'center'},'$tablDocs[0]'),
               $cgi->td($cgi->th({-align => 'center'},'$tablDocs[2]')),
               $cgi->td($cgi->th({-align => 'center'},'$tablDocs[3]')),
               $cgi->td($cgi->th({-align => 'center'},')$tablDocs[4]]')),
    }
    ###################################################
               $cgi->end_table(),
     $cgi->end_html();
    A l'endroit que j'ai repéré par les ###, je cherche donc à compléter le tableau avec les valeurs de la base de données.

    Les connections avec la bdd se font bien (testées dans d'autres scripts) et j'arrive à récupérer les donnée par ailleurs.

    Seulement, ici, impossible d'éxecuter ce code, la ligne débutant par le while renvoyant une erreur du type "syntaxe error". Cette ligne est pourtant correcte (fonctionne bien ailleurs).

    Il semble alors qu'il ne soit pas possible d'écrire une ligne perl en plein milieu de la constrcution du tableau. Est-ce normal ? Peut-on écrire une ligne perl de ce type à cet endroit du code ?

    Merci beaucoup d'avance pour vos suggestions !!


  2. #2
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Je crois que ton while attend plutôt celà :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (@tablDocs = $reqDocs->fetchrow_array)
    Et pense à utiliser use strict, c'est très utile !

    @+
    Mr6

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut
    Certes....

    Mais l'erreur ne vient pas de là : je l'ai commise en recopiant le code dans le message. Il est comme tu le notes dans mon script. Ce while (quand il est bien écrit !! ) fonctionne bien par ailleurs.

    Merci quand même de ta réponse...

    ToCToF

  4. #4
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Je crois que j'ai trouvé, essaie comme ca :
    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
     
    #!/usr/bin/perl -w 
     
    use CGI; 
    use DBI; 
     
    my $cgi = new CGI; 
    $db = "maBase"; 
    $host = "localhost"; 
     
    my $dbh = DBI->connect("DBI:mysql:database=$db;host=$host", "root", "") 
        or die "connection failed"; 
     
    $request = qq(select * from maTable); 
    $reqDocs = $dbh->prepare($request); 
    $reqDocs->execute or db_err("Unable to execute query", $dbh->errstr); 
    my @tablDocs; 
     
    $cgi->start_table({-border => '1'}); 
      $cgi->Tr($cgi->th({-align => 'center'},'NomChamp1'), 
               $cgi->td($cgi->th({-align => 'center'},'NomChamp2')), 
               $cgi->td($cgi->th({-align => 'center'},'NomChamp3')), 
               $cgi->td($cgi->th({-align => 'center'},'NomChamp4')));
    ###################################################  
    while(@tablDocs = $reqDocs->fetchrow_array){ 
     $cgi->Tr($cgi->th({-align => 'center'},'$tablDocs[0]'), 
               $cgi->td($cgi->th({-align => 'center'},'$tablDocs[2]')), 
               $cgi->td($cgi->th({-align => 'center'},'$tablDocs[3]')), 
               $cgi->td($cgi->th({-align => 'center'},'$tablDocs[4]]')));
    } 
    ################################################### 
               $cgi->end_table(), 
     $cgi->end_html();
    @+
    Mr6

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut
    Non, pas bête l'idée des ";" Malheureusement ça ne fonctionne toujours pas : désormais la première partie du tableau est correctement affichée, mais rien ensuite !! Le point virgurle semble "stopper" l'édition du tableau et empécher le reste de s'écrire...

    Si de plus j'essaye un print tout bête derrière la première partie du tableau, ce print tout bête se retrouve affiché avant le tableau : en fait je pense que le tableau ne s'affiche qu'au moment où est écrit "$cgi->end_table()," .

    Je suis toujours bloqué en utilisant cette méthode. J'arrive cependant à construire le tableau en écrivant laborieusement toutes les balises de construction (print "<table><Tr>..........."). C'est pas classe mais ça fonctionne...

    Si t'as une autre idée je suis preneur. En tout cas merci beaucoup pour ton aide.

    @+

    ToCToF

  6. #6
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Bon, alors comme ca ca marche totalement, c sûr, je l'ai testé sur une de mes bases :
    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
     
    print $cgi->header();
    print $cgi->start_html(-title=>'test',
    							 -bgcolor=>'D4D0C8',
    							 -vlink=>'#0000FF',
    							 -alink=>'#0000FF');
    print $cgi->start_table({-border => '1'}); 
    print $cgi->Tr($cgi->th({-align => 'center'},'NomChamp1'), 
               $cgi->td($cgi->th({-align => 'center'},'NomChamp2')), 
               $cgi->td($cgi->th({-align => 'center'},'NomChamp3')), 
               $cgi->td($cgi->th({-align => 'center'},'NomChamp4'))); 
    ###################################################  
    while(@tablDocs = $reqDocs->fetchrow_array){ 
    print $cgi->Tr($cgi->th({-align => 'center'},"$tablDocs[0]"), 
               $cgi->td($cgi->th({-align => 'center'},"$tablDocs[2]")), 
               $cgi->td($cgi->th({-align => 'center'},"$tablDocs[3]")), 
               $cgi->td($cgi->th({-align => 'center'},"$tablDocs[4]]"))); 
    } 
    ################################################### 
    print $cgi->end_table();
    print $cgi->end_html();
    @+
    Mr6

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    56
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 56
    Points : 59
    Points
    59
    Par défaut
    Je viens d'essayer le code, et là, franchement, j'ai envie de te prendre dans mes bras....

    Ca fonctionne parfaitement, MERCI BEAUCOUP (bah oui je hurle mais ça fait du bien !!)

    @+


    ToCToF

  8. #8
    Mr6
    Mr6 est déconnecté
    Membre éclairé

    Homme Profil pro
    Inscrit en
    Septembre 2004
    Messages
    607
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2004
    Messages : 607
    Points : 794
    Points
    794
    Par défaut
    Citation Envoyé par toctof
    Je viens d'essayer le code, et là, franchement, j'ai envie de te prendre dans mes bras....
    Uniquement si tu es blonde à forte poitrine alors

    @+
    Mr6

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

Discussions similaires

  1. [Developpement Web] Tomcat+JSP+MySQL
    Par sylvie dans le forum Tomcat et TomEE
    Réponses: 5
    Dernier message: 24/08/2006, 22h45
  2. Réponses: 2
    Dernier message: 20/08/2005, 12h53
  3. [web] CGI - upload de fichier
    Par TronsoT dans le forum Web
    Réponses: 1
    Dernier message: 25/05/2005, 23h58
  4. [web] CGI et perl
    Par Kinethe dans le forum Web
    Réponses: 6
    Dernier message: 07/09/2004, 11h09
  5. [web] [CGI][Easyphp] erreur 500
    Par nico72 dans le forum Web
    Réponses: 11
    Dernier message: 29/07/2004, 20h08

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