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. #21
    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
    bonne idée de faire un print de la requete... voici ce qu'elle me renvoit donc je comprend pourquoi sa n'insert pas mais je ne comprend pas pourquoi il met la requete comme sa :

    INSERT INTO tbl_utilisateur(jemmely,yanick,mouret,5562,rte du caca,yank,12345,gremaudc@gmail.com,0264752485,7,Suisse,) VALUES(val1,val2,val3,val4,val5,val6,val7,val8,val9,val10,val11,)
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  2. #22
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    $req = "INSERT INTO".$table."($champs) VALUES (".$valeurs.")";
    Oublie pas les espaces et les guillmets dans ta requête (on se demande pourquoi ".$table." est collé à INTO ou pourquoi $champs n'a pas droit à des guillmets et deux points à ses extrémités comme les autres variables)...

  3. #23
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    bonne idée de faire un print de la requete... voici ce qu'elle me renvoit donc je comprend pourquoi sa n'insert pas mais je ne comprend pas pourquoi il met la requete comme sa :

    INSERT INTO tbl_utilisateur(jemmely,yanick,mouret,5562,rte du caca,yank,12345,gremaudc@gmail.com,0264752485,7,Suisse,) VALUES(val1,val2,val3,val4,val5,val6,val7,val8,val9,val10,val11,)
    C'est pourtant évidant...

    Regarde ce que fais ton foreach, essais d'enticiper le résultat, à chaque boucle, il ajoute la valeur + une virgule. Alors, lors de la dernière boucle, il ajoutera forcément une virgule de trop...

    On est pas sorti de l'auberge...

  4. #24
    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
    hum ouais je vient de voir sa... et ya pas un moyen de dire que pour le dernier il ne met pas la virgule ?

    PS: mtn jai comme sa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach($tab as $cle => $val){
     			$champs.=$cle.",";
     			$valeurs.=$val.",";
     
    		}
    		$req = "INSERT INTO ".$table."(".$champs.") VALUES(".$valeurs.")";
    		echo $req;
    		mysql_query($req);
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  5. #25
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    hum ouais je vient de voir sa... et ya pas un moyen de dire que pour le dernier il ne met pas la virgule ?

    PS: mtn jai comme sa.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    foreach($tab as $cle => $val){
                 $champs.=$cle.",";
                 $valeurs.=$val.",";
     
            }
            $req = "INSERT INTO ".$table."(".$champs.") VALUES(".$valeurs.")";
            echo $req;
            mysql_query($req);
    jeff_! t'a donné la soluce un peu plus haut...

  6. #26
    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
    si 4 post avant

  7. #27
    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
    sa me fait encore plus le bordel

    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
     
    function ajoutDonne($table, $tab){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connexiondb();
     
    		foreach($tab as $cle => $val){
     			$champs.=$cle.",";
     			$valeurs.=$val.",";
     
    		}
     
    		$champs = join(",", array_keys($tab));
    		$valeur = join(",",array_values($tab));
    		$req = "INSERT INTO ".$table."(".$champs.") VALUES(".$valeurs.")";
     
    		echo $req;
    		mysql_query($req,$liaisonDB->getId()) or die (mysql_error($liaisonDB->getId()));
    		echo'<br />Vous êtes bien enregistré';	
     
    		}//eom ajoutDonne
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  8. #28
    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
    attention

    moi j'ai donnée la method getId() comme exemple, je ne connais pas la classe que tu utilise
    regarde la methode qui renvoi la resource de la connexion a mysql et par getId() par ce que tu atrouvé si elle existe, sinon la met pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	foreach($tab as $cle => $val){
     			$champs.=$cle.",";
     			$valeurs.=$val.",";
     
    		}
    et ce bout de code te sert a rien

    et quand tu dis
    sa me fait encore plus le bordel
    ca fait pas avancé la chose

  9. #29
    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 je vais abandonnée parce que jarrive pas a comprendre
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  10. #30
    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
    ca serait dommage d'arreter maintenant

    1 chose faire regarder la classe liaisondb et voir si une methode retourne l'id de ressource (qui corresopond a $conn = mysql_connect)
    2 regarder la syntaxe de ta requete

  11. #31
    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
    écoute je ne connais pas vraiment bien les termes que tu utilises voici ma class laisonDB

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class liaisonDB{
     
    	function connexiondb(){
    		mysql_connect('localhost','root','');
    		mysql_select_db('petites_annonces');
    		}
    	function fermerconnexion(){
    		mysql_close();
    		}
    }
    après voila je suis vraiment trop perdu
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  12. #32
    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
    on va commencé par cette class

    une connexion a une base de données est caractérisé par une ressource,
    cette ressource est lié a un id ( renvoyer par mysql_connect), donc l'id va etre un attribut( en general une donnée caractéristique) de nottre 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
    18
    19
    20
    21
     
    class liaisonDB{
     
    var $idconn;
     
    	function liaisonDB( ){
    $this->idconn = null;
    				}
    function connect($host , $user , $pass , $base){
    		$this->idconn = mysql_connect( $host,$user,$pass);
    		mysql_select_db('petites_annonces', $this->idconn);
     
    		}
     
    function getId(){
    return $this->idconn;
    }
    	function fermerconnexion(){
    		mysql_close($this->idconn);
    		}
    }
    voila pour la classe liaisonDb (celle-ci est sommaire, mais il faudrai quand meme implementer une gestion des erreurs)
    pour la suite

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    function ajoutDonne($table, $tab){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connect();
     
    		$champs = join(",", array_keys($tab));
    		$valeur = join(",",array_values($tab));
    		$req = "INSERT INTO ".$table."(".$champs.") VALUES(".$valeurs.")";
     
    		echo $req;
    		mysql_query($req,$liaisonDB->getId()) or die (mysql_error($liaisonDB->getId()));
    		echo'<br />Vous êtes bien enregistré';	
     
    		}//eom ajoutDonne

  13. #33
    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
    sa me pose des autre problème maintenant. a une place dans mon formulaire je listais le contenu d'une table et maintenant voici l'erreur que sa me donne a la place de lister.

    Warning: mysql_select_db(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\petites-annonces\brain.php on line 12

    Warning: mysql_close(): supplied argument is not a valid MySQL-Link resource in C:\wamp\www\petites-annonces\brain.php on line 20


    la ligne 12 cest : mysql_select_db('petites_annonces',$this -> idconn);
    la ligne 20 cest : mysql_close($this-> idconn);

    et voila ma class liaisonDB :

    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
    class liaisonDB{
    	var $idconn;
     
    	function liaisonDB(){
    		$this -> idconn = null;
    	}
     
    	function connexiondb(){
    		mysql_connect('localhost','root','');
    		mysql_select_db('petites_annonces',$this -> idconn);
    	}
     
    	function getId(){
    		return $this->idconn;
    	}
     
    	function fermerconnexion(){
    		mysql_close($this->idconn);
    	}
     
    }
    ensuite voici ma class actionDB

    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
    class actionDB{
     
    	function lireDonne($table){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB->connexiondb();
     
    		$reponse = mysql_query("SELECT * FROM ".$table);
    		$liaisonDB->fermerconnexion();
    		return $reponse;
    		}//eom lireDonne
     
    	function ajoutDonne($table, $tab){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connect();
     
    		$champs = join(",", array_keys($tab));
    		$valeur = join(",",array_values($tab));
    		$req = "INSERT INTO ".$table."(".$champs.") VALUES(".$valeurs.")";
     
    		echo $req;
    		mysql_query($req,$liaisonDB->getId()) or die (mysql_error($liaisonDB->getId()));
    		echo'<br />Vous êtes bien enregistré';	
     
    		}//eom ajoutDonne
     
    	}//eoc actionDB
    merci pour votre aide

    avant d'aller a mon problème d'enregistrement, faut régler celui-ci...
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  14. #34
    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
    re ! Bon jai règler mon problème d'affichage ! voici un résumé de mon code actuel.

    brain.php (endroit ou se trouvent les 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
    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
    class liaisonDB{
    	var $idconn;
     
    	function liaisonDB(){
    		$this -> idconn = null;
    	}
     
    	function connexiondb(){
    		$host = 'localhost';
    		$user = 'root';
    		$pass = '';
     
    		$this->idconn = mysql_connect($host,$user,$pass);
    		mysql_select_db('petites_annonces', $this->idconn);
    	}
     
    	function getId(){
    		return $this -> idconn;
    	}
     
    	function fermerconnexion(){
    		mysql_close($this -> idconn);
    	}
     
    }
     
    //-----------------------------------------------------------------------------------------//
     
    class actionDB{
     
    	function lireDonne($table){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connexiondb();
     
    		$reponse = mysql_query("SELECT * FROM ".$table);
    		$liaisonDB->fermerconnexion();
    		return $reponse;
    		}//eom lireDonne
     
    	function ajoutDonne($table, $tab){
    		$liaisonDB = new liaisonDB();
    		$liaisonDB -> connexiondb();
     
    		$champs = join(",", array_keys($tab));
    		$valeur = join(",",array_values($tab));
     
    		$req = "INSERT INTO ".$table."(".$champs.") VALUES(".$valeurs.")";
    		echo $req;
    		mysql_query($req,$liaisonDB->getId()) or die (mysql_error($liaisonDB->getId()));
     
    		$liaisonDB -> fermerconnexion();	
     
    		}//eom ajoutDonne
     
    	}//eoc actionDB
    ensuite enregistrement.php (ou on recupert les $_post[])
    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
    $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(); //creation de l'objet (class actionDB)
    	//$insererUtilisateur = $objet -> ajoutDonne('tbl_utilisateur', $tab); //appel de la fonction ajoutDonne +parametre
    	$objet -> ajoutDonne('tbl_utilisateur',$tab);
    voici tout mon code actuel. mais malheureusement lorsque je fais envoyer, il m'affiche sa :

    INSERT INTO tbl_utilisateur(jemmely,yannick,mouret,2354,route du centre,yank,1234,gremaudc@gmail.com,4752485,7,France) VALUES()You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '2354,route du centre,yank,1234,gremaudc@gmail.com,4752485,7,France) VALUES()' at line 1

    deja la je ne comprend pas pourquoi après tbl_utilisateur, il me met les donnée alors qu'il devrai me mettre les champs de la table non ? je ne comprend pas pourquoi on fait mon tableau de cette maniere alors qu'on devrai plutot le faire comme sa :

    $tab['val1'] = $_POST['blabla'];

    non ?
    merci
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  15. #35
    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

    petit correctif
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $valeurs = join(",",array_values($tab));
     
    		$req = "INSERT INTO $table ($champs) VALUES($valeurs)";
    		echo $req;
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $valeur = join(",",array_values($tab));
     
    		$req = 'INSERT INTO '.$table.' ('.$champs.') VALUES('.$valeurs.')';
    		echo $req;

  16. #36
    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
    re ! ouais javais modifier sa !

    mais sa ne fonctionne toujours pas... et franchement je ne comprend pas vraiment... tu vois pourquoi toi ?
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  17. #37
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    re ! ouais javais modifier sa !

    mais sa ne fonctionne toujours pas... et franchement je ne comprend pas vraiment... tu vois pourquoi toi ?
    Parceque tu te compliques la vie, voilà pourquoi .

  18. #38
    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
    c-a-d ???

    la méthode de Jeff! nest pas bien ? ou je fais faux ?
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

  19. #39
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par cyrill
    c-a-d ???

    la méthode de Jeff! nest pas bien ? ou je fais faux ?
    C'est à dire que je ne comprends pas pourquoi tu fais cette fonctionnalité, en quoi ça va te faciliter tes requêtes ? Pourquoi tu t'obstines à faire une classe alors que ton raisonnement passerait (à la rigueur) mieux par une fonction, pourquoi tu fais de l'orienté objet alors que vraissemblement tu débutes en programmation...

    Moi je laisse tomber là !

    Bonne chance.

  20. #40
    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
    ben comme sa chaque fois que je veux faire un insert, je peut directement appeler cette methode et non pas faire chaque fois insert into blabla...
    Il y a 10 types de personnes sur la planète. Ceux qui comprennent le binaire et ceux qui ne le comprennent pas...

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