Page 1 sur 1

Tester si la valeur d'un champ est existante

Posté : 31 janv. 2007, 22:57
par Arthalion
Bonjour,

je cherche à insérer une date si cette date n'existe pas déjà dans la DB. Je pensais que ça allait être facile mais loin de là, apparemment ...

je vous mets mon code :
$dateverif = mysql_query("select * from parties where DATE like '".$datemysql."'");
		echo var_dump($dateverif);
				
		while($dateres = mysql_fetch_array($dateverif)){
			if (!$dateres['RESUME']) mysql_query("INSERT INTO parties (DATE) VALUES ('".$datemysql."')");
				else $datefin = $dateres['DATE'];
			$resume = $dateres['RESUME'];
			$vient = $dateres['IDVIENT'];
			$venu = $dateres['IDVENU'];
					echo $dateres['DATE'];
		}
Avec var_dump() j'affiche mon mysql_query() qui me retourne une ressource , jusque là tout va bien. Cependant lorsque je demande l'affichage d'un var_dump() d'un des champs de la DB, rien ne se passe, je suppose que c'est normal puisque la date avec laquelle je teste, n'existe pas dans la DB. Mais c'est justement pour ça que je veux l'ajouter.

Ma question : Comment faire pour ajouter une valeur d'un champ une fois et une seule lorsqu'elle n'existe pas dans la DB ?

Merci par avance.

Posté : 31 janv. 2007, 23:47
par Ultim4T0m
Bonsoir,

Tout d'abord, pourquoi utiliser un LIKE alors qu'apprement, un = suffirait (je doute que les jokers % se trouvent dans ta variable $datemysql)

Ensuite :
// Remplaces
!$dateres['RESUME']
// Par
!empty($dateres['RESUME'])
En effet, j'imagine que $dateres['RESUME'] n'est pas un booléen, ca n'a donc aucun sens de faire !$dateres['RESUME']. En testant avec empty, on vérifie si la la variable est vide ou non.

Je ne suis pas sûr que cela fonctionne, le plus propre serait de calculer le nombre de lignes retournées par la requête, et en fonction de celui-ci, insérer les données ou non. Pour cela, un petit tour du côté de mysql_num_rows, ou un SELECT COUNT(*) par exemple pourrait faire l'affaire.

Posté : 01 févr. 2007, 00:11
par jojolapine
fait attention, ton champ date est un nom de fonction mysql:
http://dev.mysql.com/doc/refman/5.0/fr/ ... #id3014808
tu devrais en conséquence changer de libéllé pour ce champ, ou alors l'entourer de `

Posté : 01 févr. 2007, 11:32
par Arthalion
Merci pour les conseils/réponses, ça fonctionne, je vais mettre mon petit tag résolu ;)