[php-sql] Modifier plusieurs champs d'une bdd

Fermé
timon44 Messages postés 53 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 17 décembre 2010 - 18 sept. 2009 à 17:45
 ApeKing - 8 nov. 2009 à 22:10
Bonjour, j'ai créé un site web, avec accés sécurisé, donc avec pseudo et mot de passe dans une base de données.
Je souhaiterai faire une page qui permette de modifier ses information (pseudo, mot de passe, nom, prenom etc...)

Donc j'ai commencé à faire ça : (ça marche impec)

<?php
	include('verif.php');

			

	extract($_POST); //permet de convertir les POST directement en variable : $pseudo
			
			
			
	// partie changement de pseudo


	
	if ($pseudo2 != $login) {
				$req = "Select pseudo from membres where pseudo='$pseudo2'";
				$reponse = mysql_query($req);
				$bool=mysql_fetch_array($reponse);
				
				if (!$bool){
						
		$ajout= mysql_query("UPDATE membres SET pseudo='$pseudo2' WHERE id_membre=$id");
						
				//on test si il n'y a pas eu d'erreur pour la requete $ajout
				if($ajout==false){
					echo mysql_error();
					} 
					else {
					echo ('<b>Modification réussie, redirection ...</b>');
					header("Refresh: 1; URL=../index.php?page=compte" );
						}
				} //fin si le pseudo/email nexiste pas
				else {
				echo ('<b> Email ou pseudo déjà éxistant !</b>');
				header("Refresh: 3; URL=../index.php?page=compte" );
			} //fin bool
			} // fin pseudo2 login
			else { header("Refresh: 0; URL=../index.php?page=compte" );}
			
			
	 // fin partie changement de pseudo
	 
	 
			
			
			
			
			
			
			
				?>


Mais je me vois pas, enfin j'ai plutot la flegme ( ! ^^) de faire ça pour chaque champ, c'est à dire, tester si le prenom a changé, si oui etc ... aprés tester si le nom a changé ...

Connaissez vous un meilleur moyen ?
Ou une petite critique de mon code ?

sinon autre petite question, dont je n'ai pas trouvé la réponse ...
Vous voyez ici que j'utilise extract, et comment faire pour l'utiliser tout en protégeant ma base (avec htmlentities par exemple)



Merci beaucoup !
A voir également:

5 réponses

Luan1604 Messages postés 130 Date d'inscription dimanche 6 septembre 2009 Statut Membre Dernière intervention 19 octobre 2009 4
18 sept. 2009 à 18:47
Bonsoir,

Je n'ai pas regardé tout votre code mais je suppose que ce que je vais vous dire vous aidera...

Lors de votre condition, vous mettez ceci:

if ($pseudo2 != $login)


Et si vous faisiez comme ceci ?

if ($pseudo2 != $login or $passe2 != $passe or $nouveautruc != $trucactuel)


Cela vous évitera de faire trente-six mille condition... Ensuite, dans les champs formulaire, pourquoi ne pas les pré-remplir avec les infos déjà présentes ? Si la personne change quelque chose, tant mieux, sinon on fait quand même un update avec les anciennes infos ?

Luan.
0
P@t@ch0n Messages postés 565 Date d'inscription mercredi 15 avril 2009 Statut Membre Dernière intervention 28 décembre 2009 85
18 sept. 2009 à 18:55
Tu ferais bien de virer cet affreux extract().

Si on modifie ton formulaire, crois moi que ton site ne va pas faire long feu lorsqu'il sera en ligne.
0
timon44 Messages postés 53 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 17 décembre 2010 4
18 sept. 2009 à 18:56
oui, pas bête ! ^^
fatigué de la journée, je pense pas toujours aux meilleures soluces !
En plus j'avais déjà prérempli le formulaire ^^

Merci !

Pas d'idée pour le extract ?
0
timon44 Messages postés 53 Date d'inscription dimanche 28 décembre 2008 Statut Membre Dernière intervention 17 décembre 2010 4
18 sept. 2009 à 20:18
Donc voila ce que j'ai fait :

<?php
	include('verif.php');
	
