[RESOLU] SELECT COUNT substr_count tester présence d'une référence

Eléphanteau du PHP | 33 Messages

27 juin 2013, 18:39

Bonjour,

J'ai un formulaire d'ajout qui me renvoi une erreur SQL puisque mon champ (reference) de table est: unique. C'est normal si ma variable (reference) existe déjà dans ma table. Ce que je souhaite savoir c'est s'il y a un moyen en php de vérifier cette présence dans ma table ou bien dois-je utiliser une deuxième requête avec un sélect count.
$insertSQL = sprintf("INSERT INTO articles (reference, prix, designation, date, famillesID) VALUES (%s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['reference'], "text"),
                       GetSQLValueString($_POST['prix'], "double"),
                       GetSQLValueString($_POST['designation'], "text"),
					   'NOW()',
                       GetSQLValueString($_POST['famillesID'], "int"));

Je viens de m'apercevoir que substr_count pourrait faire l'affaire mais, je ne sais comment l'utiliser.

Merci de votre suggestion.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

27 juin 2013, 20:43

salut,


soit tu tente en traitant l'exception soit tu fait un count il n'y a pas d'autre solution ;)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 33 Messages

28 juin 2013, 20:55

Bonsoir,

Je te remercie alors j'ai fais:
mysql_select_db($database_connexionMysql, $connexionMysql);
$query_rsArticles = "SELECT COUNT(*) AS cnt FROM articles WHERE reference = ('reference')";
$rsArticles = mysql_query($query_rsArticles, $connexionMysql) or die(mysql_error());
$row_rsArticles = mysql_fetch_assoc($rsArticles);
$totalRows_rsArticles = $row_rsArticles['cnt'];
cela fonctionne bien mais j'ai 2 requêtes dont 1 avec insertion de photo et l'autre sans et je ne trouve pas comment imbriquer cette condition pour les 2 requêtes:
if(($totalRows_rsArticles)>0)
	{
	echo "La référence existe déjà";
	}
J'ai tout essayé (ou presque) mais en vain.

Eléphanteau du PHP | 33 Messages

29 juin 2013, 17:05

Bonjour,

J'ai 2 requêtes dont 1 avec insertion de photo et l'autre sans et je ne trouve pas comment imbriquer cette condition supplémentaire pour les 2 requêtes:
if condition 1
{
if condition 2
{
requête 1 (sans photo)
}
else 
{
requête 2 (avec photo)
}}
Je souhaite donc ajouter à mes conditions 1 et 2 condition 3 avec notamment && J'ai tout essayé mais en vain. Si vous pouviez me mettre sur la voie.
Merci.

J'ai réessayé de cette façon:
if condition 1 && condition 3
{
if condition 2
{
requête 1 (sans photo)
}
else 
{
requête 2 (avec photo)
}}
avec l'erreur query was empty

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

29 juin 2013, 20:18

Poste le code parce que la tous ce que je peux te dire c'est que tu rentre dans un cas non prévue qui fait que ta variable ne contient pas de requête.
Mais je suppose que tu le savais déjà :mrgreen:

L'art de la boule de cristal c'est pas trop mon truc ;)

@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 33 Messages

29 juin 2013, 21:39

/********************************************************************************************/
mysql_select_db($database_article_recherche, $article_recherche);
$query_rsArticles = "SELECT COUNT(*) AS cnt FROM articles WHERE reference = ('reference')";
$rsArticles = mysql_query($query_rsArticles, $article_recherche) or die(mysql_error());
$row_rsArticles = mysql_fetch_assoc($rsArticles);
$totalRows_rsArticles = $row_rsArticles['cnt'];
/*********************************************************************************************/


if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "form1")) && (($totalRows_rsArticles)<1)
	{
if(($totalRows_rsArticles)<1)
	{
	if($_FILES['photo']['error']==0)
	{
	//copie de la photo dans le répertoire /photos/
	copy($_FILES['photo']['tmp_name'],"../photos/".$_FILES['photo']['name']);
	//enregistrement des informations AVEC le nom de la photo
$etat = (isset($_POST['etat']) && $_POST['etat'] == 'on') ? 1 : 0;
  $insertSQL = sprintf("INSERT INTO articles (reference, prix, designation, photo, date, famillesID, etat) VALUES (%s, %s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['reference'], "text"),
                       GetSQLValueString($_POST['prix'], "double"),
                       GetSQLValueString($_POST['designation'], "text"),
					   GetSQLValueString($_FILES['photo']['name'], "text"),
					   'NOW()',
                       GetSQLValueString($_POST['famillesID'], "int"),
					   $etat);
	}else
	{
	
	//enregistrement des informations SANS le nom de la photo	
$etat = (isset($_POST['etat']) && $_POST['etat'] == 'on') ? 1 : 0;	
	$insertSQL = sprintf("INSERT INTO articles (reference, prix, designation, date, famillesID, etat) VALUES (%s, %s, %s, %s, %s, %s)",
                       GetSQLValueString($_POST['reference'], "text"),
                       GetSQLValueString($_POST['prix'], "double"),
                       GetSQLValueString($_POST['designation'], "text"),
					   'NOW()',
                       GetSQLValueString($_POST['famillesID'], "int"),
					   $etat);
					   
	}//fin du test if($_FILES['photo']['error']==0)