begin process at 2012 05 30 22:45:09
  Trouver un code source :
 
dans
 
Accueil > Forum > 

PHP

 > 

Divers

 > 

Débutant(e)

 > 

Une erreur mysql_fetch_assoc()


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

Une erreur mysql_fetch_assoc()

mercredi 14 avril 2010 à 18:22:59 | Une erreur mysql_fetch_assoc()

squallio

Bonjour à tous est à toutes.

Je vous expose mon probléme avec ce script :
Code PHP :
<?php require_once('Connections/Parc.php'); ?>
<?php
if (!isset($_SESSION)) {
  session_start();
}
$MM_authorizedUsers = "admin";
$MM_donotCheckaccess = "false";

// *** Restrict Access To Page: Grant or deny access to this page
function isAuthorized($strUsers, $strGroups, $UserName, $UserGroup) { 
  // For security, start by assuming the visitor is NOT authorized. 
  $isValid = False; 

  // When a visitor has logged into this site, the Session variable MM_Username set equal to their username. 
  // Therefore, we know that a user is NOT logged in if that Session variable is blank. 
  if (!empty($UserName)) { 
    // Besides being logged in, you may restrict access to only certain users based on an ID established when they login. 
    // Parse the strings into arrays. 
    $arrUsers = Explode(",", $strUsers); 
    $arrGroups = Explode(",", $strGroups); 
    if (in_array($UserName, $arrUsers)) { 
      $isValid = true; 
    } 
    // Or, you may restrict access to only certain users based on their username. 
    if (in_array($UserGroup, $arrGroups)) { 
      $isValid = true; 
    } 
    if (($strUsers == "") && false) { 
      $isValid = true; 
    } 
  } 
  return $isValid; 
}

$MM_restrictGoTo = "info_service.php";
if (!((isset($_SESSION['MM_Username'])) && (isAuthorized("",$MM_authorizedUsers, $_SESSION['MM_Username'], $_SESSION['MM_UserGroup'])))) {   
  $MM_qsChar = "?";
  $MM_referrer = $_SERVER['PHP_SELF'];
  if (strpos($MM_restrictGoTo, "?")) $MM_qsChar = "&";
  if (isset($QUERY_STRING) && strlen($QUERY_STRING) > 0) 
  $MM_referrer .= "?" . $QUERY_STRING;
  $MM_restrictGoTo = $MM_restrictGoTo. $MM_qsChar . "accesscheck=" . urlencode($MM_referrer);
  header("Location: ". $MM_restrictGoTo); 
  exit;
}

// ** deconnection du serveur ! **
$logoutAction = $_SERVER['PHP_SELF']."?doLogout=true";
if ((isset($_SERVER['QUERY_STRING'])) && ($_SERVER['QUERY_STRING'] != "")){
  $logoutAction .="&". htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_GET['doLogout'])) &&($_GET['doLogout']=="true")){
  //to fully log out a visitor we need to clear the session varialbles
  $_SESSION['MM_Username'] = NULL;
  $_SESSION['MM_UserGroup'] = NULL;
  $_SESSION['PrevUrl'] = NULL;
  unset($_SESSION['MM_Username']);
  unset($_SESSION['MM_UserGroup']);
  unset($_SESSION['PrevUrl']);
	
  $logoutGoTo = "logout.php";
  if ($logoutGoTo) {
    header("Location: $logoutGoTo");
    exit;
  }
}
?>
<!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="menu">
  <div class="menu_title">Menu Général</div>
	<ul>
	  <li><a href="index.php">Accueil</a></li>
    </ul>
  </div>
  <div class="menu">
    <div class="menu_title">Menu Connecxion</div>
    <ul>
      <li><a href="<?php echo $logoutAction ?>">Deconnectez-vous !</a></li>
      <li><a href="pwd_lost.php">Mot de passe perdu ?</a></li>
      <li><a href="change_pwd.php">Changer mot de passe.</a></li>
    </ul>
  </div>
  <div class="menu">
    <div class="menu_title">Menu Recherche</div>
    <ul>
      <li><a href="recherche.php">Rechercher un poste.</a></li>
      <li><a href="ajout.php">Ajouter un poste.</a></li>
      <li><a href="modifier.php">Modifier un poste.</a></li>
    </ul>
  </div>

