begin process at 2012 05 31 07:37:46
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

2 problèmes que je ne comprend pas !


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

2 problèmes que je ne comprend pas !

lundi 22 mars 2010 à 19:48:09 | 2 problèmes que je ne comprend pas !

squallio

Bonjour.

Je me permet de venir poster un message ici dans le but de trouvées une ou plusieurs réponse si possible.
Je suis entrain de créer un site ( intranet pour une entreprise ), est je cherche a faire un formulaire qui pourrai me permettre de trouver tel ou tel information stocké dans la base de donnée.

Voici mon code qui conporte des erreurs que je n'arrive pas à résoudre :
Code PHP :
<?php require_once('Connections/parc.php'); ?>
<?php
/*
	Page de recherche des mots de passe
*/

$nb_rech =0;
$erreur ="";



if(isset($_POST["submit_rech"]))
{
	$tab_rech=array();
	
	
if(isset($_POST["nom_poste"]) && $_POST["nom_poste"]!="")
	{
		$rech=$_POST["nom_poste"];
		$tab_mots=explode(" ",$rech);
		foreach($tab_mots as $mot)
		{
			$requete="SELECT * FROM `consultation` WHERE nom_poste LIKE \"%$mot%\" ";
		}
	}
	elseif(isset($_POST["email"]) && $_POST["email"]!="")
	{
		$rech=$_POST["email"];
		$tab_mots=explode(" ",$rech);
		foreach($tab_mots as $mot)
		{
			$requete="SELECT * FROM `consultation` WHERE email LIKE \"%$mot%\" ";
		}
	}
	elseif(isset($_POST["login_utilisateur"]) && $_POST["login_utilisateur"]!="")
	{

		$rech=$_POST["login_utilisateur"];
		$tab_mots=explode(" ",$rech);
		foreach($tab_mots as $mot)
		{
			$requete="SELECT * FROM `consultation` WHERE login_utilisateur LIKE \"%$mot%\" ";
		}
	}
	else
	{
		$erreur.="Erreur un ou plusieurs champs sont vides";
	}
	if($erreur=="")
	{
		//execute la recherche
		$resultat=mysql_query($requete);
		while($ligne=mysql_fetch_assoc($resultat))
		{
			$nb_rech++;
			$tab_rech[]=$ligne;
		}

	}
}


?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
	<title>Rechercher un poste</title>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>

<body>

<div id="container">

<div id="header"></div>

<div id="sub_header">Le slogan par la !</div>

<div id="main_content_top"></div>

<div id="main_content">

