8719 sujets

Développement web côté serveur, CMS

Bonjour,

Je vous expose mon problème:
J'ai deux table, une pour les particulier et une pour les pro. Sur ma page de login je souhaite aller chercher des informations en fonctions de la présence d'un utilisateur sur une ou l'autre des tables.
Comment dois-je proceder?
j'ai essayer avec un simple if/else mais rien de concluant.
je vous colle à la suite mes deux code le premier qui fonctionne mais ne marche pas pour la recherche multi-table. Et le second que j'ai essayer de bidouiller mais qui lui ne fonctionne pas.

Le premier:


<?php

 try
{
	$bdd = new PDO('mysql:host=localhost;dbname=mplace', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
		
}

			$pass_hache = sha1(htmlspecialchars($_POST['pass']));

			$req = $bdd->prepare('SELECT id FROM infosclientspart WHERE mail = :mail AND pass = [langue]ass');
			$req->execute(array(
  				    'mail' => htmlspecialchars($_POST['mail']),
   					'pass' => $pass_hache,
					)) or die(print_r($bdd->errorInfo())) ;;

				$resultat = $req->fetch();

				$req->closeCursor();

					if (!$resultat)
					{
    
					echo 'Mauvais identifiant'; 

					}
					else
					{		
					session_start();
    				$_SESSION['id'] = $resultat['id'];		
	
					$req = $bdd->prepare('SELECT pseudo, mail, sname, name FROM infosclientspart WHERE id = :id') ;
					$req->execute(array('id' => $_SESSION['id'])) or die(print_r($bdd->errorInfo())) ;;

					$resultat = $req->fetch();
	
					$_SESSION['pseudo'] = $resultat['pseudo'];
					$_SESSION['mail'] = $resultat['mail'];
					$_SESSION['sname'] = $resultat['sname'];
					$_SESSION['name'] = $resultat['name'];

					header('Location: Index.php');	 

					}

					$req->closeCursor();

?>





Le second qui me renvoi une erreur ( Array ( [0] => 00000 [1] => [2] => ) 1)



<?php

 try
{
	$bdd = new PDO('mysql:host=localhost;dbname=place', 'root', '');
}
catch(Exception $e)
{
        die('Erreur : '.$e->getMessage());
		
}

			$pass_hache = sha1(htmlspecialchars($_POST['pass']));

			$req = $bdd->prepare('SELECT id FROM infosclientspart WHERE mail = :mail AND pass = [langue]ass');
			$req->execute(array(
  				    'mail' => htmlspecialchars($_POST['mail']),
   					'pass' => $pass_hache,
					)) or die(print_r($bdd->errorInfo())) ;;

				$resultat = $req->fetch();

				$req->closeCursor();

					if (!$resultat)
					{
    
							$pass_hache = sha1(htmlspecialchars($_POST['pass']));

							$req = $bdd->prepare('SELECT id FROM infosclientspro WHERE mail = :mail AND pass = [langue]ass');
							$req->execute(array(
  							    'mail' => htmlspecialchars($_POST['mail']),
   								'pass' => $pass_hache,
								)) or die(print_r($bdd->errorInfo())) ;;

								$resultat2 = $req->fetch();
		
								$req->closeCursor();

								if(!$resultat2)
								{
									echo 'Mauvais identifiant!';
								}
								else
								{
					
								session_start();
    							$_SESSION['id'] = $resultat['id'];		
	
								$req = $bdd->prepare('SELECT pseudo, mail, sname, name FROM infosclientspro WHERE id = :id') ;
								$req->execute(array('id' => $_SESSION['id'])) or die(print_r($bdd->errorInfo())) ;;

								$resultat = $req->fetch();
	
								$_SESSION['pseudo'] = $resultat['pseudo'];
								$_SESSION['mail'] = $resultat['mail'];
								$_SESSION['sname'] = $resultat['sname'];
								$_SESSION['name'] = $resultat['name'];

								header('Location: Index.php');
								$req->closeCursor();
								}

				

					
					
					
					
					}
					else
					{		
					session_start();
    				$_SESSION['id'] = $resultat['id'];		
	
					$req = $bdd->prepare('SELECT pseudo, mail, sname, name FROM infosclientspart WHERE id = :id') ;
					$req->execute(array('id' => $_SESSION['id'])) or die(print_r($bdd->errorInfo())) ;;

					$resultat = $req->fetch();
	
					$_SESSION['pseudo'] = $resultat['pseudo'];
					$_SESSION['mail'] = $resultat['mail'];
					$_SESSION['sname'] = $resultat['sname'];
					$_SESSION['name'] = $resultat['name'];

					header('Location: Index.php');	 

					}

					$req->closeCursor();

?>




Modifié par GuillaumeA07 (02 Feb 2015 - 15:56)
Salut,

je me trompe ou la structure de tes tables infosclientspart et infosclientspro sont les mêmes? Du moins dans ton code c'est le cas. Si oui, quel est l'intérêt de les fractionner? Y a t-il d'autres champs vraiment différents par la suite dans la structure?
Pour revenir à ton problème, pourquoi faire une requête pour avoir l'id puis une autre pour avoir l'info, tu peux faire tout ça en un coup ! Si tu n'as pas de résultat, c'est donc que l'utilisateur n'existe pas, à la table suivante ! Vois-tu?

Bon courage Smiley smile

P.S: en utilisant des jointures tu pourrais faire une seule requête pour avoir tes données peu importe depuis quelle table mais je persiste à penser que les deux tables ne sont pas utiles.
Oui j'ai pas mal de champs en commun mais aussi quelqu'un qui change notamment un siret et tout ce qui concerne une entreprise. Je préférerais continuer avec deux table.
Et en effet je peut faire ma requête d'un seul coup ^^ ça ma échappé.

Et donc avec une jointure je pourrais savoir si un utilisateur se trouve dans l'une ou l'autre des tables? Parce que je vois pas trop :s

Merci de ta réponse
$req = $bdd->prepare('SELECT id FROM infosclientspart, infosclientspro WHERE mail = :mail AND pass =  Smiley langue ass');


je pense
Modifié par Pedrothelion (03 Feb 2015 - 16:44)