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

PHP & Base de données Discussion :

échec insertion, pas message erreur [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut échec insertion, pas message erreur
    Bonjour à tous, je n'arrive pas à faire une insertion c'est bête , en gros voilà 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
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    class add_film extends Film{
     
     
    	public function insert($nom, $type){
     
    		$pdo = $this->getPDO();
    		if($type == 'aventure')
    			$type = '2';
    		else 
    			$type = '1';
     
    		$add = $pdo->prepare('INSERT INTO FILM (id_film,nom_film,id_cat) VALUES (:id_film,:nom_film,:id_cat)');
    		$id = $pdo->lastInsertId();
    		echo $id.$nom.$type;
    		$add->execute(array
    				("id_film"=>$id,":nom_film"=>$nom,":id_cat"=>$type)
    			     );
    		if($add){
    			echo 'ok';
     
    		}
    		else 
    			echo 'non';
     
     
    		$add->closeCursor();		
     
    	}
     
     
     
    }
     
     
    $a = new add_film();
     
    if (!(empty($_POST['nom']) && !(empty($_POST['type'])))){
    	$nom = $_POST['nom'];
    	$type = $_POST['type'];
    	$a->insert($nom,$type);
    }

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,
    Tu ne le sais peut-être pas encore mais crois-moi, je te garanti une galère "royale" vu comment tu es parti...
    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
     
    // tu comptes créer une classe par action sur la base de données ?
    // sans compter que tu fais de l'héritage fonctionnel ce qui est un très
    // fortement déconseillé : add_film n'est pas un Film (au sens sémantique) 
    // donc pas d'héritage possible
    class add_film extends Film
    {
        // si on suit ta logique : tu as une classe qui s'appelle add_film
        // dans laquelle tu as une fonction insert...
        // add_film <=> insert, non ?
        public function insert($nom, $type)
        {
            $pdo = $this->getPDO();
            // $cat = ($type === 'aventure' ? 2 : 1;
            if ($type == 'aventure')
                $type = '2';
            else 
                $type = '1';
     
            $add = $pdo->prepare('INSERT INTO FILM (id_film,nom_film,id_cat) VALUES (:id_film,:nom_film,:id_cat)');
            // tu récupères l'id créé avant même que le nouveau film ne soit créé !
            $id = $pdo->lastInsertId();
            echo $id.$nom.$type;
            // $add est un PDOStatement et ->execute() renvoie un boolean
            // qui ici n'est pas réucpéré : cela serait plutôt : $exec = $add->execute();
            $add->execute(array(
                ":id_film"  => $id,
                ":nom_film" => $nom,
                ":id_cat"   => $type
            ));
     
            // echo ($exec) ? 'ok' : 'non';
            if ($add) {
                echo 'ok';
            }
            else 
                echo 'non';
     
            // pas besoin de clore le curseur, c'est automatique et plus rapide quand c'est géré par le système
            $add->closeCursor();		
     
        }
    }
     
    $a = new add_film();
     
    if (!(empty($_POST['nom']) && !(empty($_POST['type'])))){
    	$nom = $_POST['nom'];
    	$type = $_POST['type'];
    	$a->insert($nom,$type);
    }
    Un peu de lecture pour toi ici

    Tu t'attaques à trop de choses de front : problèmes d'architecture et maîtrise du langage PHP.
    Personnellement, avant de me pencher sur l'architecture de mes développements, j'ai commencé par bétonner la connaissance du langage.
    Réalise déjà simplement tes projets d'étudiant, fais en sorte que cela fonctionne et soit sécurisé un minimum et ensuite seulement tu te pencheras sur l'architecture.
    Pourquoi cet ordre, c'est simple : il faut d'abord connaître un minimum ce qui est possible de faire avec le langage et ensuite il faut être solide sur ses fondamentaux pour avoir une approche suffisamment abstraite afin de pouvoir s'attaquer aux (complexes) problèmes architecturaux. Quand tu débutes et si tu veux y arriver, il ne faut pas aller trop vite et s'éparpiller dans tous les sens (ou il faut un super prof).

    Allez bon courage

  3. #3
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par rawsrc Voir le message
    Salut,
    Tu ne le sais peut-être pas encore mais crois-moi, je te garanti une galère "royale" vu comment tu es parti...
    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
     
    // tu comptes créer une classe par action sur la base de données ?
    // sans compter que tu fais de l'héritage fonctionnel ce qui est un très
    // fortement déconseillé : add_film n'est pas un Film (au sens sémantique) 
    // donc pas d'héritage possible
    class add_film extends Film
    {
        // si on suit ta logique : tu as une classe qui s'appelle add_film
        // dans laquelle tu as une fonction insert...
        // add_film <=> insert, non ?
        public function insert($nom, $type)
        {
            $pdo = $this->getPDO();
            // $cat = ($type === 'aventure' ? 2 : 1;
            if ($type == 'aventure')
                $type = '2';
            else 
                $type = '1';
     
            $add = $pdo->prepare('INSERT INTO FILM (id_film,nom_film,id_cat) VALUES (:id_film,:nom_film,:id_cat)');
            // tu récupères l'id créé avant même que le nouveau film ne soit créé !
            $id = $pdo->lastInsertId();
            echo $id.$nom.$type;
            // $add est un PDOStatement et ->execute() renvoie un boolean
            // qui ici n'est pas réucpéré : cela serait plutôt : $exec = $add->execute();
            $add->execute(array(
                ":id_film"  => $id,
                ":nom_film" => $nom,
                ":id_cat"   => $type
            ));
     
            // echo ($exec) ? 'ok' : 'non';
            if ($add) {
                echo 'ok';
            }
            else 
                echo 'non';
     
            // pas besoin de clore le curseur, c'est automatique et plus rapide quand c'est géré par le système
            $add->closeCursor();		
     
        }
    }
     
    $a = new add_film();
     
    if (!(empty($_POST['nom']) && !(empty($_POST['type'])))){
    	$nom = $_POST['nom'];
    	$type = $_POST['type'];
    	$a->insert($nom,$type);
    }
    Un peu de lecture pour toi ici

    Tu t'attaques à trop de choses de front : problèmes d'architecture et maîtrise du langage PHP.
    Personnellement, avant de me pencher sur l'architecture de mes développements, j'ai commencé par bétonner la connaissance du langage.
    Réalise déjà simplement tes projets d'étudiant, fais en sorte que cela fonctionne et soit sécurisé un minimum et ensuite seulement tu te pencheras sur l'architecture.
    Pourquoi cet ordre, c'est simple : il faut d'abord connaître un minimum ce qui est possible de faire avec le langage et ensuite il faut être solide sur ses fondamentaux pour avoir une approche suffisamment abstraite afin de pouvoir s'attaquer aux (complexes) problèmes architecturaux. Quand tu débutes et si tu veux y arriver, il ne faut pas aller trop vite et s'éparpiller dans tous les sens (ou il faut un super prof).

    Allez bon courage
    Merci pour le conseil, mais là c'est plus tôt une critique de la conception dont je suis tout à fait d'accord avec vous, mais mon problème c'est que je n'arrive pas à trouver pourquoi ma requête ne marche pas ?

  4. #4
    Membre régulier
    Homme Profil pro
    Etudiant
    Inscrit en
    Octobre 2011
    Messages
    305
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Etudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2011
    Messages : 305
    Points : 115
    Points
    115
    Par défaut
    Citation Envoyé par stade13 Voir le message
    Merci pour le conseil, mais là c'est plus tôt une critique de la conception dont je suis tout à fait d'accord avec vous, mais mon problème c'est que je n'arrive pas à trouver pourquoi ma requête ne marche pas ?
    Bon j'ai su pourquoi, problème de base de donnée

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

Discussions similaires

  1. [AC-2007] Modifier un message access (pas d'erreur générée)
    Par atech dans le forum IHM
    Réponses: 11
    Dernier message: 23/09/2011, 16h03
  2. le message erreur 'dataset not in edit or insert mode'
    Par fcboumi13 dans le forum Bases de données
    Réponses: 8
    Dernier message: 04/11/2009, 23h08
  3. [Letitbe] Message erreur que je ne comprend pas
    Par kaelvista dans le forum Autres Logiciels
    Réponses: 4
    Dernier message: 04/08/2008, 17h55
  4. [MySQL] pas d'erreur mais l'insertion dans la base ne marche pas bien
    Par info_sara dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 21/05/2008, 14h55
  5. firefox ne s'installe pas.message d'erreur.
    Par maputo dans le forum Firefox
    Réponses: 1
    Dernier message: 11/05/2008, 16h45

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