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] insérer dans une db


Sujet :

Langage PHP

  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut [POO] insérer dans une db
    Salut tout le monde

    je débute en POO et jaimerai savoir comment faire une fonction qui se trouve dans une class, qui permettrai d'insérer des données dans une base de donnée ? jai deja penser qu'il faudrai passer en paramètre le nom de la table mais après je ne sais pas comment faire pour remplir le value() parce qu'en fonction de ma table, les champs ne sont pas les meme evidemment...

    voila ce que jai pour le moment :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    class actionDB{
     
    	function ajoutDonne($table){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connexiondb();
     
    		$reponse = mysql_query("INSERT INTO ".$table."(??????)");
     
    		}
    	}
    merci de me dire si cest possible
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  2. #2
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Tu pourrais utiliser un tableau associatif en paramètre.
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $tab['champ1'] = val1;
    $tab['champ2'] = val2;
    $tab['champ3'] = val3;
    et dans ta fonction, tu fais : (je suis pas sur de la syntaxe..a verifier)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach($tab as $cle => $val){
     $champs.=$cle.",";
     $valeurs.=$val.",";
    }
    $req = "INSERT INTO $table($champs) VALUES ($valeurs)";
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut
    merci bîen mais ou fais-je ce tableau ??? je ne comprend pas ce que je dois mettre dedant...

    tu veux que je mette les valeur de mon formulaire dans le tableau ???
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Salut,

    Si tu débutes en OO, il faut que tu utilises le bon vocabulaire... On ne parle jamais de fonctions en OO, mais de méthodes.

    Concernant ta classe, le problème se situe déjà à la conception. Dans ton exemple, on pourrait croire tu cherches à faire un fonction dans une classe, à moins qu'il s'agisse d'une méthode statique, ton raisonnement n'est pas bon...

    Je sais c'est purement théorique... Mais bon, je pense pas qu'il soit utile et prudent de se lancer dans d'autres explications étant donné qu'il te manque vraissemblablement certaines notions fondamentales...

    Bye

  5. #5
    Expert éminent
    Avatar de raptor70
    Inscrit en
    Septembre 2005
    Messages
    3 173
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Septembre 2005
    Messages : 3 173
    Points : 6 812
    Points
    6 812
    Par défaut
    Tu créé ton tableau avant l'appel de ta fonction.
    Tu appelles ta fonction avec comme paramètre le nom de ta table et ton tableau associatif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $tab['champ1']='val1';
    $tab['champ2']='val2';
    $tab['champ3']='val3';
    ajoutDonnee("matable",$tab);
    La requete générée sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO matable(champ1,champ2,champ3) VALUES(val1,val2,val3)
    Tu génère ton tableau associatif comme tu veux (avec n'importe quel champ). Ta fonction est une fonction générique..
    Mes Tutos DirectX, OpenGL, 3D : http://raptor.developpez.com/

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par raptor70
    Tu créé ton tableau avant l'appel de ta fonction.
    Tu appelles ta fonction avec comme paramètre le nom de ta table et ton tableau associatif.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $tab['champ1']='val1';
    $tab['champ2']='val2';
    $tab['champ3']='val3';
    ajoutDonnee("matable",$tab);
    La requete générée sera :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    INSERT INTO matable(champ1,champ2,champ3) VALUES(val1,val2,val3)
    Tu génère ton tableau associatif comme tu veux (avec n'importe quel champ). Ta fonction est une fonction générique..
    Avec l'exemple ci-dessus, assorti à ton bout de code, tu as une fonction classique, ça ne nécessite à aucun moment de l'orienté objet.

  7. #7
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut
    je ne suis pas sur d'avoir fait juste... voila comment jai fais.

    voici ma methode ce trouvant dans une class :

    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
    class actionDB{
     
    	function ajoutDonne($table){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connexiondb();
     
    		foreach($tab as $cle => $val){
     			$champs.=$cle.",";
     			$valeurs.=$val.",";
    		}
     
    		$req = "INSERT INTO $table($champs) VALUES ($valeurs)";
     
    		}
    	}
    et voila la déclaration de mon tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab[$_POST['pseudo']] = 'val1';
    	$tab[$_POST['mdp']] = 'val2';
     
    	$objet = new actionDB();
    	$insererUtilisateur = $objet -> ajoutDonne('tbl_utilisateur', $tab);
    il me met cette erreur au moment de l'enregistrement :

    Warning: Invalid argument supplied for foreach() in C:\wamp\www\petites-annonces\brain.php on line 31
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  8. #8
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    je ne suis pas sur d'avoir fait juste... voila comment jai fais.

    voici ma methode ce trouvant dans une class :

    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
    class actionDB{
     
        function ajoutDonne($table){
            $liaisonDB = new liaisonDB();
            $liaisonDB -> connexiondb();
     
            foreach($tab as $cle => $val){
                 $champs.=$cle.",";
                 $valeurs.=$val.",";
            }
     
            $req = "INSERT INTO $table($champs) VALUES ($valeurs)";
     
            }
        }
    et voila la déclaration de mon tableau

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab[$_POST['pseudo']] = 'val1';
        $tab[$_POST['mdp']] = 'val2';
     
        $objet = new actionDB();
        $insererUtilisateur = $objet -> ajoutDonne('tbl_utilisateur', $tab);
    cest juste ???
    C'est "juste" si tu ajoutes le second paramètre à ta méthode ...enfin de tout façon ton raisonnement revient parfaitement à faire ceci... :

    <?php
    function ajoutDonne($table, $tab)
    {
    $liaisonDB = new liaisonDB();
    $liaisonDB -> connexiondb();

    foreach(
    $tab as $cle => $val)
    {
    $champs.=$cle.",";
    $valeurs.=$val.",";
    }

    $req = "INSERT INTO $table($champs) VALUES ($valeurs)";

    }
    }

    $tab[$_POST['pseudo']] = 'val1';
    $tab[$_POST['mdp']] = 'val2';

    $insererUtilisateur = ajoutDonne('tbl_utilisateur', $tab);
    ?>

    Le plus compliqué, c'est de faire simple. Et le plus simple, c'est de se compliquer.


  9. #9
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut
    bon maintenant jai sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function ajoutDonne($table, $tab){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connexiondb();
     
    		foreach($tab as $cle => $val){
     			$champs.=$cle.",";
     			$valeurs.=$val.",";
    		}
     
    		$req = "INSERT INTO $table($champs) VALUES ($valeurs)";
    		echo'Vous êtes bien enregistré';	
    		}
    et dans l'autre page (celle qui recoit les $_post) jai sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab[$_POST['pseudo']] = 'val1';
    	$tab[$_POST['mdp']] = 'val2';
     
    	$objet = new actionDB();
    	$insererUtilisateur = $objet -> ajoutDonne('tbl_utilisateur', $tab);
    sa ne me met plus d'erreur mais je n'ai rien en plus dans ma table
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  10. #10
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    bon maintenant jai sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function ajoutDonne($table, $tab){
            $liaisonDB = new liaisonDB();
            $liaisonDB -> connexiondb();
     
            foreach($tab as $cle => $val){
                 $champs.=$cle.",";
                 $valeurs.=$val.",";
            }
     
            $req = "INSERT INTO $table($champs) VALUES ($valeurs)";
            echo'Vous êtes bien enregistré';    
            }
    et dans l'autre page (celle qui recoit les $_post) jai sa :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $tab[$_POST['pseudo']] = 'val1';
        $tab[$_POST['mdp']] = 'val2';
     
        $objet = new actionDB();
        $insererUtilisateur = $objet -> ajoutDonne('tbl_utilisateur', $tab);
    sa ne me met plus d'erreur mais je n'ai rien en plus dans ma table
    Tu le fais exprès ?

    Il faudrait peut-être exécuter ta requête si tu veux qu'il se passe quelque chose .

    Moi je vois la formulation d'une requête SQL, mais je ne vois aucune fonction ou méthode qui l'exécute..!

  11. #11
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut
    bordel je comprend rien
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  12. #12
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    pas de gros mots !
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  13. #13
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    bordel je comprend rien
    Pas de panique .

    Enfaite, il te suffit d'éxécuter ta requête. Lorsque tu as créé ta requête, il te faut l'exécuter, comme pour cet exemple :

    <?php
    $sql
    = INSERT INTO tbl_utilisateurs (nom, prenom) VALUES('.$nom.','.$prenom.');

    mysql_query($sql);
    ?>

  14. #14
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Bon je t'explique en gros comment MOI je fonctionne :
    voici un exemple de classe php:
    <?
    Class Exemple{
    &#160;&#160;&#160;var
    $id_exemple ///pour manip BdD
    &#160;&#160;&#160;
    var $attribut1;
    &#160;&#160;&#160;var
    $attribut2;

    //Le constructeur exemple d'initialisation)
    function Exemple()
    {
    $this->attribut1 = 0;
    $this->attribut1 = "";
    }

    //Le chargeur , permet de charger l'objet depuis la base de donnée
    function BdCharger($id_exemple)
    {
    global
    $base;
    /*instanciation de la base de donnée (voir un de mes post a propos de connection facile et sécurisée a un BdD
    (je poserai le code de cette classe si tu veux) */
    $resultat = mysql_query("SELECT * FROM Exemple WHERE id_exemple='".$id_exemple."';" ,$base->DB_CONN());
    list(
    $this->attribut1,$this->attribut2) = mysql_fetch_row($resultat);
    }

    //L'enregistreur :
    function BdEnregistrer()
    {
    global
    $base;

    $requete = "INSERT INTO Exemple(attribut1,attribut2) VALUES ('".$this->attribut1."','".$this->attribut2."')";
    $resultat = mysql_query($requete ,$base->DB_CONN());
    //tu peux rajouter un test pour voir si OK
    $this->id_exemple = mysql_insert_id(); //permet de recup le dernier id inseré dans la base
    }

    //La MAJ
    function BdMaj($id_exemple)
    {
    global
    $base;

    $requete = "UPDATE Exemple SET attribut1='$this->attribut1',attribut2='$this->attribut2' WHERE (id_exemple='$id_exemple');";
    $resultat = mysql_query($requete ,$base->DB_CONN());
    //tu peux rajouter un test pour voir si OK
    }

    //Le suppresseur
    function BdSupprimer($id_exemple)
    {
    global
    $base;
    $resultat = mysql_query("DELETE FROM Exemple WHERE id_exemple='".$id_exemple."';,$base->DB_CONN());
    //tu peux rajouter un test pour voir si OK
    }
    //Le formulaire
    function Formulaire()
    &#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;global $action;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(isset($_GET&#91;'id_exemple']))
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;$this->BdCharger($id_exemple); //Si l'id est passée en URL on charge l'epi
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;/* Ca c'est manip qsue j'utilise parfois....pour le cas de la modification d'un enregistrement
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;tu vas voir par la suite (les $this->machin) */
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo "
    <FORM method=

    <b>Warning</b>: Unexpected character in input: '\' (ASCII=92) state=1 in <b>/home/developpez/www/developpez-com/php/bbcode/index.php</b> on line <b>81</b>

    "POST\" name=\"mf\" action=\"./traitement.php\">";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<INPUT type=\"hidden\" name=\"class\" value=\"exemple\">";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<INPUT type=\"hidden\" name=\"id_exemple\" value=\"".$id_exemple."\">";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TABLE cellpadding=5 cellspacing=0 align=center border=1>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD>Attribut 1:</TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD><INPUT type\"text\" name=\"attribut1\" value=\"".$this->attribut1."\"></TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD>Attribut 2:</TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD><INPUT type\"text\" name=\"attribut2\" value=\"".$this->attribut2."\"></TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD colspan=2 align=center>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<INPUT type=\"submit\" name=\"go\" value=\"Valider\">";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TABLE>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</FORM>";
    &#160;&#160;&#160;&#160;&#160;&#160;}

    &#160;&#160;&#160;&#160;&#160;&#160;
    /** Fonction : Lister()
    &#160;&#160;&#160;&#160;&#160;&#160;* Permet de lister les exemple presents dans la base de et de supprimer, modifier, ajouter
    &#160;&#160;&#160;&#160;&#160;&#160;*@global $base instanciation de Database() pour les acces a la base de donnes
    &#160;&#160;&#160;&#160;&#160;&#160;*/
    &#160;&#160;&#160;&#160;&#160;&#160;
    function Lister()
    &#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;global
    $base;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TABLE cellpadding=5 cellspacing=0 align=center border=1>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD><b>Attribut 1</b></TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD><b>Attribut 2</b></TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD colspan=\"2\"><b>Action :</b></TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $resultat = mysql_query("SELECT * FROM exemple ORDER BY id_exemple", $base->DB_CONN());
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if(
    mysql_num_rows($resultat)>0) // On teste si io y a des resultats
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    {
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;while(list(
    $id_exemple, $attibut1, $attribut2) = mysql_fetch_row($resultat))
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD>".$attibut1."</TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD>".$attibut2."</TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    //La c'est a toi de voir comment tu gere tes actions par exemple :
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    echo "<TD><a href=\"./index.php?class=exemple&action=modifier&id_exemple=".$id_exemple."\">Modifier</a></TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD><a href=\"./traitement.php?class=exemple&action=supprimer&id_exemple=".$id_exemple."\">";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "Supprimer</a></TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD colspan=6 align=center>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "Il n'y a actuellement aucun exemple d\'enregistré"."</TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "<TD colspan=5 align=center>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    //La c'est a toi de voir comment tu gere tes actions par exemple :
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    echo "<a href=\"./index.php?action=ajouter&class=exemple\">NOUVEAU</a></TD>"."</TD>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TR>";
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;echo
    "</TABLE>";
    &#160;&#160;&#160;&#160;&#160;&#160;}
    }
    ?>
    Colorez votre code PHP sur les forums grâce à Developpez.com
    Apres une instanciation de ma classe et de la base
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $base = nex Database();
    $exemple = new exemple();
    je peux par exemple afficher mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $exemple->Formulaire();
    puis dans mon traitement pour l'enregistrer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $exemple->attribut1 = $_POST['attribut1'];
    $exemple->attribut2 = $_POST['attribut2'];
    $exemple->BdEnregistrer();
    puis dans mon traitement pour modifier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $exemple->BdCharger();
    $exemple->attribut1 = $_POST['attribut1'];
    $exemple->attribut2 = $_POST['attribut2'];
    $exemple->BdMaj();
    puis dans mon traitement pour supprimer:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $exemple->BdSupprimer($_POST/$_GET/$_SESSION['id_exemple']);
    Voila en esperant que ce petit tuto as pu t'aider
    pour la connexion a la base de donnée ($base) voici le code la classe :
    COde Classe database
    Ps: j'aimerai ecrire un article la dessus c possible ?
    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  15. #15
    Invité
    Invité(e)
    Par défaut
    Si tu te lance dans un tutorial de classe, il faudrait mieux utiliser le modèle orienté objet PHP5 (pour sa simplicité), sécuriser les requêtes SQL (pour aider ton prochain ?) produire du code HTML normalisé (pour montrer le bon exemple), et par ailleurs déplacer tout code HTML en dehors de la classe... (pour l'art et la manière de l'OO).

    Enfin, c'est une critique, je dénigre pas Chacun est libre d'apprendre comme il veut.

  16. #16
    Membre éprouvé
    Avatar de SnakemaN
    Profil pro
    Bidouille-tout Android
    Inscrit en
    Juillet 2006
    Messages
    871
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Bidouille-tout Android

    Informations forums :
    Inscription : Juillet 2006
    Messages : 871
    Points : 1 118
    Points
    1 118
    Par défaut
    Oui bien sur mais la c'est un petit exemple tout simple et surtout fonctionnel tel quel.
    Bien sur on peut sécuriser un peu plus a grand coup de htmlentities() de htmlspecialchars() ou encroe mysql_real_escape_string mais la n'etait pas le sujet principal de ce topic....
    C'est juste pour lui montrer le principe de la POO de base :
    -classe
    -attributs
    -methode

    C'est le signe d'un fou, qu'avoir honte d'apprendre
    Ubuntu 10.04 Lucid Lynx @home
    LE guide libre Linux & Ubuntu pour tous : Simple comme Ubuntu

  17. #17
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par SnakemaN
    C'est juste pour lui montrer le principe de la POO de base :
    -classe
    -attributs
    -methode

    Etape suivante : types de classes, méthodes magiques, encapsulation, héritage, surcharge, ...

    C'est surtout ça la POO de base, et c'est pas facile à expliquer tout ça...

    Tu vas t'embarquer dans une sacrée galère ! C'est garantit.

    Bye

  18. #18
    Membre confirmé
    Homme Profil pro
    Ingénieur réseau et sécurité / Consultant
    Inscrit en
    Août 2005
    Messages
    1 068
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur réseau et sécurité / Consultant
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 1 068
    Points : 493
    Points
    493
    Par défaut
    je suis desolé mais sa ne fonctionne toujours pas... voici mon code avec la classe:

    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
    class actionDB{
     
    		function ajoutDonne($table, $tab){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connexiondb();
     
    		foreach($tab as $cle => $val){
     			$champs.=$cle.",";
     			$valeurs.=$val.",";
    		}
     
    		$req = "INSERT INTO".$table."($champs) VALUES (".$valeurs.")";
    		mysql_query($req);
    		echo'Vous êtes bien enregistré';	
     
    		}
    	}
    et voici le code ou je recoit les données du formulaires.

    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
    $tab[$_POST['nom']] = 'val1';
    	$tab[$_POST['prenom']] = 'val2';
    	$tab[$_POST['ville']] = 'val3';
    	$tab[$_POST['npa']] = 'val4';
    	$tab[$_POST['adresse']] = 'val5';
    	$tab[$_POST['pseudo']] = 'val6';
    	$tab[$_POST['mdp']] = 'val7';
    	$tab[$_POST['mail']] = 'val8';
    	$tab[$_POST['telephone']] = 'val9';
    	$tab[$_POST['canton']] = 'val10';
    	$tab[$_POST['pays']] = 'val11';
     
     
    	$objet = new actionDB();
    	$insererUtilisateur = $objet -> ajoutDonne('tbl_utilisateur', $tab);
    merci de votre aide et de votre patience
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  19. #19
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    je suis desolé mais sa ne fonctionne toujours pas... voici mon code avec la classe:

    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
    class actionDB{
     
            function ajoutDonne($table, $tab){
            $liaisonDB = new liaisonDB();
            $liaisonDB -> connexiondb();
     
            foreach($tab as $cle => $val){
                 $champs.=$cle.",";
                 $valeurs.=$val.",";
            }
     
            $req = "INSERT INTO".$table."($champs) VALUES (".$valeurs.")";
            mysql_query($req);
            echo'Vous êtes bien enregistré';    
     
            }
        }
    et voici le code ou je recoit les données du formulaires.

    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
    $tab[$_POST['nom']] = 'val1';
        $tab[$_POST['prenom']] = 'val2';
        $tab[$_POST['ville']] = 'val3';
        $tab[$_POST['npa']] = 'val4';
        $tab[$_POST['adresse']] = 'val5';
        $tab[$_POST['pseudo']] = 'val6';
        $tab[$_POST['mdp']] = 'val7';
        $tab[$_POST['mail']] = 'val8';
        $tab[$_POST['telephone']] = 'val9';
        $tab[$_POST['canton']] = 'val10';
        $tab[$_POST['pays']] = 'val11';
     
     
        $objet = new actionDB();
        $insererUtilisateur = $objet -> ajoutDonne('tbl_utilisateur', $tab);
    merci de votre aide et de votre patience
    Il faut analyser ce que reçoivent tes variables. Sans exécuter le code, on sait déjà qu'il y aura des erreurs de syntaxe SQL, c'est trivial... Je pensais que pour l'exemple tu avais simplifié, mais apparament, non.

    Je vais pas écrire la solution pour toi, mais voici ce qui pourrait t'aider :

    Vérifie ta requête SQL juste avant son éxécution, il y a surement pleins d'erreurs dedans.

    Bonne continuation

  20. #20
    Membre éclairé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    882
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 882
    Points : 691
    Points
    691
    Par défaut
    salut

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $req = "INSERT INTO".$table."($champs) VALUES (".$valeurs.")";
    		mysql_query($req,$liaisonDB->getId()) or die (mysql_error($liaisonDB->getId()));
    		echo'Vous êtes bien enregistré';	
     
    		}
    $liaisonDB->getId() est devrai retourné l'id de la ressource, il vaut mieux la spécifier
    ensuit le mysq_error te renvoi des erreur si il en a

    maintenant ta requete est fause a cause du foreach, il y a "," qui traine
    regarde les fonction implode et join
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $champs = join(",", array_keys($tab));
    $valeur = join(",",array_values($tab))

Discussions similaires

  1. [POO] types d'attributs // pour insérer dans une BD
    Par No3l_tek dans le forum Langage
    Réponses: 3
    Dernier message: 07/05/2008, 14h08
  2. Réponses: 3
    Dernier message: 23/04/2006, 12h14
  3. [VBA] Calcul pour insérer dans une textebox
    Par Yanmeunier dans le forum IHM
    Réponses: 13
    Dernier message: 15/03/2006, 16h38
  4. Réponses: 5
    Dernier message: 19/04/2005, 09h46
  5. Insérer dans une Vue ordonnée
    Par biroule dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 27/09/2004, 15h27

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