Page 1 sur 1

Vérification dans la table

Posté : 13 oct. 2013, 18:12
par Nedek
Bonjour à tous. Je suis à la recherche d'une solution. (C'est pour un exo de cours)
J'ai dans une page un champ ou l'utilisateur peut rentrer le nom d'un légume à ajouter dans la table. J'aimerais vérifier si le nom que l'utilisateur rentre n'existe pas dans la table et s'il n'existe pas, qu'il soit ajouter à cette table. Voilà ce que j'ai fait qui ne marche pas (L'erreur est peut être stupide mais en tant que débutant, je ne vois pas du tout)
<?php require 'includes/connect.php' 
$nomLegume=$_POST['nomLegume'];

$legume="SELECT nomLegume FROM legume";
$result = $connection -> query ($legume);
$tableau = $result -> fetchAll (PDO::FETCH_OBJ);

foreach ($tableau as $ligne)
{
	if (.nomLegume=$nomLegume)
	{
		alert "Ce nom existe déjà";
	}
	else{
		$ajout="INSERT INTO legume  (nomLegume) VALUES ( ".$nomLegume.")"
		$result = $connection -> query ($ajout);
		alert "Votre legume à été ajouté";
	}
};


?>
PS: Ma connection à la base fonctionne bien, et le $_POST['nomLegume'] vient d'une autre pas d'un champ name:nomLegume.
Merci pour votre aide ;)

Re: Vérification dans la table

Posté : 13 oct. 2013, 18:36
par computarelier
Salut,

As tu une erreur ? Si tu n'en as pas :
 error_reporting(E_ALL); 
 ini_set("display_errors", 1); 
if (.nomLegume=$nomLegume)
1/ En php les variables commencent par un $.
2/ La comparaison est avec ==. Là tu fais une affectation.

Alert ? Non non non... Essaye avec un echo ou un print ;-)

Bon courage !

Re: Vérification dans la table

Posté : 13 oct. 2013, 19:07
par Nedek
Bien vu ;)
J'ai encore un peu de mal...
Avec les modifications, j'ai toujours la même erreur :
Parse error: syntax error, unexpected '$nomLegume' (T_VARIABLE) in C:\xampp\htdocs\tp3\ajouterLegume.php on line 2

Re: Vérification dans la table

Posté : 13 oct. 2013, 19:37
par computarelier
Ah oui, tu as oublié de fermer ta première ligne avec ; :-)

(prends un IDE un peu sympa... Ce genre d'erreur ne t'arriverai pas avec un Netbeans ou autre !)

Re: Vérification dans la table

Posté : 13 oct. 2013, 20:24
par Nedek
Oh la la!! Quel boulet :/
Merci, j'ai maintenant la même erreur avec $result :'(

Pour netbeans, je l'utilise quand je ne suis pas en local, mais quand je veux l'utiliser en local, j'arrive pas à le configurer comme il faut...

Re: Vérification dans la table

Posté : 13 oct. 2013, 20:27
par Nedek
Autant pour moi, la ligne d'avant n'était pas fermé non plus...
Par contre, si le légume n'est pas dans la table, il ne s'ajoute pas avec mon else...
Merci beaucoup pour ton aide ;)

Re: Vérification dans la table

Posté : 13 oct. 2013, 21:06
par computarelier
1. Rajoute un try/catch pour voir les erreurs.
2. (Revois comment on fait une requête d'insert ;-))

Bon courage !

Re: Vérification dans la table

Posté : 14 oct. 2013, 09:31
par antoine94200
if (.nomLegume=$nomLegume)
        {
                alert "Ce nom existe déjà";
        }
        else{
                $ajout="INSERT INTO legume  (nomLegume) VALUES ( ".$nomLegume.")"
je ne suis pas sur pour .nomLegume , j'aurai plutot mis $ligne["nomLegume"].

.nomLegume=$nomLegume là non , trouve comment faire une comparaison et non une affectation

[php>$ajout="INSERT INTO legume (nomLegume) VALUES ( ".$nomLegume.")"[/php]
à moins que ton champ soit numérique, il te manque quelque chose autour de ".$nomLegume." , comme une quote par exemple...

Sinon tu peux aussi ajouter un where dans ton premier select et ne pas faire de foreach...

Bon courage

Re: Vérification dans la table

Posté : 14 oct. 2013, 13:32
par Nedek
Dans l'énoncé, il nous demande de faire comme ça pour la première requête.

Mon code après vos remarque (j'essai de les mémoriser pour éviter de les reproduire)
<?php require 'includes/connect.php';
$nomLegume=$_POST['nomLegume'];

$legume="SELECT nomLegume FROM legume";
$result = $connection -> query ($legume);
$tableau = $result -> fetchAll (PDO::FETCH_OBJ);

foreach ($tableau as $ligne) {
	if ($ligne["nomLegume"]==$nomLegume)
	{
		echo "<script>alert(\"Le légume existe déjà.\")</script>"; 
	}
	else{
		$ajout="INSERT INTO legume  (nomLegume) VALUES ( '".$nomLegume."')";
		$resultAjout = $connection -> query ($ajout);
		echo "<script>alert(\"Votre légume à été ajouté.\")</script>"; 
	}
};
?>
Ca me met cette erreur maintenant :
Fatal error: Cannot use object of type stdClass as array in C:\xampp\htdocs\tp3\ajouterLegume.php on line 9

Et j'ai vu sur un autre forum qu'il faudrait plutôt utiliser fetch_assoc, mais quand je le fait ça me rentre le nom autant de fois que j'ai d'entrées dans ma table (même s'il existe déjà d'ailleurs)

Re: Vérification dans la table

Posté : 14 oct. 2013, 13:44
par computarelier
Hellow,

Regarde :
$tableau = $result -> fetchAll (PDO::FETCH_OBJ);
...
if ($ligne["nomLegume"]==$nomLegume)
Un fetchAll avec pour paramètre PDO::FETCH_OBJ tu l'exploites comment après ?

Bon courage,