$pseudo2 = mysql_real_escape_string(htmlentities($_POST['pseudo2'], ENT_QUOTES)); 
$email2 = mysql_real_escape_string(htmlentities($_POST['email2'], ENT_QUOTES)); 
$prenom2 = mysql_real_escape_string(htmlentities($_POST['prenom2'], ENT_QUOTES)); 
$nom2 = mysql_real_escape_string(htmlentities($_POST['nom2'], ENT_QUOTES)); 
$numtel2 = mysql_real_escape_string(htmlentities($_POST['numtel2'], ENT_QUOTES)); 
$autre2 = mysql_real_escape_string(htmlentities($_POST['autre2'], ENT_QUOTES)); 

	
// partie changement de pseudo


		if ($pseudo2 != $login ) {
			$req = "Select pseudo from membres where pseudo='$pseudo2'";
			$reponse = mysql_query($req);
			$bool=mysql_fetch_array($reponse);
			
		if (!$bool){
				
		$ajout= mysql_query("UPDATE membres SET pseudo='$pseudo2' WHERE id_membre=$id");
						
			//on test si il n'y a pas eu d'erreur pour la requete $ajout
			if($ajout==false){
				echo mysql_error();
				} 
					else {
					echo ('<b>Votre changement de pseudo a été effectué avec succés</b>');
					}
			} //fin si le pseudo/email nexiste pas
			else {
			echo ('<b> Pseudo déjà éxistant !</b>');
		} //fin bool
		} // fin pseudo2 login
		
		
		
 // fin partie changement de pseudo
			
				
		$sql = "SELECT * FROM membres WHERE id_membre='$id'";
		$req = mysql_query($sql);
		$info = mysql_fetch_array($req);
			
           if( ($email2 != $info['email']) || ($prenom2 != $info['prenom']) || ($numtel2 != $info['numtel']) ||  ($autre2 != $info['autre'])){ 
				
				
			$test="SELECT * FROM membres WHERE id_membre=$id"; 
			$rep=mysql_query($test);
			$bool=mysql_fetch_array($rep);
			
			
						
				$ajout= mysql_query("UPDATE membres 	
										SET email='$email2',prenom='$prenom2',nom='$nom2',numtel='$numtel2',autre='$autre2'
										WHERE id_membre=$id");
					
							
				//on test si il n'y a pas eu d'erreur pour la requete $ajout
				if($ajout==false){
					echo mysql_error();
					} 
					else {
						echo ('<p><b>Modification réussie, redirection ...</b></p>');
						header("Refresh: 1; URL=../index.php?page=compte" );
					}
			
		} // fin si ya eu une modif
		else { //si ya pas de modif
			header("Refresh: 0; URL=../index.php?page=compte" );
		}			
?>


Donc pour le extract, je l'ai remplacé par ce que je fais d'habitude, c'est ce que tu voulais dire P@t@ch0n ?
Le fait que extract ne protége pas ta base ?

merci !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Bonjour, j'ai un problème légèrement similaire: j'ai crée une base de données qui répertories des voitures de lgendes pour un projet scolaire. ma bdd contient trois table:
_la table CAR (code_car, nom_car, constructeur_car...etc
_la table CONSTRUCTEUR
_la table DESIGNER

J'ai inséré un nouveau champs 'pays_car' dans la table CAR, dans la table (+champs) 'CONSTRUCTEUR.code_const', j'ai mis par exemple la donnée 'AM1' qui correspond au constructeur ford.
Dans la table (+champs) 'CAR.code_car', je mets par exemple 'AM11' qui correspond à la 'mustang gt 500', et 'AM12' qui correspond à la 'mustang bullitt'.
Mon problème c'est pour le champs suivant: 'CAR.pays_car', j'aimerais insérer la données 'etats unis' pour les deux voitures en une seule commande.
Sachant que je travaille avec easyphp, et que je fais mets manipulations via une console cmd, je fais la synthax suivante:

update CAR
set pays_car='etats unis'
where code_car='AM1*;

J'aimerais savoir où se trouve mon erreur, car j'ai longtemps cherché, mais en vain. Merci beaucoup
0