<div class="content-rech">
<h2>Rechercher un poste de travail.</h2>
<p><?php
/*
	Page de recherche des mots de passe
*/

$nb_rech =0;
$erreur ="";


if(isset($_POST["submit_rech"]))
{
	$tab_rech=array();
	
if(isset($_POST["os"]) && ($_POST["nom_im"]) && ($_POST["login_utilisateur"]))
	{
		//recherche l'os pour les information du poste
		$rech=$_POST["os"];
		$mot1=$_POST["os"];
		//recherche l'imprimante pour obtenir les infos
		$rech=$_POST["nom_im"];
		$mot2=$_POST["nom_im"];
		//recherche login pour info utilisateur
		$rech=$_POST["login_utilisateur"];
		$mot3=$_POST["login_utilisateur"];
		
		
		
		$tab_mots=explode(" ",$rech);
		foreach($tab_mots as $mot)
		{
			$requete= "SELECT * FROM `info_poste`,`imprimante`,`utilisateurs` WHERE (`info_poste.os` LIKE \"%$mot1%\") OR (`imprimante.nom_im` LIKE \"%$mot2%\") OR (`utilisateurs.login_utilisateur` LIKE \"%$mot3%\")";
		}
	}
	else
	{
		$erreur.="Erreur un ou plusieurs champs sont vides";
		echo "<font color=\"red\"><center>$erreur</center></font>";
	}
	if($erreur=="")
	{
		//execute la recherche
		$resultat=mysql_query($requete);
		while($ligne=mysql_fetch_assoc($resultat))
		{
			$tab_rech[]=$ligne;
			$nb_rech++;
		}

	}
}
if($nb_rech ==0)
{
?>
<table>
  <form name="rech" action="recherche.php" method="post">
  <tr>
  <td>Rechercher par systéme d'exploitation</td>
  <td><input type="text" name="os" size="25" value="" />
  </tr>
  <tr>
  <td>Rechercher par imprimante:
  <td><input type="text" name="nom_im" 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
{
?>
<div>
<a href="recherche.php">Nouvelle recherche</a></div>

<div>1 résultat trouvé dans la base. </div>
<br />

<table align="center">
	<tr>
		<td align="center">Informations poste</td>
	</tr>
</table>
<table border="2" cellpadding="10" align="center">
	<tr>
		<th align="center">ID</th>
    	<th align="center">N&deg; du poste</th>
    	<th align="center">N&deg; d'&eacute;cran</th>
    	<th align="center">N&deg;prise</th>
        <th align="center">B&acirc;timent</th>
    	<th align="center">Etage</th>
    	<th align="center">Porte</th>
        <th align="center">os</th>
	</tr>
<?php
for($i=0;$i<$nb_rech;$i++)
{
	$poste_id=$tab_rech[$i]["poste_id"];
	$num_poste=$tab_rech[$i]["num_poste"];
	$num_ecran=$tab_rech[$i]["num_ecran"];
	$num_prise=$tab_rech[$i]["num_prise"];
	$batiment_po=$tab_rech[$i]["batiment_po"];
	$etage_po=$tab_rech[$i]["etage_po"];
	$porte_po=$tab_rech[$i]["porte_po"];
	$os=$tab_rech[$i]["os"];
	
	$imprimante_id=$tab_rech[$i]["imprimante_id"];
	$nom_im=$tab_rech[$i]["nom_im"];
	$batiment_im=$tab_rech[$i]["batiment_im"];
	$etage_im=$tab_rech[$i]["etage_im"];
	$couloir_im=$tab_rech[$i]["couloir_im"];
	$marque=$tab_rech[$i]["marque"];

	$utilisateur_id=$tab_rech[$i]["utilisateur_id"];
	$login_utilisateur=$tab_rech[$i]["login_utilisateur"];
	$pwd=$tab_rech[$i]["pwd"];
	$nom_utilisateur=$tab_rech[$i]["nom_utilisateur"];
	$prenom_utilisateur=$tab_rech[$i]["prenom_utilisateur"];
	$email=$tab_rech[$i]["email"];
	$service=$tab_rech[$i]["service"];
	$rang=$tab_rech[$i]["rang"];

}
	echo "<tr>";
	echo "<td align=\"center\">$poste_id</td>";
	echo "<td align=\"center\">$num_poste</td>";
	echo "<td align=\"center\">$num_ecran</td>";
	echo "<td align=\"center\">$num_prise</td>";
	echo "<td align=\"center\">$batiment_po</td>";
	echo "<td align=\"center\">$etage_po</td>";
	echo "<td align=\"center\">$porte_po</td>";
	echo "<td align=\"center\">$os</td>";
	echo "</tr>";

?>
</table>
<br />
<table align="center">
	<tr>
		<td align="center">Informations imprimante</td>
	</tr>
</table>
<table border="2" cellpadding="10" align="center">
	<tr>
		<th align="center">ID</th>
    	<th align="center">Nom imprimante</th>
    	<th align="center">Bâtiment</th>
    	<th align="center">Etage</th>
    	<th align="center">Couloir</th>
    	<th align="center">Marque</th>
	</tr>
<?php
	echo "<tr>";
	echo "<td align=\"center\">$imprimante_id</td>";
	echo "<td align=\"center\">$nom_im</td>";
	echo "<td align=\"center\">$batiment_im</td>";
	echo "<td align=\"center\">$etage_im</td>";
	echo "<td align=\"center\">$couloir_im</td>";
	echo "<td align=\"center\">$marque</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">ID</td>
    	<td align="center">Login</td>
    	<td align="center">Password</td>
    	<td align="center">Nom utillisateur</td>
    	<td align="center">Prenom utillisateur</td>
    	<td align="center">Email</td>
    	<td align="center">Service</td>
    	<td align="center">Rang</td>
	</tr>
<?php

	echo "<tr>";
	echo "<td align=\"center\">$utilisateur_id</td>";
	echo "<td align=\"center\">$login_utilisateur</td>";
	echo "<td align=\"center\">$pwd</td>";
	echo "<td align=\"center\">$nom_utilisateur</td>";
	echo "<td align=\"center\">$prenom_utilisateur</td>";
	
	if($email=="-") 
		echo "<td>-</td>";
	else 
		echo "<td align=\"center\"><a target=\"_blank\" href=\"$email\">$email</a></td>";

	echo "<td align=\"center\">$service</td>";
	echo "<td align=\"center\">$rang</td>";

}
?>
</table>

</p>
</div>
<div id="clear"></div>

</div>

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

<div id="footer"><strong>Copyright &copy; 2010</strong> | <a href="acceuil.php">Dagny Corporate</a> | <b>Design </b>r&eacute;alier par Garau Alexandre</div>

</div>

</body>

</html>



Quand je veut l'utiliser et faire une recherche voici ce qu'il me sort comme erreur :

Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-5.3.2\www\recherche.php on line 156

La ligne 156 étant celle ci : while($ligne=mysql_fetch_assoc($resultat))

SVP aidez moi je ne comprend pas pourquoi.
mercredi 14 avril 2010 à 18:59:57 | Re : Une erreur mysql_fetch_assoc()

kohntark

Membre Club
Salut,

A vrai dire je n'ai que parcouru, mais :

expects parameter 1 to be resource, boolean given in C:\Program Files (x86)\EasyPHP-5.3.2\www\recherche.php on line 156


=> la fonction attend une ressource et tu lui passes un bit ... sans doute un false.
On remonte donc :
$resultat=mysql_query($requete) <== retourne sous doute false
...
$requete= "SELECT * FROM `info_poste`,`imprimante`,`utilisateurs` WHERE (`info_poste.os` LIKE \"%$mot1%\") OR (`imprimante.nom_im` LIKE \"%$mot2%\") OR (`utilisateurs.login_utilisateur` LIKE \"%$mot3%\")";
}
... on arrête de remonter histoire de ne pas se prendre la tête ... c'est tellement plus simple de profiter de l'affichage des erreurs de PHP qu'il serait dommage de s'en passer, un petit :
Code PHP :
//execute la recherche
  if (false === $resultat = mysql_query($requete)) {
    die('erreur de la requête $requete :<br />'.$requete.'<br />l\'erreur est :<br />'.mysql_error());


Ce que je cherche à te montrer là n'est pas de la fainéantise (même si pour le coup je suis suis fatigué et n'ai pas pris le temps de lire intégralement le code) mais simplement un reflex de débogage qui fait gagner beaucoup de temps.

