Précédent   Forum des professionnels en informatique > PHP > PHP & SGBD
PHP & SGBD Forum d'entraide sur les SGBD avec PHP. Avant de poster : FAQ BDD, toutes les FAQ PHP, cours BDD et sources BDD
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 04/08/2006, 19h41   #1
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
Par défaut insertion non voulue, lors de verifications

Bonjour,

J'ai éssayé de mettre un "anti doublon" lors d'insertion de données via mon formulaire

J'introduis donc des urls dans une base de donnée, & je veux m'assurer que cette url n'éxiste pas déja avant de l'insérer.

Seulement systématiquement quand je charge la page du formulaire pour la premiere fois (base vide) le script envoie directement une valeur vide dans la base. ( pas la deuxieme, vu que la il dit que l'adresse éxiste déja )

mon code ressemble à :

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
 
		<?php 
			mysql_connect(*********) or die(mysql_error());
			mysql_select_db("******") or die(mysql_error());
 
	// Ajout du lien dans la base de donnée
 
$result = mysql_query("SELECT url FROM liens WHERE url = '" . $url . "'") or die(mysql_error());
 
if(mysql_num_rows($result) == 0)
{
       //ajouter l'url
		mysql_query("INSERT INTO liens VALUES('','" . $url . "','" . $nom . "', '" . $type . "', '" . $urlsubmit . "')");
 
      echo 'l\'annuaire <u><b>'.$nom.'</b></u> à été ajouté dans la liste';
}
 
else {
      echo 'L\'annuaire <u><b>'.$nom.'</b></u> est déja présent dans la liste';
 
}
 
		?>
 
	<form action="add-liens.php" method="post" enctype="multipart/form-data">
 
.
.
.
Comment puis-je éviter cet ajout automatique ?

Cordialement
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 19h59   #2
Membre habitué
 
Inscription : octobre 2003
Messages : 102
Détails du profil
Informations personnelles :
Âge : 39

Informations forums :
Inscription : octobre 2003
Messages : 102
Points : 108
Points : 108
Salut,

du peu que je comprenne, tu as mutualisé ton script de sorte qu'il serve a la fois pour afficher le formulaire et a la fois pour l'insert.

Du coup qd tu requete ce script, il est normal que le serveur qu'il fasse ce qu'on lui dit ( ce qu'il y a sur ce script) peut être.

que la partie insertion devrait être conditionnée par la détection du $_POST.

Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
mysql_connect() or die(mysql_error());
mysql_select_db("") or die(mysql_error());
// Ajout du lien dans la base de donnée
if(isset($POST["url"]))
{
	$result = mysql_query("SELECT url FROM liens WHERE url = '" . $url . "'") or die(mysql_error());
	if(mysql_num_rows($result) == 0)
 	{
		//ajouter l'url
		mysql_query("INSERT INTO liens VALUES('','" . $url . "','" . $nom . "', '" . $type . "', '" . $urlsubmit . "')");
		echo 'l\'annuaire <u><b>'.$nom.'</b></u> à été ajouté dans la liste';
	}
	else 
		echo 'L\'annuaire <u><b>'.$nom.'</b></u> est déja présent dans la liste';
}
?>
<form action="add-liens.php" method="post" enctype="multipart/form-data">
 
.
.
__________________
il n'y a pas de sotte existence
gisele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 20h34   #3
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
Salut

je n'ai pas trop compris ce que tu voulais dire avec le POST (noobs powaa)

mais je crois avoir compris que tu me conseilles de splitter les pages

avec une page form.php qui réenvoie sur une page formok.php c'est bien cela ?
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 21h07   #4
Membre habitué
 
Inscription : octobre 2003
Messages : 102
Détails du profil
Informations personnelles :
Âge : 39

Informations forums :
Inscription : octobre 2003
Messages : 102
Points : 108
Points : 108
non du tout,

garde comme çà ne split pas, fait juste comme j'ai fait.

A ce propros je te conseille de prendre l'habitude d'utiliser le super global $_POST.

C'est à dire $_POST["nom_du_champ"] plutot que directement $nom_du_champ.

donc pour le cas ou ton champ texte pur l'url s'appelle url, utiliser $_POST["url'] plutot que $url.

-Cela rend ton code plus portable, notamment pour le cas ou tu devrais t'accomoder d'un serveur avec register globals a off.

-cela permet du premier coup d'oeil, pour quiconque ne connait pas ton script de determiner la provenance de ta variable (parametre passé en methode post).d'ailleurs celame fait pense que j'ai supposé que tu est en post mais si çà se trouve tu utilse la méthode get.
A cet instant précis je ne sais pas pour toi mais l'inconvénient de ne pas utiliser les superglobaux est palpables :-)
=> donc si t'es en get remplace $_POST["url"] par $_GET["url"]
non je déconne, y a un bout de ton formulaire qui dépasse en bas de ton script :-)

-il est accessible de partout, de tous les contextes que ce soit de l'interieur d'une fonction utilisateur, ou d'une classe etc.
__________________
il n'y a pas de sotte existence
gisele est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 22h25   #5
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
ok, je test ca

merci à toi pour toutes ces explications !
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 22h29   #6
Him
Membre régulier
 
Avatar de Him
 
Inscription : février 2006
Messages : 244
Détails du profil
Informations personnelles :
Âge : 27
Localisation : Belgique

Informations forums :
Inscription : février 2006
Messages : 244
Points : 79
Points : 79
Envoyer un message via ICQ à Him
ah au fet,
il faut que j'applique cela sur chacunes des autres variables du formulaire alors ?

Cordialement
Him est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 04/08/2006, 22h35   #7
Membre habitué
 
Inscription : octobre 2003
Messages : 102
Détails du profil
Informations personnelles :
Âge : 39

Informations forums :
Inscription : octobre 2003
Messages : 102
Points : 108
Points : 108
Bah si elles marchaient comme çà non, t'enquiquine pas pour çà mais prend cette habitude parcontre a l'avenir, c'est beaucoup plus parlant (surtout pour les autres) dans un script de voir un $_POST["ma_var"] que de voir débarquer $ma_var de nulle part.

Bref c'est un détail, l'essence de ma solution c'est surtout de tester justement $_POST["url"] avant d'appliquer ou pas la portion de script qui fait l'insertion en base, l'idée étant de s'assurer avant ce travail que le formulaire avait bien été soumis, çà évite l'insertion des le premier acces au script ;-)
__________________
il n'y a pas de sotte existence
gisele est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 13h06.


 
 
 
 
Partenaires

Hébergement Web