Voilà, ce que je voudrais faire c'est que si mysql ne trouve pas un enregistrement, il le crée, par contre si l'enregistrement existe, il incrémente juste de 1 un champ.
J'ai bien une solution actuellement, mais elle demande 2 query vers la base et ça m'étonne que mysql n'ait pas une solution miracle pour ça faire tout seul.
en sachant que tout les champs sont des int ou dérivés (tinyint et smallint); que champs1 et champs2 ensemble sont la clé primaire et donc le champs d'unicité de ma table. Que champs3 a comme valeur par défaut 1, ce qui explique que je ne l'ajoute pas dans l'insertion
Modifié par Lothindil (21 Oct 2010 - 12:43)
J'ai bien une solution actuellement, mais elle demande 2 query vers la base et ça m'étonne que mysql n'ait pas une solution miracle pour ça faire tout seul.
$mysql_quete=mysql_query("select * from table where champs1=valeurs1 AND champs2=valeurs2");
if(mysql_num_rows($mysql_quete)!=0)
{
if($mysql=mysql_fetch_assoc($mysql_quete))
{
$quantite=$mysql['champs3'];
$quantite=$quantite+1;
$sql_histo="UPDATE `table` SET `champs3`=".$quantite." WHERE champs1=valeurs1 AND champs2=valeurs2";
}
}
else
{
$sql_histo="INSERT INTO table (champs1, champs2) VALUES (valeurs1,valeurs2)";
}
en sachant que tout les champs sont des int ou dérivés (tinyint et smallint); que champs1 et champs2 ensemble sont la clé primaire et donc le champs d'unicité de ma table. Que champs3 a comme valeur par défaut 1, ce qui explique que je ne l'ajoute pas dans l'insertion
Modifié par Lothindil (21 Oct 2010 - 12:43)