D'après le peu que j'ai lu, tu sembles avoir pas mal "d'erreur" dans ton code :
- tu ne testes pas les données POST provenant de l'utilisateur
- foreach($tab_mots as $mot)
{
$requete= "SELECT * FROM `info_poste`,`imprimante`,`utilisateurs` WHERE (`info_poste.os` LIKE \"%$mot1%\") OR (`imprimante.nom_im` LIKE \"%$mot2%\") OR (`utilisateurs.login_utilisateur` LIKE \"%$mot3%\")";
}
=> la variable $requete sera toujours égale au dernier élément du tableau $tab_mots, ce qui ne semble pas être ton but
- etc ... etc ...

Bref, commence par ce reflex qui consiste à entrer dans un contexte de débogage, en étudiant les messages d'erreur, en affichant les contenus des variables incriminées (echo, print_r, var_dump, ...) et en "blindant" le script de test (if (isset($_POST['trucBidule']) ...)


Cordialement,

Kohntark -

jeudi 15 avril 2010 à 15:09:58 | Re : Une erreur mysql_fetch_assoc()

JulSoft

Membre Club
Réponse acceptée !
Perso j'utilise systématiquement
"or die(mysql_error()) après mes requetes.

Si certains vont me huer (problèmes de sécurité à cause de l'exposition de la structure de ma requete lors d'une erreur), ça me rend d0'innombrables services.

Exemple:
Code PHP :
<?php
[...]
$resultat = mysql_query($requete,$link)or die(mysql_error());
?>
vendredi 16 avril 2010 à 08:34:18 | Re : Une erreur mysql_fetch_assoc()

squallio

Mon code est plein de faute est effectivement il me faut utiliser :

Code PHP :
<?php
[...]
$resultat = mysql_query($requete,$link)or die(mysql_error());
?>


Mon erreur est corrigé c'était vraiment un oubli minable :)

Code PHP :
<?php mysql_select_db('NomDeMaTable'); ?>


d'autre part je vais changé de tactique pour faire ce que je souhaite et si vous voulez ( est si c'est fonctionnel ) je viendrai le posté ici.

Merci pour vos réponses !



Cette discussion est classée dans : poste, mysql, session, echo, mm


Répondre à ce message

Sujets en rapport avec ce message

Session_start() et list déroulante ne vont pas ensemble? [ par MVTNV ] Bonjour,J'ai un probème que même avec "session_start()". J'ai lu toutes (ou presque) les pages qui se trouve sur votre site concernant le problème mai login avec mot de pass crypté en md5 [ par dannyl ] bonjours je connais pas gros chose en php/mysql, parceque jutilise dreamweaver avec des comportement serveur, je suis entrain de regardé pour crypté u charger une donnée dans une session [ par Masterchiefer ] Bonjour à tous, j'avais posté un message avant et après avoir visité le lien que l'on m'a donné j'ai découvert les sessions. J'ai installé mon panier Probleme de variable de session [ par VestaX ] Bonjour,Voila, je débute en php, et j'ai un petit soucis. J'ai créer une base de donnée sous Mysql (taccess) avec iduser, login, pass, email, annivers affichage conditionnel avec les sessions [ par rudybiss ] Salut à tous!Je suis en train de faire un petit site marchand et en ce moment je suis sur les sessions.mon pb est que j'ai une table commande_fourniss Paginations [ par slhuilli ] bonjourje ne sais pas apres de longues recherches comment je pourrais paginer 10 par 10 mes réponses issues d'une select * .Voici ce que j'ai :     se code connexion [ par vrkill2 ] bonjour a tous qui peux me donner un coup de main pour  se code de connexion car sa ne marche pas mérci de bien vouloire méclairémysql_select_db($data Problème de bouton php et mysql [ par morpheus22170 ] Bonjour, j'ai un problème d'identificationquand je me connecte à une page privée avec mon identifiant et mon mot de passej'ai le droit à bonjour Nom P Récupération d'information de session [ par ashron54 ] Bonjour,j'ai fais quelques recherches pour mon problème mais je n'ai pas trouvé d'explication satisfaisante ou fonctionnel , je m'adresse donc à vous retypage des objets varaibles de session aprés session_start [ par szambaux ] Bonjour, j'utilise AMFPHP pour mes echanges flash->php, dans mes variables de session je stock mes instance de classe par exemple mysql et user.Le pro


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

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,716 sec (3)

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