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 :

Ajout de donne en db php PDO Mysql


Sujet :

PHP & Base de données

  1. #1
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2015
    Messages : 93
    Points : 63
    Points
    63
    Par défaut Ajout de donne en db php PDO Mysql
    bonjour a tous,
    je suis en train de faire un petit blog histoire de bosser un peu php et mysql mais j'ai une erreur que je ne comprend pas et j'en suis a un stade ou j’essaye tellement de choses que j'ai l'impression de m'enfoncer plus qu'autre chose.
    j'ai une page create_com.php qui récupère l'id du billet sur lequel je souhaite ajouter mon commentaire de ma page read.php mais lorsque je rempli mes champ et que je valide rien ne se passe alors que je devrai atterrir une foi les donnée envoyer en db sur ma page d'index mais au lieu de cela je reste sur la même page"create_com" et rien ne c'est passer, aucun ajout en db et j'ai l'impression que de valider ne fait qu'actualiser la page ??
    donc si quelqu'un peu m'aider svp je l'en remercie par avance

    ma table "commentaires" a les champ suivant :
    id
    billet_id
    auteur
    commentaire
    date_commentaire

    voici le code de ma page create_com.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
    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
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
     
    <?php 
    /* id_billet auteur commentaire date_commentaire "com_perso" */
     
     
    	require 'database.php';
     
    	$billet_id = null;
    	if ( !empty($_GET['billet_id'])) {
    		$billet_id = $_REQUEST['billet_id'];
    	}
     
     
     
    	if ( !empty($_POST)) {
    		// keep track validation errors
    		$billet_id = null;
    		$auteurError = null;
    		$commentaireError = null;
     
     
     
     
    		// keep track post values
     
    		$billet_id = $_POST['billet_id'];
    		$auteur = $_POST['auteur'];
    		$commentaire = $_POST['commentaire'];
     
     
     
     
    		// validate input
    		if (empty($billet_id)) {
    			$billet_idError = 'entrer la auteur qui explique votre fonction';
    			$valid = false;
    		}
     
    		if (empty($auteur)) {
    			$auteurError = 'entrer la auteur qui explique votre fonction';
    			$valid = false;
    		}
     
    		if (empty($commentaire)) {
    			$commentaireError = 'merci de mettre un commentaire';
    			$valid = false;
    		} 
     
     
     
    		// insert data
    		if ($valid) {
    			$pdo = Database::connect();
    			$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    			$sql = "INSERT INTO commentaires (billet_id,auteur,commentaire,date_commentaire) values(?, ?, ?, NOW())";
    			$q = $pdo->prepare($sql);
    			$q->execute(array($billet_id,$auteur,$commentaire,$date_commentaire));
    			Database::disconnect();
    			header("Location: index.php");
    		}
    	}
     
    ?>
     
     
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" href="style.css" />
        <!--link   href="css/bootstrap.min.css" rel="stylesheet"-->
        <!--script src="js/bootstrap.min.js"--><!--/script-->
    </head>
     
    <body>
        <div class="container">
     
        			<div class="span10 offset1">
        				<div class="row">
    		    			<h3>ajouter une news</h3>
    		    		</div>
     
    					<form class="form-horizontal" action="create_com.php" method="post">
    					<div class="control-group <?php echo !empty($billet_idError)?'error':'';?>">
    					    <label class="control-label">billet_id</label>
    					    <div class="controls">
    					      	<input name="billet_id" type="text"  placeholder="auteur" value="<?php echo !empty($billet_id)?$billet_id:'';?>">
    					      	<?php if (!empty($auteurError)): ?>
    					      		<span class="help-inline"><?php echo $auteurError;?></span>
    					      	<?php endif;?>
    							</div>
    					    </div>
     
     
    					<div class="control-group <?php echo !empty($auteurError)?'error':'';?>">
    					    <label class="control-label">auteur</label>
    					    <div class="controls">
    					      	<input name="auteur" type="text"  placeholder="auteur" value="<?php echo !empty($auteur)?$auteur:'';?>">
    					      	<?php if (!empty($auteurError)): ?>
    					      		<span class="help-inline"><?php echo $auteurError;?></span>
    					      	<?php endif;?>
    							</div>
    					    </div>
    						<div class="control-group <?php echo !empty($commentaireError)?'error':'';?>">
    					    <label class="control-label">commentaire</label>
    					    <div class="controls">
    					      	<textarea name="commentaire" type="text" cols="150" rows="5" placeholder="commentaire" value="<?php echo !empty($commentaire)?$commentaire:'';?>">
    					      	<?php if (!empty($commentaireError)): ?>
    					      		<span class="help-inline"><?php echo $commentaireError;?></span>
    					      	<?php endif;?></textarea>
    					    </div>
    						</div>
    						<div class="form-actions">
    						  <button type="submit" class="btn btn-success">Ajouter</button>
    						  <a class="btn" href="index.php">Retour</a>
    						</div>
    					</form>
    				</div>
     
        </div> <!-- /container -->
      </body>
    </html>
    :

  2. #2
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Bonjour,
    Affiche les erreurs pour voir d'ou ça provient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ini_set('display_errors', true);
    error_reporting(E_ALL);
    Le fichier database.php est bien au même niveau que la page courante ?
    Ta variable $valid n'est pas instanciée à true donc le if($valid) ne doit pas passer.

  3. #3
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2015
    Messages : 93
    Points : 63
    Points
    63
    Par défaut
    bonjour, et merci insaneness effectivement j'ai supprimer la ligne par mégarde
    le fichier database est bien au même niveau voir son code en dessous :

    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
     
    <?php
    class Database 
    {
    	private static $dbName = 'blog' ; 
    	private static $dbHost = 'localhost' ;
    	private static $dbUsername = 'root';
    	private static $dbUserPassword = '';
     
    	private static $cont  = null;
     
    	public function __construct() {
    		exit('Init function is not allowed');
    	}
     
    	public static function connect()
    	{
    	   // One connection through whole application
           if ( null == self::$cont )
           {      
            try 
            {
              self::$cont =  new PDO( "mysql:host=".self::$dbHost.";"."dbname=".self::$dbName, self::$dbUsername, self::$dbUserPassword);  
            }
            catch(PDOException $e) 
            {
              die($e->getMessage());  
            }
           } 
           return self::$cont;
    	}
     
    	public static function disconnect()
    	{
    		self::$cont = null;
    	}
    }
     
    ?>
    la déclaration d'affichage d'erreur y est également
    c'est cette ligne qui suit et se trouve dans la requête
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    du fait d'avoir retaper la ligne $valid = true;
    j'ai l'erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens' in C:\wamp\www\blog\create_com.php:57 Stack trace: #0 C:\wamp\www\blog\create_com.php(57): PDOStatement->execute(Array) #1 {main} thrown in C:\wamp\www\blog\create_com.php on line 57

  4. #4
    Membre habitué
    Homme Profil pro
    Developpeur
    Inscrit en
    Juillet 2014
    Messages
    102
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Calvados (Basse Normandie)

    Informations professionnelles :
    Activité : Developpeur

    Informations forums :
    Inscription : Juillet 2014
    Messages : 102
    Points : 153
    Points
    153
    Par défaut
    Qu'en est il de la variable $valid ? Ton bloc qui gère l'insertion est bien utilisé ?
    Essaye d'ajouter des traces (echo 'toto'; exit dans ce bloc.

    Apres ta requete n'est pas bonne non plus on dirait...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "INSERT INTO commentaires (billet_id,auteur,commentaire,date_commentaire) values(?, ?, ?, NOW())";
    			$q = $pdo->prepare($sql);
    			$q->execute(array($billet_id,$auteur,$commentaire,$date_commentaire));
    En effet il y a 4 colonnes dans lesquelles tu veux écrire mais seulement 3 ?
    Le $date_commentaire n'est pas prit en compte car tu met NOW().

    Essai :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "INSERT INTO commentaires (billet_id,auteur,commentaire,date_commentaire) values(?, ?, ?, NOW())";
    			$q = $pdo->prepare($sql);
    			$q->execute(array($billet_id,$auteur,$commentaire));
    Ou :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $sql = "INSERT INTO commentaires (billet_id,auteur,commentaire,date_commentaire) values(?, ?, ?, ?)";
    			$q = $pdo->prepare($sql);
    			$q->execute(array($billet_id,$auteur,$commentaire,$date_commentaire));

  5. #5
    Membre du Club
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Août 2015
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 49
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux

    Informations forums :
    Inscription : Août 2015
    Messages : 93
    Points : 63
    Points
    63
    Par défaut
    grandement merci a toi insaneness
    +1
    ca fonctionne !
    a force de tentative j'avais supprimer le $valid par mégarde mais la requête j'aurai du le voir après avoir galérer pour la page de création avec laquelle j'ai eu le même souci

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

Discussions similaires

  1. [PDO] PHP-PDO-MySQL connection 'persistante' et stored-procedures
    Par chrisrol dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/01/2010, 19h18
  2. [MySQL] affichage des données dans un tableau avec mysql et php
    Par fofina dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 19/10/2007, 14h00
  3. Récupération de données ? php/flash/mysql
    Par Angelik dans le forum Flash
    Réponses: 6
    Dernier message: 01/09/2006, 19h06
  4. Réponses: 6
    Dernier message: 06/04/2006, 20h52

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