<div class="content-rech">
<h2>Rechercher un poste de travail.</h2>
<p><?php
if($nb_rech ==0)
{

?>
<b>Menu:</b>
<?php echo "<center><font color=\"red\">$erreur</font></center>" ?>
<table>
  <form name="rech" action="recherche.php" method="post">
  <tr>
  <td>Rechercher par nom du poste</td>
  <td><input type="text" name="nom_poste" size="25" value="" />
  </tr>
  <tr>
  <td>Rechercher par adresse email:
  <td><input type="text" name="email" size="25" value="" />
  </tr>
  <tr>
  <td>Rechercher par login:
  <td><input type="text" name="login_utilisateur" size="25" value="" />
  </tr>
  <tr>
  <td colspan="2" align="right"><input type="submit" name="submit_rech" value="Go" />
  <tr>
  </form>
</table>
<?php
}
else
{
?>
<b>Menu:</b>
<div>
<a href="recherche.php">Nouvelle recherche</a> / <a href="index.html">Retour accueil</a>
</div>

<div>1 résultat trouvé dans la base. </div>
<br />
<table align="center">
	<tr>
		<td align="center">Informations générals</td>
	</tr>
</table>
<table border="2" cellpadding="10" align="center">
	<tr>
		<th align="center">ID</th>
    	<th align="center">Nom du poste</th>
    	<th align="center">Os</th>
    	<th align="center">Bâtiment</th>
    	<th align="center">Etage</th>
    	<th align="center">Porte</th>
    	<th align="center">Prise</th>
	</tr>
<?php
for($i=0;$i<$nb_rech;$i++)
{
	$id=$tab_rech[$i]["id"];
	$nom_poste=$tab_rech[$i]["nom_poste"];
	$os=$tab_rech[$i]["os"];
	$batiment=$tab_rech[$i]["batiment"];
	$etage=$tab_rech[$i]["etage"];
	$porte=$tab_rech[$i]["porte"];
	$num_prise=$tab_rech[$i]["num_prise"];

	echo "<tr>";
	echo "<td align=\"center\">$id</td>";
	echo "<td align=\"center\">$nom_poste</td>";
	echo "<td align=\"center\">$os</td>";
	echo "<td align=\"center\">$batiment</td>";
	echo "<td align=\"center\">$etage</td>";
	echo "<td align=\"center\">$porte</td>";
	echo "<td align=\"center\">$num_prise</td>";
	echo "</tr>";
}
?>
</table>
<br />
<table align="center">
	<tr>
		<td align="center">Informations utilisateurs</td>
	</tr>
</table>
<table border="2" cellpadding="10" align="center">
	<tr>
    	<td align="center">Service</td>
    	<td align="center">Email</td>
    	<td align="center">Login</td>
    	<td align="center">Password</td>
    	<td align="center">Application</td>
    	<td align="center">Commande</td>
	</tr>
<?php
for($i=0;$i<$nb_rech;$i++)
{
	
	$service=$tab_rech[$i]["service"];
	$email=$tab_rech[$i]["email"];
	$login_utilisateur=$tab_rech[$i]["login_utilisateur"];
	$password=$tab_rech[$i]["password"];
	
	echo "<tr>";
	echo "<td align=\"center\">$service</td>";
	
	if($email=="-") 
		echo "<td>-</td>";
	else 
		echo "<td align=\"center\"><a target=\"_blank\" href=\"$email\">$email</a></td>";

	echo "<td align=\"center\">$login_utilisateur</td>";
	echo "<td align=\"center\">$password</td>";
	echo "<td align=\"center\">";
	echo "<a href=\"\" onclick=\"javascript:window.open('voir_application.php?id=$id','width=400,height=250,scrollbars=yes');\">Voir</a>";
	echo "</td>";
	echo "<td align=\"center\">";
	echo "<a href=\"\" onclick=\"javascript:window.open('modifie_pass.php?id=$id','pass','width=400,height=250,scrollbars=yes');\">Modifier</a>";
	echo "</td>";
	echo "</tr>";
}
}
?>
</table>
</p>
</div>
<div id="clear"></div>

</div>

<div id="main_content_bottom">
</div>

<div id="footer"><strong>Copyright &copy; 2010</strong> | <a href="#">Nom de l'entreprise</a> | <b>Design </b>r&eacute;alier par ???</div>

</div>

</body>

</html>


Mon problème est que le formulaire fonctionne mais a moitié on va dire, car si renseigne 3 critéres de recherche et que le 1er est faux il me retournera rien ( même si le deuxiéme et juste par exemple ):cry:
Si je renseigne toujours 3 critéres de recherche et que cette fois les 3 sont correct il me donnera que le résultat du premier citére ( j'espére que j'écrit pas trop chinoi est que je suis explicite ) donc j'en conclus que la requete 1er est dominante est que les autres sont exploitatable seulement si le critére 1 n'est pas renseigné.

Comment faire pour qu'il n'y est plus ce problème ???
deuxiéme question :

Je souhaiterai si possible afficher 1 ou plusieurs résultats, dison que les 3 critéres de recherche sont correct mais qu'ils pourraient donner trois résultats différents comment réaliser cela ?


Si je vient poster ici c'est que je fait un projet d'étude et que cela est trés important pour moi j'espére vraiment trouvé de l'aide.

Merci d'avance cordialement dagny
mardi 23 mars 2010 à 00:56:14 | Re : 2 problèmes que je ne comprend pas !

Arto_8000

Il faudrait que tu merges tes critères en une seule requête SQL. C'est plus simple à gérer surtout pour les résultats puisque tout vient en un seul résultat.

Rapidement ça donnerait quelque chose dans le genre :
Code PHP :
<?php
$erreur = "";

if (isset($_POST['submit_rech'])) {
	$sql = 'SELECT * FROM `consultation` WHERE ';
	$nbCritere = 0;
	$fields = array(
		'nom_poste'         => 'nom_poste',
		'email'             => 'email',
		'login_utilisateur' => 'login_utilisateur'
	);
	
	// On parcours chaque champs du formulaire et on construit la requête SQL //
	foreach ($fields as $champInput => $champSQL) {
		if (isset($_POST[$champInput]) && $_POST[$champInput] != "") {
			if ($nbCritere > 0)
				$sql .= ' AND ';
				
			$sql .= '(';
			$tab_mots=explode(' ', $_POST[$champInput]);
			for($i=0; $i<count($tab_mots); $i++) {
				if ($i != 0)
					$sql .= ' OR ';
				$sql .= $champSQL . ' LIKE "%' . mysql_real_escape_string($mot) . '%"';
			}
			$sql .= ')';
			$nbCritere++;
		}
	}
	
	$tab_rech = array();
	if ($nbCritere > 0) {
		$resultat=mysql_query($requete);
		while($ligne=mysql_fetch_assoc($resultat)) {
			$tab_rech[]=$ligne;
		}
	} else {
		$erreur.="Erreur un ou plusieurs champs sont vides";
	}
}
?>


