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

Langage PHP Discussion :

Syntaxe d'un formulaire [Fait]


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut Syntaxe d'un formulaire
    Bonsoir à toutes et tous,

    J'ai un pb de syntaxe en PHP que je n'arrive pas à résoudre :
    Dans un formulaire très simple, je demande à l'utilisateur de saisir dans un input text une valeur.

    Quand l'utilisateur clique pour valider sa valeur je veux lancer le script "admin_edite_feuille_emargement" en passant comme paramètre la valeur num_classe saisie.

    pour info, le script "admin_edite_feuille_emargement" récupère la valeur transmise num_classe, qui est la composante WHERE d'un SELECT dont je me sers pour génèrer un fichier PDF.

    ça doit pas être compliqué
    Merci d'avance pour votre aide,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form action="admin_edite_feuille_emargement.php" method="post">
          Saisir la classe pour laquelle éditer la feuille émargement : 
          <input type="text" name="num_classe" size="2">
          <input type="submit" value=<?php echo "<a href='edite_feuille_emargement.php?num_classe=.'"$_POST['num_classe']."'.";?>Go/>
    </form>

  2. #2
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 322
    Points : 15 665
    Points
    15 665
    Par défaut
    pour passer la valeur "num_classe" tu as juste besoin de faire ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <form action="admin_edite_feuille_emargement.php" method="post">
        Saisir la classe pour laquelle éditer la feuille émargement : 
        <input type="text" name="num_classe" size="2"/>
        <input type="submit" value="Go"/>
    </form>

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Merci pour ta réponse
    ça marche j'arrive à lancer le script "edite_feuille_emargement.php"

    dont le code est :
    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
     
    <?php
    define('FPDF_FONTPATH','font/');
    require('mysql_table.php');
    class PDF extends PDF_MySQL_Table
    {
    function Header()
    {
        //Titre
        $this->Image('Logo_ilce_vignette3.jpg',10,8,63);
        $this->Ln(40);
        $this->SetFont('Arial','',18);
        $this->Cell(0,6,'Feuille Emargement ILCE',0,1,'C');
        $this->Ln(10);
        //Imprime l'en-tête du tableau si nécessaire
        parent::Header();
    }
    }
    //Connexion à la base
    require('variables.php');
    mysql_connect($bddserver, $bddlogin, $bddpwd);
    mysql_select_db($bdd);
    $pdf=new PDF();
    $pdf->Open();
    $pdf->AddPage();
    $pdf->SetFont('Arial','',12);
    $pdf->Cell(160,10,'Nom de l\'enseignant :',1,1,'L');
    $pdf->Cell(160,10,'Classe :',1,1,'L');
    $pdf->Ln(10);
    $pdf->Cell(60,10,'Date :',1,0,'');
          for($i=1;$i<=5;$i++)
                  $pdf->Cell(20,10,'',1,0,'L');
    $pdf->Ln();
    $pdf->Cell(60,10,'Matiere :',1,0,'');
          for($i=1;$i<=5;$i++)
                  $pdf->Cell(20,10,'',1,0,'L');
    $pdf->Ln();
    $pdf->Cell(60,10,'Heure :',1,0,'');
          for($i=1;$i<=5;$i++)
                  $pdf->Cell(20,10,'',1,0,'L');
    $pdf->Ln();
    $pdf->Cell(60,10,'Demi-journée :',1,0,'');
          for($i=1;$i<=5;$i++)
          {
                  $pdf->Cell(10,10,'AM',1,0,'L');
                  $pdf->Cell(10,10,'PM',1,0,'L');
          }
    $pdf->Ln();
    //Premier tableau : imprime toutes les colonnes de la requête
    $sql="SELECT nom,prenom FROM etudiant WHERE num_classe=num_classe ORDER by nom" ;
    $pdf->Table($sql);
    $pdf->Cell(60,10,'Signature :',1,0,'');
          for($i=1;$i<=5;$i++)
                  $pdf->Cell(20,10,'',1,0,'L');
    $pdf->Output();
    ?>
    mais par contre il n'arrive pas semble-t-il à récupérer la valeur num_classe car en fait le script me liste tous les étudiants sans tenir compte de la valeur de num_classe ?
    Je dois avoir un pb au niveau de la syntaxe sur la ligne $sql="SELECT nom,prenom FROM etudiant WHERE num_classe=num_classe ORDER by nom" ;

    Qu'en penses-tu ?

  4. #4
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 322
    Points : 15 665
    Points
    15 665
    Par défaut
    quand tu envoies le formulaire avec la méthode "POST", tu récupère la valeur dans le tableau $_POST, donc tu dois construire ta requête avec $_POST['num_classe']
    par contre tu dois protéger ta requête contre les injections, d'où vient la classe PDF_MySQL_Table ?

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    Je dois être fatigué ce soir, j'arrive plus à écrire, a ton avis quelle est la bonne syntaxe pour le $sql? :
    $sql="SELECT nom,prenom FROM etudiant WHERE num_classe='."$POST['num_classe']'." ORDER by nom" ;
    $pdf->Table($sql);

    la classe vient d'ici, je l'ai trouvé sur le site fpdf.org pour afficher un tableau
    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
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
     
    <?php
    require('fpdf.php');
    class PDF_MySQL_Table extends FPDF
    {
    var $ProcessingTable=false;
    var $aCols=array();
    var $TableX;
    var $HeaderColor;
    var $RowColors;
    var $ColorIndex;
     
    function Header()
    {
        //Imprime l'en-tête du tableau si nécessaire
        if($this->ProcessingTable)
            $this->TableHeader();
    }
     
    function TableHeader()
    {
        $this->SetFont('Arial','B',12);
        $this->SetX($this->TableX);
        $fill=!empty($this->HeaderColor);
        if($fill)
            $this->SetFillColor($this->HeaderColor[0],$this->HeaderColor[1],$this->HeaderColor[2]);
        //foreach($this->aCols as $col)
        //    $this->Cell($col['w'],6,$col['c'],1,0,'C',$fill);
        //$this->Ln();
    }
     
    function Row($data)
    {
        $this->SetX($this->TableX);
        $ci=$this->ColorIndex;
        $fill=!empty($this->RowColors[$ci]);
        if($fill)
            $this->SetFillColor($this->RowColors[$ci][0],$this->RowColors[$ci][1],$this->RowColors[$ci][2]);
        foreach($this->aCols as $col)
            $this->Cell($col['w'],5,$data[$col['f']],1,0,$col['a'],$fill);
            for($i=1;$i<=10;$i++)
                  $this->Cell(10,5,'',1,0,'L');
        $this->Ln();
        $this->ColorIndex=1-$ci;
    }
     
    function CalcWidths($width,$align)
    {
        //Calcule les largeurs des colonnes
        $TableWidth=0;
        foreach($this->aCols as $i=>$col)
        {
            $w=$col['w'];
            if($w==-1)
                $w=30;
      //      elseif(substr($w,-1)=='%')
      //          $w=$w/100*$width;
            $this->aCols[$i]['w']=$w;
            $TableWidth+=$w;
        }
        //Calcule l'abscisse du tableau
        if($align=='C')
            $this->TableX=max(($this->w-$TableWidth)/2,0);
        elseif($align=='R')
            $this->TableX=max($this->w-$this->rMargin-$TableWidth,0);
        else
            $this->TableX=$this->lMargin;
    }
     
    function AddCol($field=-1,$width=-1,$caption='',$align='L')
    {
        //Ajoute une colonne au tableau
        if($field==-1)
            $field=count($this->aCols);
        $this->aCols[]=array('f'=>$field,'c'=>$caption,'w'=>$width,'a'=>$align);
    }
     
    function Table($query,$prop=array())
    {
        //Exécute la requête
        $res=mysql_query($query) or die('Erreur: '.mysql_error()."<BR>Requête: $query");
        //Ajoute toutes les colonnes si aucune n'a été définie
        if(count($this->aCols)==0)
        {
            $nb=mysql_num_fields($res);
            for($i=0;$i<$nb;$i++)
                $this->AddCol();
        }
        //Détermine les noms des colonnes si non spécifiés
        foreach($this->aCols as $i=>$col)
        {
            if($col['c']=='')
            {
                if(is_string($col['f']))
                    $this->aCols[$i]['l']=ucfirst($col['f']);
                else
                    $this->aCols[$i]['l']=ucfirst(mysql_field_name($res,$col['f']));
            }
        }
        //Traite les propriétés
       if(!isset($prop['width']))
            $prop['width']=0;
        if($prop['width']==0)
            $prop['width']=$this->w-$this->lMargin-$this->rMargin;
        if(!isset($prop['align']))
            $prop['align']='L';
        if(!isset($prop['padding']))
            $prop['padding']=$this->cMargin;
        $cMargin=$this->cMargin;
        $this->cMargin=$prop['padding'];
        if(!isset($prop['HeaderColor']))
            $prop['HeaderColor']=array();
        $this->HeaderColor=$prop['HeaderColor'];
        if(!isset($prop['color1']))
            $prop['color1']=array();
        if(!isset($prop['color2']))
            $prop['color2']=array();
        $this->RowColors=array($prop['color1'],$prop['color2']);
        //Calcule les largeurs des colonnes
        $this->CalcWidths($prop['width'],$prop['align']);
        //Imprime l'en-tête
        $this->TableHeader();
        //Imprime les lignes
        $this->SetFont('Arial','',11);
        $this->ColorIndex=0;
        $this->ProcessingTable=true;
        while($row=mysql_fetch_array($res))
            $this->Row($row);
        $this->ProcessingTable=false;
        $this->cMargin=$cMargin;
        $this->aCols=array();
    }
    }
    ?>

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    bon j'ai trouvé la bonne syntaxe :
    $sql="SELECT nom,prenom FROM etudiant WHERE num_classe='".$POST['num_classe']."' ORDER by nom" ;

    mais le script ne récupère pas la valeur qui a été saisie dans le formulaire

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <form action="edite_feuille_emargement.php" method="post">
        Saisir la classe pour laquelle éditer la feuille émargement : 
        <input type="text" name="num_classe" size="2"/>
        <input type="submit" value="Go"/>
    </form>

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    29
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 29
    Points : 24
    Points
    24
    Par défaut
    bon je crois que je vais aller me coucher, j'arrive plus à écrire !!!
    avec $_POSt au lieu de $POST ça marche quand même bcp mieux
    Merci pour ton aide Mathieu
    Bonne soirée

  8. #8
    Expert éminent sénior
    Avatar de mathieu
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 10 322
    Points : 15 665
    Points
    15 665
    Par défaut
    non ce n'est pas bon tu dois protéger les données comme expliqué là par exemple :
    http://php.developpez.com/faq/?page=mysql#mysql-escape

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

Discussions similaires

  1. Problème de syntaxe dans un formulaire php-mysql
    Par alex45500 dans le forum Langage
    Réponses: 3
    Dernier message: 05/11/2012, 15h56
  2. [AC-2003] syntaxe champ sous formulaire onglet
    Par marcmarc150 dans le forum IHM
    Réponses: 0
    Dernier message: 30/06/2010, 13h55
  3. [AC-2002] Syntaxe et chemin formulaire
    Par William210 dans le forum IHM
    Réponses: 2
    Dernier message: 09/02/2010, 12h37
  4. Adaptation de la syntaxe pour les formulaires
    Par gvdmoort dans le forum Ruby on Rails
    Réponses: 0
    Dernier message: 17/03/2009, 10h39
  5. Réponses: 6
    Dernier message: 21/01/2008, 09h26

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