Page 1 sur 1

ajout dans bdd avec fonction

Posté : 01 déc. 2013, 13:40
par neomega
bonjour,

je suis entrain de cree un espace ou j'affiche mes code promo sur mon site et je me heurte a un souci pour l'ajout de ceux ci
j'espère que vous pourrais m'aider

Merci beaucoup a tout ce qui essayerons

mes DEFINE :
// base sql
define('SELECT', 'SELECT ');
define('UPDATE', 'UPDATE ');
define('INSERT', 'INSERT INTO ');
define('DELETE', 'DELETE ');
define('ALL', '*');

//table promo
define('PROMO', ' FROM promo');
define('PROMOZ', 'promo');
define('CPROMOLISTE', ' WHERE id_users=:id ORDER BY date_fin DESC');
ma fonction :
// La classe liste Code promo
class Cpromo {
	
	
	// liste des code promo
	// liste a vide
	// Dans une boucle 
	//		retourne la liste des codes promo 
	// Sinon
	// 		retourne vous n'avez aucun message
	public static function liste($id) {
		$liste = '';
		$resultat = Bdd::connectBdd()->prepare(SELECT.ALL.PROMO.CPROMOLISTE);
		$resultat -> bindParam(':id', $id, PDO::PARAM_INT, 11);
		$resultat -> execute();
		while($donnee = $resultat -> fetch(PDO::FETCH_ASSOC)) {
		if($donnee['etat'] === '1') {
				$image = '<img src="'.URLSITE.'/design/img/on.png" align="absmiddle">';
			}
			else {
				$image = '<img src="'.URLSITE.'/design/img/off.png" align="absmiddle">';
			}
			$liste .= '<div class="list">
						<div class="col1">'.$image.'</div>
						<div class="col2">'.$donnee['id'].'</div>
						<div class="col3">'.$donnee['code'].'</div>
						<div class="col4">'.$donnee['titre'].'</div>
						<div class="col5">'.$donnee['date_fin'].'</div>
						<div class="col6"><a href=modif_promo.php?idpromo='.$donnee['id'].'>modifier</a></div>
					   </div>';
					
					
		}
		if(!empty($liste)) {
			return $liste;
		}
		else {
			return '<div class="list">Vous n\'avez crée aucun code promotion actuellement</div>';
		}
	}




	// creation du code promo
	public static function addpromo($id_users, $pseudo, $url, $code, $titre, $date_fin, $resume, $etat) {
		$resultat = Bdd::connectBdd()->prepare(INSERT.PROMOZ);
		$resultat -> bindParam(':id_users', $id_users);
		$resultat -> bindParam(':pseudo', $pseudo);
		$resultat -> bindParam(':url', $url);
		$resultat -> bindParam(':code', $code);
		$resultat -> bindParam(':titre', $titre);
		$resultat -> bindParam(':date_fin', $date_fin);
		$resultat -> bindParam(':resume', $resume);
		$resultat -> bindParam(':etat', $etat);
		$resultat -> execute();
	}

} // Fin de la classe liste code promo
La fonction liste marche parfaitement

c'est la fonction addpromo qui me pose probleme


et voici le formulaire :
<?php session_start();
include('header.php');
include('menu.php');


echo '<div class="add_cpromo">
<div class="title">ajouter un code promotionnel</div>
<form action="" method="post">';
if(!empty($_POST['add_promo'])) {
	extract($_POST);
	echo Cpromo::addpromo($id_users, $pseudo, $url, $code, $titre, $date_fin, $resume, $etat);

echo 'votre id est'.$id_users.'';	
	
	}
echo '

<input class="input" type="hidden" value="'.Membre::info($_SESSION['id'], 'id').'" name="id_users">
<div class="clear">
<div class="label">pseudo: </div>
<input class="input" type="text" name="pseudo">
</div>

<div class="clear">
<div class="label">url : </div>
<input class="input" type="text" value="ex: http://www.monsite.fr " name="url" >
</div>

<div class="clear">
<div class="label">code promo : </div>
<input class="input" type="text" name="code">
</div>

<div class="clear">
<div class="label">titre</div>
<input class="input"  type="text" name="titre">
</div>

<div class="clear">
<div class="label">date de fin </div>
<input class="input" type="text" value="JJ/MM/AAAA " name="date_fin">
</div>

<div class="clear">
<div class="label">resumé: </div>

<textarea name="resume" ROWS=5 COLS=22>

</textarea>
</div>

<input class="input" type="hidden" value="1" name="etat">
<div class="clear">
<input type="submit" value="Valider votre inscription"  name="add_promo" class="button">
</div>
</form> 
</div>';

include('footer.php');
?>

et voici le code erreur


Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1064 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 '' at line 1' in C:\wamp\www\espace-membre\function.php on line 1392 correspond a la ligne $resultat -> execute();

( ! ) PDOException: SQLSTATE[42000]: Syntax error or access violation: 1064 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 '' at line 1 in C:\wamp\www\espace-membre\function.php on line 1392
correspond a la ligne $resultat -> execute();

Re: ajout dans bdd avec fonction

Posté : 01 déc. 2013, 14:18
par neomega
c'est bon il me manquais :

define('ADPROMO', ' (id_users, pseudo, url, code, titre, date_fin, resume, etat) VALUES (:id_users, :pseudo, :url, :code, :titre, :date_fin, :resume, :etat)');
et ajouter ceci dans la requette :
$resultat = Bdd::connectBdd()->prepare(INSERT.PROMOZ.ADPROMO);