J'ai pas vraiment testé, mais essentiellement ça devrait être ça.
mardi 23 mars 2010 à 08:58:56 | Re : 2 problèmes que je ne comprend pas !

squallio

Je m'excuse mais cela ne fonctionne pas !
Pourquoi avez vous supprimez $nb_rech =0; cette variable me permet de ne pas afficher le tableau si aucune recherche est effectuer ???

Je vous remercie vraiment pour cette premiére réponse mais serait il possible de vous solicité encore un peut plus de maniére a trouver une solution ?


En espérant avoir une solution merci beaucoup !
cordialement
mardi 23 mars 2010 à 15:32:24 | Re : 2 problèmes que je ne comprend pas !

Arto_8000

Le nombre de recherche est un peu absurde comme principe puisque tu fais une recherche ou non. Tu peux quand même vérifier si une recherche a été faite en vérifiant si le tableau de résultat est présent if(isset($tab_rech) && count($tab_rech) > 0).

Le code est juste la à titre indicatif et comme j'ai dit "J'ai pas vraiment testé". C'est une façon plus simple des fois de montrer un principe (parce que le code reprend le principe de regrouper tous tes recherches en une seule). L'essentiel qu'il faut que tu comprendre c'est juste l'algorythme de regrouper tous tes critères dans une seule recherche à partir de là tu l'intègre comme tu veux dans ton script.

En gros la requête bâti va ressembler à ceci :

SELECT * FROM `consultation` WHERE (email LIKE "%valeur1" OR email LIKE "%valeur2%") AND (nom_poste LIKE "%valeur3" OR nom_poste LIKE "%valeur4")

Cette requête va te donner un résultat unique pour tous tes critères de recherche.


Cette discussion est classée dans : poste, recherche, email, echo, rechercher


Répondre à ce message

Sujets en rapport avec ce message

undefined variable notice ?! [ par jimmy69 ] Salut a tous,Voila je debute en php et je me suis amuse a faire un p'tit site tout simple avec une base mysql...sous easyphp 1.4Je suis passe sous ea Comment rechercher un mot dans une chaine de caractères ? [ par Drazounet ] Bonjours à tous,Je suis en train de programmer un forum en php et maintenant je suis en train de lui ajouter une section "recherche" afin de trouver p moteur de recherche [ par cobrachris ] bonjour à tous,J'ai un petit problème sur un moteur de recherche que j'ai trouvé sur le site. J'ai modifier les champs dans lesquels faire la recherch aide pour mon moteur de recherche [ par kroland ] j'aurai besoin d'aide pour mon moteur de recherche tout simple que je tante de concevoir... voila le code que j'ai fai pour le moment : tou d'abord l recherche de texte [ par RM50Man ] Bonjour , comment faire pour rechercher du texte par exemple:je veux rechercher un mot qui commence par Aselect * from table where mot = 'A*'On fait c recherche espace membres avec email validation [ par LiTtLeBuBu ] Salut,Je recherche un espace membre avec inscription et validation des emails (genre confirm.php?id=rgrg45615cdec168ec1e68c1c1z).Merci pour votre aide Systeme de recherche [ par neji_44 ] Bonjour, je suis un petit nouveau en PHP (je m'y suis mis il y a seulement 3 semaine) et je suis en train de faire un systeme de recherche pour un sit Formulaire Upload vers email [ par emulienfou ] Bonjour je recherche de l'aide pour mon formuliare Php, je voudrais envoyé un fichier de mon formulaire que jé deja créer vers mon adresse email mé je urgeeeeeeeeeent svp [ par imanou ] je doit le finir aujourd hui jeudi c tres urgent def du projet : je recupere les mails et je les affiche et je doit avoir une liste des mail dans le q Problème avec un soit disant moteur de recherche lol [ par gssk ] Au fait j'ai fait un "moteur de recherche" (code pourrave je le sais merci !!), et je n'ai que d erreur de variables indéfini! tels que Mot,idM,nomM e


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

Photothèque

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,310 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales