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 :

[POO] [PHP4] passage de variables d'un formulaire


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 83
    Points
    83
    Par défaut [POO] [PHP4] passage de variables d'un formulaire
    bonjour tout le monde,

    J'essaye de développer un site internet en php4/mysql pour ma femme. J'essaye en même temps d'apprendre la POO avec php4.

    j'ai un petit soucis, j'ai une page Article.php qui va me générer un formulaire :

    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
    <?php    
     
     
    class Article {
     
     
    function AfficherCreerForm() {
        Require_once('bdd/Bdd.php');
     
        // remplir les listes
        $sqlMar = 'SELECT * FROM MAR';
        $sqlOff = 'SELECT * FROM OFF';
        $sqlSou = 'SELECT * FROM SOU';
        $sqlCat = 'SELECT * FROM CAT';
     
        $reqMar = mysql_query($sqlMar) or die ('Erreur SQL !'.$sqlMar.'<br>'.mysql_error());
        $reqOff = mysql_query($sqlOff) or die ('Erreur SQL !'.$sqlOff.'<br>'.mysql_error());
        $reqSou = mysql_query($sqlSou) or die ('Erreur SQL !'.$sqlSou.'<br>'.mysql_error());
        $reqCat = mysql_query($sqlCat) or die ('Erreur SQL !'.$sqlCat.'<br>'.mysql_error());
        if (mysql_num_rows($reqMar) > 0) {
            if (mysql_num_rows($reqOff)> 0) {
                if (mysql_num_rows($reqSou) > 0) {
                    if (mysql_num_rows($reqCat) > 0) {
     
                        echo '<form method="post" action="Article.php">'; 
                        echo '<p >';
                        echo '<Table class="texte" bgcolor="#eefbdf" cellspacing="0" cellpadding="0" border="0" width="484px">';
                        echo '<tr><td width="15%" height="20px"></td><tr>';
                        //Liste Marque
                        echo '    <tr><td width="15%">';
                        echo '            <b>&nbsp; &nbsp;Marque </b> : </td><td width="25%"><select style="width: 130" id="Marque" name="Marque" size ="1">';
                        while($ligneMar = mysql_fetch_array($reqMar)) {
                            echo '<option value ="'.$ligneMar["IDMAR"].'">'.$ligneMar["MARLIBELLE"].'</option>'."\n";
                        }
                        echo'                </select>';
     
                        echo'    </td>';
                        //Liste Catégorie
                        echo'<td width="25%"><b> Catégorie </b> : </td><td width="25%"><select style="width: 110" id="Cat" name="Cat" size ="1">';
                        while($ligneCat = mysql_fetch_array($reqCat)) {
                            echo '<option value ="'.$ligneCat["IDCAT"].'">'.$ligneCat["CATLIBELLE"].'</option>'."\n";
                        }
                        echo'                </select>';
                        echo' </td></tr>';
                        //Liste Offre
                        echo '    <tr><td width="15%"><b>&nbsp; &nbsp;Offre </b> : </td><td width="25%"><select style="width: 130" id="Offre" name="Offre" size ="1">';
                        while($ligneOff = mysql_fetch_array($reqOff)) {
                            echo '<option value ="'.$ligneOff["IDOFF"].'">'.$ligneOff["OFFLIBELLE"].'</option>'."\n";
                        }
                        echo'                </select>';
                        echo' </td>';
                        //Liste SouCat
                        echo'<td width="25%"><b> Sous Catégorie </b> : </td><td width="25%"><select style="width: 110" id="SouCat" name="SouCat" size ="1">';
                        while($ligneSou = mysql_fetch_array($reqSou)) {
                            echo '<option value ="'.$ligneSou["IDSOU"].'">'.$ligneSou["SOULIBELLE"].'</option>'."\n";
                        }
                        echo'                </select>';                    
                        echo' </td></tr>';
                        echo '<tr><td width="15%" height="20px"></td><tr>';
                        echo '</table>';
                        echo'</p>';
                        echo '<p >';
                        echo '<Table class="texte" bgcolor="#eefbdf" cellspacing="0" cellpadding="0" border="0" width="484px">';
                        echo '<tr><td width="15%" height="20px"></td><tr>';
                        echo '<tr><td width="15%" height="30px">';
                        echo '<b>&nbsp; &nbsp;Nom </b> : </td><td height="30px" width="25%"><input type="text" class="TexteChamps" id="Nom" name="Nom" size="25">';                    
                        echo' </td></tr>';
                        echo '<tr><td height="30px"><b>&nbsp; &nbsp;PUHT </b> : </td><td height="30px" width="25%"><input type="text" class="TexteChamps" id="PrixU" name="PrixU" size="10">&nbsp;€';                    
                        echo' </td></tr>';
                        echo '<tr><td height="30px"><b>&nbsp; &nbsp;Référence </b> : </td><td height="30px" width="25%"><input type="text" class="TexteChamps" id="ref" name="ref" size="10">';                    
                        echo' </td></tr>';
                        echo '<tr><td height="30px"><b>&nbsp; &nbsp;Stock </b> : </td><td height="30px" width="25%"><input type="text" class="TexteChamps" id="stock" name="stock" size="10">';                    
                        echo' </td></tr>';
                        echo '<tr><td height="30px"><b>&nbsp; &nbsp;Contenu </b> : </td><td height="30px"></td></tr><tr><td height="20px"></td><td height="20px" width="25%"><textarea id="contenu" name="contenu" class="TexteChamps" rows="4" cols="40"></textarea>';                    
                        echo' </td></tr>';
                        echo '<tr><td height="30px"><b>&nbsp; &nbsp;Lien photo </b> : </td><td height="30px" width="25%"><input type="text" class="TexteChamps" id="Photo" name="Photo" size="42">';                    
                        echo' </td></tr>';
                        echo' <tr><td height="30px" ></td>';
                        echo' <td height="30px" align="center"><input type="reset" value="Effacer les données"><input type="submit" name="Ok" value="Enregistrer" ></td></tr>';
                        echo '<tr><td width="15%" height="20px"></td><tr>';
                        echo '</table>';
                        echo'</p>';
     
                        echo '</form>';
                    }
                }
            }
        }
      }
    }
     
    ?>
    en gros j'aimerai pouvoir passer mes variables de mon formulaire vers une autre classe ART.class.php :

    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
    <?php
     
     
        class ART {
     
            var $IdArt,$IdMar,$IdSou,$IdOff,$ArtLibelle,$ArtPUHT;
            var $ArtContenu,$ArtRef,$ArtQteStock,$ArtPhoto;
     
     
     
            //Fonction permettant la création d'un article dans la Table ART, on fait appelle à la page Bdd.php pour la connexion a la base de données.
            //J'injecte mes variables dans ma requete qui est ensuite traitée.
            //Je ferme ma connexion.
     
            function CreerArt() {
     
                Require_once('bdd/Bdd.php');
                session_start();
                $sql = 'INSERT INTO ART (idmar,idsou,idoff,artlibelle,artpuht,artcontenu,artref,artqtestock,artphoto) VALUES ("'.$_SESSION['Marque'].'","'.$_SESSION['SouCat'].'","'.$_SESSION['Offre'].'","'.$_SESSION['Nom'].'","'.$_SESSION['PrixU'].'","'.$_SESSION['contenu'].'","'.$_SESSION['ref'].'","'.$_SESSION['stock'].'","'.$_SESSION['Photo'].'")';
                mysql_query($sql) or die ('Erreur SQL !'.$sql.'<br>'.mysql_error());
                echo 'Votre article a bien été enregistré.';
                mysql_close();
            }
    }
    en remplissant mon formulaire je voudrais quand je valide enregistrer mon article, mais pour ça je dois réussir à passer mes variables de la page Article.php à la page ART.class.php .

    j'ai essayé de faire çà:

    Require_once('ART.class.php');
    $CreerArt = new ART('ART.class.php');
    $CreerArt->CreerArt($_POST['variable'],....);

    j'ai eu beaucoup de problemes avec ce procédé.

    Voila, merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Avatar de Anduriel
    Homme Profil pro
    Ingénieur intégration
    Inscrit en
    Février 2004
    Messages
    2 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur intégration

    Informations forums :
    Inscription : Février 2004
    Messages : 2 290
    Points : 1 500
    Points
    1 500
    Par défaut
    Juste une question: pourquoi faire deux classes différentes? Tu peux pas mettre la seconde fonction dans la première classe (Article)?

    Edit: Ou plutot pourquoi tu passes des paramètres dans CréerArt() alors que ta fonction n'en possède pas? C'est normal que ça fonctionne pas.

  3. #3
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Citation Envoyé par xG-Hannibal
    J'essaye en même temps d'apprendre la POO avec php4.
    Qitte à apprendre autant apprendre directement avec PHP5 ! Parce que bon l'objet sous php4 c'est pas forcément la panacée, même si on s'en sort.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 83
    Points
    83
    Par défaut
    quand je passais des paramètres dans CreerArt(), dans ma fonction je lui mettais aussi des variables mais ça ne marchait pas.

    ensuite j'ai préféré faire deux classes car sur la deuxième je n'ai pas qu'une fonction, j'en ai 6 mais bon j'essaye

  5. #5
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je rejoinds Anduriel, pas besoin de faire deux classes séparées, surtout que le nom de la deuxième est vraiment horrible (tout comme le nom des tables soit dit en passant)

    Qu'est-ce qui t'empeche d'avoir ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    class Article {
       function afficherForm() {}
       function creerArticle($param1, $param2, ...) {}
       ...
    }
     
    ?>
    ensuite pour afficher le formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = new Article();
    $a->afficherForm();
    pour créer un article :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $a = new Article()
    $a->creerArticle($_POST['...'], $_POST['...'], ....);

  6. #6
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    79
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Janvier 2006
    Messages : 79
    Points : 83
    Points
    83
    Par défaut
    ok merci .

  7. #7
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Sorry un tab enter involontaire.

    A+

  8. #8
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    Et de deux
    A+
    PS: j'ai pas beaucoup cette nouvelle interface.
    pourquoi previsu n'est pas avant enregistrer

  9. #9
    Expert éminent
    Avatar de sekaijin
    Homme Profil pro
    Urbaniste
    Inscrit en
    Juillet 2004
    Messages
    4 205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Urbaniste
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2004
    Messages : 4 205
    Points : 9 127
    Points
    9 127
    Par défaut
    dans ton formulaire tu mets les nom des imput de la façon suivante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input name="article[titre]" value="...." />
    dans ton script tu récupère alors
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $a = new Article($_POST['article'])
    ton constructeur dans ta classe doit prendre un seul paramètre de type array
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    class Article {
       function Article ($aArticle=null) {
          if ($aArticle==null) $aArticle=array();
          foreach($aArticle as $key => $value) {
            $this->$key = $value;
          }
          ...
       }
       function afficherForm() {}
    }
    ?>
    Tu as ainsi un objet Article avec les valeurs de ton formulaire.

    A+JYT

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

Discussions similaires

  1. [MySQL] Passage de variables hidden dans formulaire
    Par heretik25 dans le forum PHP & Base de données
    Réponses: 16
    Dernier message: 20/11/2011, 20h01
  2. Passage de variables POST sans formulaire
    Par seb92400 dans le forum Langage
    Réponses: 8
    Dernier message: 29/04/2009, 11h04
  3. Passage de variable GET via formulaire POST ?
    Par tintin72 dans le forum Langage
    Réponses: 4
    Dernier message: 25/07/2007, 17h51
  4. passage de variables dans un formulaire
    Par albo69 dans le forum Langage
    Réponses: 4
    Dernier message: 16/02/2006, 22h52
  5. passage de variable par un formulaire (checkbox)
    Par artotal dans le forum Langage
    Réponses: 3
    Dernier message: 16/10/2005, 19h16

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