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 :

INSERT qui ne fonctionne pas


Sujet :

PHP & Base de données

  1. #1
    Membre régulier
    Homme Profil pro
    Consultant process engineer industrial
    Inscrit en
    Janvier 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant process engineer industrial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 148
    Points : 93
    Points
    93
    Par défaut INSERT qui ne fonctionne pas
    Bonjour à tous,

    Je viens demander de l'aide je suis suis un problème d'insertion dans la base de donnée
    j'ai mon code qui me retourne aucune erreur je ne sais plus quoi faire...

    voici le code du formulaire:
    Code HTML : 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
                        <form action="ajax/fiche.php" method="post" name="creer_un_nouvelle_fiche" class="creer_un_nouvelle_fiche">
                          <input type="hidden" name="action" value="creation_fiche">
                          <div class="input-group mb-3">
                            <div class="input-group-prepend">
                              <span class="input-group-text">Référence pièce</span>
                            </div>
                            <input type="text" class="form-control" name="reference_piece" placeholder="Entrer la référence" required>
                          </div>
                          <div class="input-group mb-3">                
                            <div class="input-group-prepend">
                              <span class="input-group-text">Machine</span>
                            </div>
                            <input type="text" class="form-control" name="machine" placeholder="Entrer le type de machine" required>
                          </div>
                          <input type="submit" name="envoyer" value="Créer" class="btn btn-primary" />
                        </form>

    le code 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
    if(isset($_POST['action']) && $_POST['action'] == 'creation_fiche')
    {
    			$get_connect =get_connect();// mettre  get_connect() dans une variable pour que lastInsertId() fonctionne
    			$creer = $get_connect->prepare("INSERT INTO fiche_optimisation (Machine,Reference_piece,Actif) VALUES (:machine,:reference_piece,:actif)");
    			$creer->bindParam(':machine', $machine, PDO::PARAM_STR);
    			$creer->bindParam(':reference_piece', $reference_piece, PDO::PARAM_STR);
    			$creer->bindParam(':actif', $actif, PDO::PARAM_STR);
     
    			$reference_piece    	= $_POST['reference_piece'];
    			$machine 			   	= $_POST['machine'];
    			$actif    				= "2";
    			$creer->execute();
     
    			$idpost = $get_connect->lastInsertId(); //Retourne l'identifiant de la dernière ligne insérée
    			echo $idpost;
     
       			$creer->closeCursor();
    }
    echo $idpost; me retourne toujours 0 vu que rien ne s'enregistre..


    la fonction get_connect() pour information:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
    function get_connect(){
    		try
    		{
    		$bdd=new PDO('mysql:host=localhost;dbname=bdd_dpmu', 'root', 'root');
    		$bdd->exec("SET NAMES UTF8");
    		return $bdd;
    		}
    		catch (Exception $e)
    		{
    		return	die('ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage());
    		}
    }
    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Connexion : (exemple)
    • on active les messages d'erreur PDO
    • et encodage UTF-8

    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
    function get_connect(){
      try{
            // ---------
            $hostname    = 'localhost';	// voir hébergeur ou "localhost" en local
            $database    = 'bdd_dpmu';	// nom de la BdD
            $username    = 'root';		// identifiant
            $password    = 'root';		// mot de passe
            // ---------
    	$strConn     = 'mysql:host='.$hostname.';dbname='.$database.';charset=utf8';    // UTF-8
    	$extraParam    = array(
    		PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,		// rapport d'erreurs sous forme d'exceptions
    		PDO::ATTR_PERSISTENT => true,               		// Connexions persistantes
    		PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,	// fetch mode par defaut
    		PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"    // encodage UTF-8
    		);
            // ---------
    	// Instancie la connexion
    	$bdd = new PDO($strConn, $username, $password, $extraParam);
    	return $bdd;
     
      }catch (Exception $e){ return	die('ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage()); }
     
    }
    2-
    • Remplace $get_connect par $bdd, tu y gagneras... en lisibilité, et en nombre de caractères.
    • Oublie bindParam(), et utilise plutôt bindValue() (qui est plus simple/naturel à utiliser).
    • utilise try/catch autour des requêtes SQL, en cas d'erreur.

    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
    <?php
    	$bdd = get_connect(); // connexion AU TOUT DEBUT du script
     
    if(isset($_POST['action']) && $_POST['action'] == 'creation_fiche')
    {
      try{
    	$creer = $bdd->prepare("INSERT INTO fiche_optimisation (Machine,Reference_piece,Actif) VALUES (:machine,:reference_piece,:actif)");
     
    	$creer->bindValue(':machine', $_POST['machine'], PDO::PARAM_STR);
    	$creer->bindValue(':reference_piece', $_POST['reference_piece'], PDO::PARAM_STR);
    	$creer->bindValue(':actif', 2, PDO::PARAM_INT);
     
    	$creer->execute();
     
    	$idpost = $bdd->lastInsertId(); //Retourne l'identifiant de la dernière ligne insérée
     
      }catch (Exception $e){ return	die('ERREUR PDO dans ' . $e->getFile() . ' L.' . $e->getLine() . ' : ' . $e->getMessage()); }
     
    	echo $idpost;
     
    }
    	$creer->closeCursor(); // A LA TOUTE FIN du script
    Remarque : j'ai mis PDO::PARAM_INT pour "Actif" : à TOI de nous dire quel est le bon FORMAT en BDD (INT ? VARCHAR ?)

  3. #3
    Membre régulier
    Homme Profil pro
    Consultant process engineer industrial
    Inscrit en
    Janvier 2010
    Messages
    148
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Consultant process engineer industrial
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2010
    Messages : 148
    Points : 93
    Points
    93
    Par défaut
    Merci pour tes information.

    le rapport d'erreurs sous forme d'exceptions ma permis de repérer le problème lié à la base de donnée une valeur

    j'avais une ligne qui n'étais pas à NULL dans la base de données...

    Merci en tout cas pour ta réponse, je vais à présent utiliser la fonction comme tu l'as indiqué, ca m'éviteras de perdre 1 journée..

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

Discussions similaires

  1. Requête insert qui ne fonctionne pas .
    Par Pioul dans le forum VBA Access
    Réponses: 7
    Dernier message: 21/05/2008, 12h28
  2. Bulk Insert qui ne fonctionne pas
    Par genio dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 01/11/2007, 01h13
  3. [MySQL] INSERT qui ne fonctionne pas
    Par djudjublondin dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 08/08/2007, 19h46
  4. [ODBC] une requete d'insertion qui ne fonctionne pas
    Par boulhous dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 26/05/2006, 13h56
  5. Insert qui ne fonctionne pas
    Par Nyrianne dans le forum Outils
    Réponses: 7
    Dernier message: 09/01/2006, 17h50

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