Forum-webmaster
Technique - programmation => PHP / MySQL => Message commencé par: GoldRazor le le 02-11-2007 a 01:54:40

Titre: [résolu]probleme de syntaxe if dans mon code
Posté par: GoldRazor le le 02-11-2007 a 01:54:40

Bonjour,

Je ne trouve pas la syntaxe correcte pour faire marcher mon code.

Regardez le code ci dessous :

Je n'arrive pas à resoudre la premiere ligne.


Code:
if($motclef existe dans la base recherche colonne mots ){
mysql_query("UPDATE `recherche` SET `nbr`=`nbr`+1 WHERE `mots`= $motclef");
}
else
{
mysql_query("INSERT INTO recherche(`mots`,`date`,`nbr`) VALUES('".$_GET['mots']."','".date('U')."','1')");
}


Si vous pensez avoir la solution, n'hésitez pas.

Merci

Titre: Re:probleme de syntaxe if dans mon code
Posté par: lefou le le 02-11-2007 a 10:52:41

Il faudrait que tu fasses une première requête avec un count(nbre d'enregistrements) pour voir si le mot clé est présent dans la base.
Ensuite, si le résultat est 0 alors tu génères ta requête d'insertion.

Titre: Re:probleme de syntaxe if dans mon code
Posté par: MarvinLeRouge le le 02-11-2007 a 11:32:28

Pas la peine :

1) tu fais ton update TOUJOURS
2) tu récupères le nombre de lignes affectées (potentiellement 0) avec mysql_affected_rows (de mémoire le nom de la fonction, vérifie)
3) Si ce nombre est 0, tu déclenches l'insertion

Et voilou

Titre: Re:probleme de syntaxe if dans mon code
Posté par: lefou le le 02-11-2007 a 12:14:14

Citation de: MarvinLeRouge le le 02-11-2007 a 11:32:28
Pas la peine :

1) tu fais ton update TOUJOURS
2) tu récupères le nombre de lignes affectées (potentiellement 0) avec mysql_affected_rows (de mémoire le nom de la fonction, vérifie)
3) Si ce nombre est 0, tu déclenches l'insertion

Et voilou


La différence entre cette solution et la mienne est le nombre de requêtes : tu en fais 3 au lieu de 2 donc temps d'exécution plus long.

Titre: Re:probleme de syntaxe if dans mon code
Posté par: GoldRazor le le 02-11-2007 a 14:27:19

merci pour vos propositions.

Donc voici la solution


Code:
//Requête SQL
$req = mysql_query("SELECT * FROM recherche WHERE 'mots' = $motclef") or die(mysql_error());

// on compte le nombre d'entrée avec le mot clef
$num = mysql_num_rows($req);

//Si le nombre d'entrée est 1, on modifie l'entrée
if($num == 1)
{
mysql_query("UPDATE `recherche` SET `nbr`=`nbr`+1 WHERE `mots`= '$motclef'");
}
//S'il est égal à 0, on créer l'entrée
else
{
mysql_query("INSERT INTO recherche(`mots`,`date`,`nbr`) VALUES('".$_GET['mots']."','".date('U')."','1')");
}


;)

Titre: Re:[résolu]probleme de syntaxe if dans mon code
Posté par: lefou le le 02-11-2007 a 15:23:56

Tu peux aussi faire ta requête de la façon suivante :

Code:
$req = mysql_query("SELECT count(id) as total FROM recherche WHERE mots = '".$motclef."'",$db);
// $db est l'identifiant de connexion à ta database
// on suppose que id est ta clé primaire
$row = mysql_fetch_array($req);
if($row['total'] != 0){
// requête d'update
}else{
// requête d'insertion
}
mysql_free_result($req);

Titre: Re:[résolu]probleme de syntaxe if dans mon code
Posté par: GoldRazor le le 02-11-2007 a 21:00:53

Merci beaucoup pour vos interventions, j'espère que ca aidera d'autres galériens comme moi.

;)


Forum-webmaster | Actionné par YaBB SE
© 2001-2003, YaBB SE Dev Team. Tous droits réservés.