if ($nom==$donnees['nom'])

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : if ($nom==$donnees['nom'])

par iclo » 02 mars 2006, 00:12

En gros ça donnerait :
$sql= "INSERT INTO referer SET ";
    $sql.="nom='$nom', ";
    $sql.="nb_enregistrement='1', ";
    $sql.="referer='http://". $nom ."', ";
    $sql.="lien='$lien', ";
    $sql.="url='$url'";

    $res=mysql_query($sql);  
 if (mysql_errno() == 0)
   print "Insertion Effectuée";
else {
   if (mysql_errno() == 1062)
       print "Duplication";
    else
       print "Autre erreur: ".mysql_error();
}


Quelques liens pour la route :
http://be.php.net/mysql_errno
http://dev.mysql.com/doc/refman/5.0/en/ ... erver.html

par iclo » 01 mars 2006, 23:55

Si tu sollicites la Db ? Tu as un serveur qui pédale pour rien. Bien-sûr un petit select inutile, ce n'est pas un drame, mais il faut quand même toujours avoir l'optimisation à l'esprit.
(Si tout le monde avait cette démarche, les hébergements grands publiques rameraient moins)
En soignant ses scripts, on arrive facilement à réduire de manière significative le nombre d'appel à la base de donnée.

par gaet666 » 01 mars 2006, 22:20

Salut,

Ca fait quoi si on solicite la bd ?

Sinon, voici le code que j'ai essayé et qui ne fonctionne pas :? :?
if (isset($_POST["envoi"])) {
	$nom=$_POST["nom"];
	$url=$_POST["url"];
	$lien=$_POST["lien"];

$resultat = mysql_query("SELECT * FROM referer WHERE nom='$nom'");

if (mysql_num_rows($resultat) == 1) { 
}
else
{ 

	$sql= "INSERT INTO referer SET ";
	$sql.="nom='$nom', ";
	$sql.="nb_enregistrement='1', ";
	$sql.="referer='http://". $nom ."', ";
	$sql.="lien='$lien', ";
	$sql.="url='$url'";

	$res=mysql_query($sql);  
}
}	
What's the problem ?

Ciao,

Gaetan

par iclo » 01 mars 2006, 22:04

Il vaudrait mieux éviter de soliciter inutilement le serveur de base de donnée avec un select inutile.
Il vaut mieux définir dans la structure de la table le champ concerné comme unique. Et faire directement l'insertion en testant le code retourné par le "mysql_query()" pour voir si il y a une duplication de clé ou si tout c'est bien déroulé.
Tu trouveras plus d'info dans la doc, notamment dans la liste de code d'erreur. de mémoire c'est le code 1022

par mario » 01 mars 2006, 21:58

exemple:
$resultat = mysql_query("SELECT * FROM referer WHERE nom='$nom'"); 

if (mysql_num_rows($resultat) === 1) {

   // SALUT

}
else
{
   // INSERT
}

par gaet666 » 01 mars 2006, 21:51

SAlut,

Tu sais pas un peu plus m'éclairer sur le mysql_num_rows plz, je comprends pas trop le lien que tu m'a donné :?

Re: if ($nom==$donnees['nom'])

par mario » 01 mars 2006, 21:43

$resultat = mysql_query("SELECT * FROM referer WHERE nom='$nom'");
Que dois-je changer ???
juste après celle ligne, tu peux utiliser mysql_num_rows pour connaitre le nombre de résultat.

si le nombre de résultat est égal à 1, tu affiches 'salut'
sinon tu fais l'INSERT.

if ($nom==$donnees['nom'])

par gaet666 » 01 mars 2006, 21:38

salut,
j'ai un petit probleme. Comme vous pouvez le voir dans le titre, mon but est de vérifier si une donnée est déja dans la table avant de l'ajouter.

Voici mon code:
if (isset($_POST["envoi"])) {
	$nom=$_POST["nom"];
	$url=$_POST["url"];
	$lien=$_POST["lien"];

$resultat = mysql_query("SELECT * FROM referer WHERE nom='$nom'");
while ($donnees = mysql_fetch_array($resultat)){
 
if ($nom==$donnees['nom']){
echo 'salut' ;
}
else{

	$sql= "INSERT INTO referer SET ";
	$sql.="nom=$nom, ";
	$sql.="nb_enregistrement='1', ";
	$sql.="referer='http://". $nom ."', ";
	$sql.="lien='$lien', ";
	$sql.="url='$url'";

	$res=mysql_query($sql);  
}
}	
}	
Je tente de vérifier si la variable $nom se trouve deja dans la table et si non, il faut l'ajouter. Mon code ne fonctionne pas, ca n'affiche pas mon "salut", donc le if ne fonctionne pas...

Que dois-je changer ???

Ciao et merci d'avance.

Gaetan