par
HUE Christophe » 31 janv. 2007, 23:58
Salut a toi,
T’a plein de façon de faire...
Mais avant tout, et le plus propre est de modifier ta table pour éviter les doublons. (Normalement, elle devrait déjà avoir une clé primaire).
Exécute le SQL suivant pour éviter les doublons :
Code : Tout sélectionner
CREATE UNIQUE INDEX test_i1 on test (email, site_id)
ou CREATE UNIQUE INDEX test_i2 on test (email) /*Un mail unique dans la table*/
Ensuite, le code...
Simple et sans message et sans contrôle!@mysql_query("INSERT INTO test(email,site_id) VALUES('$email','$siteId')");
Avec suppression force avant l'insertion :
mysql_query("DELETE FROM test WHERE email='$email' AND site_id='$siteId'");
mysql_query("INSERT INTO test(email,site_id) VALUES('$email','$siteId')");
Avec mise a jour (Uniquement si on veux changer le site_id d'un mail. Cas du mail unique) :
//selection d'existance
mysql_query("SELECT email, site_id FROM test WHERE email='$email'");
//test si on trouve un enregistrement
if($row = mysql_fetch_array($result, MYSQL_ASSOC)){
//enregistrement trouvé - mise à jour
mysql_query("UPDATE test SET site_id='$siteId' WHERE email='$email'");
}else{
//email inconnu - ajout
mysql_query("INSERT INTO test(email,site_id) VALUES('$email','$siteId')");
}
Pour lire un select:
mysql_query("SELECT email, site_id FROM test");
echo "<table>
<tr><td>Email</td><td>Site ID</td></tr>\n";
//Boucle sur les enregsitrements et place les lignes dans le tableau $row
while ($row = mysql_fetch_array($result, MYSQL_ASSOC)){
echo "\t<tr><td>".$row["email"]."</td><td>".$row["site_id"]."</td></tr>\n";
}
echo "</table>\n";
Attention, pas de copier coller sans comprendre.
Je n'ai ni tester ni relu... donc quelle que erreur possible!
_______________________
Utile pour être compris : Convention de codage bien fait :
http://www.gaidot.net/regis/publication ... le.fr.html
(La page semble être accesible que de temps en temps - domage)