formulaire[effacer un email]

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 : formulaire[effacer un email]

par artotal » 11 nov. 2006, 04:00

Merci à toi Ajoloca sa fonctionne je ne connaissait pas

Code : Tout sélectionner

mysql_affected_rows()
Sa retourne le nombre de ligne affecté lors de la dernière opération et sa fonctionne sur un delete, c'est encore un peu flou.
Lss superglobals sont plus haut dans le script
$nom=$_POST['lenom'];
$email=$_POST['mail'];
donc le code :
if (!empty($_POST['lenom']) && !empty($_POST['mail'])) 
{
	$req="DELETE FROM newsletters WHERE nom ='$nom' AND email='$email'";
	$efface=mysql_query($req, $lien);
	echo $req;
	//$enleve=mysql_num_rows($efface);
	if (mysql_affected_rows())
	{
		echo '<p>Vos données ont été définitivement effacer</p>';
	}
	else
	{
		echo '<p>Nous ne trouvons pas vos coordonnées, veuillez réessayez.</p>';
	}
}
[/code]

par Ajoloca » 11 nov. 2006, 03:21

Re,
Je crois avoir compris. D'où sortent '$nom' et '$email' ???
Celles que tu testes c'est '$_POST['lenom']' et '$_POST['mail']' mais tu ne les affectes pas.
De plus tu testes sur l'état de l'exécution de la requète et pas sur le nombre d'eregistrements supprimés. Essaie ceci
if (!empty($_POST['lenom']) && !empty($_POST['mail'])) 
{
   $nom = $_POST['lenom'];
   $email = $_POST['mail'];
    $req="DELETE FROM newsletters WHERE nom ='$nom' AND email='$email'";
    $efface=mysql_query($req, $lien) or die("ERR SQL : <br />" . $req . '<br />' . $mysql_error());
    if ($efface === true && mysql_affected_rows())
    {
        echo 'Vos données ont été définitivement effacer';
        //return false;
    }
    else
    {
        echo 'Nous ne trouvons pas vos coordonnées, veuillez réessayez.';
        //return FALSE;
    }
}

par artotal » 11 nov. 2006, 03:08

ok c'est la requete en "delete" on ne peux pas faire de compte.
donc en faite sa fonctionne, sauf que je n'arrive pas à afficher un message en fonction de la réussite de la requete, j'ai essayer sa et des tas d'autres essai...:
if (!empty($_POST['lenom']) && !empty($_POST['mail'])) 
{
	$req="DELETE FROM newsletters WHERE nom ='$nom' AND email='$email'";
	$efface=mysql_query($req, $lien);
	echo $req;
	//$enleve=mysql_num_rows($efface);
	if ($efface === TRUE)
	{
		echo 'Vos données ont été définitivement effacer';
		//return false;
	}
	else
	{
		echo 'Nous ne trouvons pas vos coordonnées, veuillez réessayez.';
		//return FALSE;
	}
}
Je veux dire qu'il m'affiche toujours

Code : Tout sélectionner

Vos données ont été définitivement effacer
Même quand l'email n'est pas effacé

par Ajoloca » 11 nov. 2006, 02:58

Bonsoir,

J'ai bien l'impression que '$efface' est null à la suite de cette requète
$efface=mysql_query($req, $lien);
Tu devrais tester ce résultat (et tous les autres) avant de poursuivre
$efface=mysql_query($req, $lien) or die("ERR SQL : <br />" . $req . '<br />' . $mysql_error());

par artotal » 11 nov. 2006, 02:44

alors j'ai essayer ça, mais je ne comprend pas pourquoi j'ai un warning ?

Code : Tout sélectionner

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\apachefriends\xampp\htdocs\assoc\suprime_newletter.php on line 163
if (!empty($_POST['lenom']) && !empty($_POST['mail'])) 
{
	$req="delete from newsletters where nom ='$nom' AND email='$email'";
	$efface=mysql_query($req, $lien);
	echo $req;
	if (mysql_num_rows($efface)>0)
	{
		echo 'Vos données ont été définitivement effacer';
		return TRUE;
	}
	else
	{
		echo 'Nous ne trouvons pas vos coordonnées, veuillez réessayez.';
	}
}

formulaire[effacer un email]

par artotal » 11 nov. 2006, 00:41

Bonjour,
je cherche à supprimer un email de ma table, mais je bute sur les tests
C'est à dire que je voudrai tester si l'effacement de l'email à lieu en affichant un message pour assurer l'internaute, le problème est que l'eamil est vérifier valide et le nom aussi, rien ne s'affiche, et cela même si ce n'est pas effacer ?
visible ici :
http://creatif-web.be/assoc/suprime_newletter.php
<?php 
$nom=$_POST['lenom'];
$email=$_POST['mail'];
   $valid = "#^[^-_\.][a-z0-9-_\.]+[^-_\.]@[^-_\.][a-z0-9-_\.]+[^-_\.]\.[a-z]{2,4}$#";
        if(($email) && !(preg_match($valid, $email))) 
        {
            print '<p style="color:red;">L\'adresse électronique saisie est invalide, 
Veuillez réessayer.</p><br />
<fieldset id="desinscription"><em class="legend">Désinscription</em>
	<form action="'.$_SERVER['PHP_SELF'].'" method="POST" name="desinscription">
	<p><em>Votre pseudo:<input name="lenom" type="text" id="lenom" /></em></p>
	<p><em>Votre email:<input name="mail" type="text" id="mail" /></em></p>
	<input name="envoi" type="submit" value="envoyer" name="Submit" id="envoie_suppr" />
	</form>
	</fieldset><br />';
        }
if (!empty($_POST['lenom']) && !empty($_POST['mail'])) 
{
	$req="delete from newsletters where nom = '$nom' and email='$email'";
	$efface=mysql_query($req);
	return $efface;
	if ($efface == 1)
	{
		echo 'Vos données ont été définitivement effacer';
	}
	elseif ($efface == 0)
	{
		echo 'Nous ne trouvons pas vos coordonnées, veuillez réessayez.';
	}
}
else
{
	echo '<p class="dossier">Vous êtes sur le point de vous désabonner et de retirer votre adresse email de notre base.

<a href="javascript:void(0);" onclick="afficher(\'desinscription\', 

\'generer\'); return false;" id="generer">Cliquer ici pour la supprimer maintenant.</a></p>';
}
 ?>
<br />
<fieldset id="desinscription" style="display:none;"><em class="legend">Désinscription</em>
	<form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="POST" name="desinscription">
	<p><em>Votre pseudo:<input name="lenom" type="text" id="lenom" /></em></p>
	<p><em>Votre email:<input name="mail" type="text" id="mail" /></em></p>
	<input name="envoi" type="submit" value="envoyer" name="Submit" id="envoie_suppr" />
	</form>
	</fieldset>
Merci