Page 1 sur 4

Récupératio de données

Posté : 17 sept. 2010, 17:30
par damours111
Bonjour,

J'ai .cris, voila assez longtemps, un script pour faire une liste de recherche et après, choisir un item dans la liste.
Voici le fichier résultat ou la liste s'affiche correctement
<?php
	  
		echo "<h1>R&eacute;sultat de la recheche</h1>"; 
		// connexion à la base de données
		include_once("connexion.php"); 
 		// Création des variables  
  		$searchterm= $_POST['searchterm'];
		$searchtype= $_POST['searchtype'];
		
		
  		if (!$searchtype || !$searchterm)
  		{
     	echo "Vous n'avez pas entrer les &eacute;l&eacute;ments de rehcrches.  S.V.P. essayer de nouveau";
     	exit;
  		}
		$sql = "SELECT * FROM nds_bib_
		WHERE $searchtype like '%".$searchterm."%'ORDER by  titre"  ;
		$resultat = mysql_query($sql );
		$num_rows = mysql_num_rows($resultat);
		if ($num_rows == 0) 
		{
		echo "Votre recherche  pour l'expression « $searchterm » n'a rien donnée. Recommencer la recherche.";
		} else { 
		if ($num_rows == 1) { 
		echo "Vous avez $num_rows réponse pour l'expression « $searchterm »";
			} else {
			echo "Vous avez $num_rows réponses pour l'expression « $searchterm ». <br> Voici la liste: ";
			}
		}
		// Récupération des valeurs
		while ($row = mysql_fetch_assoc( $resultat)) {
		$n°=$row['n°'];
		$titre=$row['titre'];
		//$titre=htmlentities($titre);
		$auteurs=$row['auteurs'];
		$auteurs=htmlentities($auteurs);
		echo "<blockquote><a href=voir.php?titre=$titre> $titre &nbsp Auteur: $auteurs </a></blockquote>";
		echo "<h5>_________________________________________________</h5>";
		}
		?>
Voici maintenant le fichier voir.ph dans lequel devrait s'afficher les infos ( ce qui fonctionnait en php4
<?php 
				// Connexion à la base de donn&eacute;es
		include_once("connexion.php");
		// Création de la requète
		$sql = "SELECT *FROM nds_bib_ WHERE titre=$titre " ;
		// Exécution de la requète SQL
		$resultat = mysql_query($sql ) ;
		echo "titre: $titre";
		// Récupération des valeurs
		while ($row = mysql_fetch_assoc( $resultat)) {
		$n°=$row['n°'];
		$titre=$row['titre'];
		$titre=htmlentities($titre);
		$auteurs=$row['auteurs'];
		$auteurs=htmlentities($auteurs);
		// Affichage
		echo"<center><h1>$titre</h1></center></p>";
		echo "<strong>par :  $auteurs </p></strong>";
		
		}
	?>
J'obtiens une erreur :
Notice: Undefined variable: titre in C:\wamp\www\biblio\voir.php on line 7

Notice: Undefined variable: titre in C:\wamp\www\biblio\voir.php on line 10
titre:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in C:\wamp\www\biblio\voir.php on line 12
, ce qui est normal étant donné que la variable $titre est vide.

J'aimerais savoir comment faire pour récupérer ma variable.

Je travail avec php5.3.0 et MySQL5.1.36

Merci de votre aide
p.s. Cela fait 2 jours que je cherche partout, mais je n'ai pas trouvé.

Alain

Re: Récupératio de données

Posté : 17 sept. 2010, 17:34
par stealth35
$titre n'existe pas c'est tout :wink:

Re: Récupératio de données

Posté : 17 sept. 2010, 17:57
par damours111
$titre n'existe pas c'est tout :wink:
C'est justement cela ma question, pourquoi titre n'existe pas?
Alain

Re: Récupératio de données

Posté : 17 sept. 2010, 18:05
par stealth35
$titre n'existe pas c'est tout :wink:
C'est justement cela ma question, pourquoi titre n'existe pas?
Alain
il viens d'où le titre ?

Re: Récupératio de données

Posté : 17 sept. 2010, 18:34
par damours111
$titre n'existe pas c'est tout :wink:
C'est justement cela ma question, pourquoi titre n'existe pas?
Alain
il viens d'où le titre ?
De la la variable $searchterm dans la requête :
// Création des variables  
  		$searchterm= $_POST['searchterm'];
		$searchtype= $_POST['searchtype'];
		
		
  		if (!$searchtype || !$searchterm)
  		{
     	echo "Vous n'avez pas entrer les &eacute;l&eacute;ments de rehcrches.  S.V.P. essayer de nouveau";
     	exit;
  		}
		$sql = "SELECT * FROM nds_bib_
		WHERE $searchtype like '%".$searchterm."%'ORDER by  titre"  ;
		$resultat = mysql_query($sql );
		$num_rows = mysql_num_rows($resultat);
Celle-ci provenant d'un formulaire de rehecherche qui a donné le $searchterm.
Donc de la base de données.

J'espère que je suis claire dans mes explications.

Merci pour l'aide
Alain

Re: Récupératio de données

Posté : 17 sept. 2010, 18:37
par stealth35
oui mais ici y'a qu'un fichier
$sql = "SELECT *FROM nds_bib_ WHERE titre=$titre " ;
dans ce cas,
$titre = $_GET['titre']

Re: Récupératio de données

Posté : 17 sept. 2010, 18:46
par damours111
Je ne comprend pas ce que tu veux dire par
Il n'y a qu'un fichier
. Si c'est ce que je pense, il y a plusieurs ficher dans la liste.

J'ai fait l'essai avec ce que tu m'as suggéré et voici la réponse obtenue :
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\biblio\voir.php on line 7
Merci
Alain

Re: Récupératio de données

Posté : 17 sept. 2010, 18:48
par stealth35
Je ne comprend pas ce que tu veux dire par
Il n'y a qu'un fichier
. Si c'est ce que je pense, il y a plusieurs ficher dans la liste.
tu fais pas d'include a part la connexion, donc $titre n'existe pas (saiuf si il existerai dans connexion.php mais c'est pas le cas)
J'ai fait l'essai avec ce que tu m'as suggéré et voici la réponse obtenue :
Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in C:\wamp\www\biblio\voir.php on line 7
Merci
Alain
un ; la fin des lignes :wink:

EDIT : les données exterieur (forumlaire, adresse) c'est sois $_GET sois $_POST, la recuperé directement via le nom de variable ca se fais pu :wink:
http://fr.php.net/manual/fr/security.globals.php

Re: Récupératio de données

Posté : 17 sept. 2010, 23:26
par damours111
J'ai trouvé la solution.

Ce n'est pas u formulaire qui envoi les donnée mais, un url. Donc j'ai mis register global a on et j'ai corrigé mon code.
Voici les corrections:

results.php
<?php
	  
		echo "<h1>R&eacute;sultat de la recheche</h1>"; 
		// connexion à la base de données
		include_once("connexion.php"); 
 		// Création des variables  
  		$searchterm= $_POST['searchterm'];
		$searchtype= $_POST['searchtype'];
		
		
  		if (!$searchtype || !$searchterm)
  		{
     	echo "Vous n'avez pas entrer les &eacute;l&eacute;ments de rehcrches.  S.V.P. essayer de nouveau";
     	exit;
  		}
		$sql = "SELECT * FROM nds_bib_
		WHERE $searchtype like '%".$searchterm."%'ORDER by  titre"  ;
		$resultat = mysql_query($sql );
		$num_rows = mysql_num_rows($resultat);
		if ($num_rows == 0) 
		{
		echo "Votre recherche  pour l'expression « $searchterm » n'a rien donnée. Recommencer la recherche.";
		} else { 
		if ($num_rows == 1) { 
		echo "Vous avez $num_rows réponse pour l'expression « $searchterm »";
			} else {
			echo "Vous avez $num_rows réponses pour l'expression « $searchterm ». <br> Voici la liste: ";
			}
		}
		// Récupération des valeurs
		while ($row = mysql_fetch_assoc( $resultat)) {
		$id_numero=$row['id_numero'];
		$titre=$row['titre'];
		$auteurs=$row['auteurs'];
		echo "<blockquote><a href=voir.php?id_numero=$id_numero> $titre &nbsp Auteur: $auteurs </a></blockquote>";
		echo "<h5>_________________________________________________</h5>";
		}
		?>
 



voir.php
<?php 
				// Connexion à la base de donn&eacute;es
		include_once("connexion.php");
		// Création de la requète
		$sql = "SELECT *FROM nds_bib_ WHERE id_numero =$id_numero";
		// Exécution de la requète SQL
		$result = mysql_query($sql ) ;
		if (!$result) {
		echo 'Impossible d\'exécuter la requête : ' . mysql_error();
		exit;
		}
		// Récupération des valeurs pour photo
		$row = mysql_fetch_assoc( $result);
		
		$auteurs = $row['auteurs'] ;
		$titre = $row['titre'];
		
		echo "<blockquote> $titre &nbsp Auteur: $auteurs </blockquote>";
		echo "<h5>_________________________________________________</h5>";
		
	?>
  
Merci pour l'aide
Alain

Re: Récupératio de données

Posté : 17 sept. 2010, 23:52
par Cyrano
Donc j'ai mis register global a on
Très mauvaise solution : cette directive doit à l'avenir disparaitre de PHP et rester à OFF par défaut. Ça veut dire que lorsque tu feras une mise à jour de la configuration de PHP, tu vas avoir un jour une vilaine surprises, très désagréable je dirais même...

Je signale au passage pour ceux qui l'ignoreraient : pourquoi cette directive doit-elle disparaitre de PHP ? parce que ça ouvre une faille de sécurité sur les sites programmés avec un peu de laxisme sous le fallacieux prétexte d'écrire moins de code, et malheureusement pas pour optimiser ledit code. Si un appel vers la page envoit des données (en GET, POST, COOKIE, ou en général REQUEST) avec des valeurs contenant des codes malicieux, la surprise ne sera pas bonne du tout pour le responsable du site qui risque de voir dans le meilleur des cas sa page d'accueil revue en profondeur avec des messages d'un got plus ou moins douteux, au pire sa base de données piratée, pillée ou simplement détruite.

Enfin bon, c'est vous qui voyez, il y en a qui on essayé,... ils ont eu des problèmes. :mrgreen:

Re: Récupératio de données

Posté : 18 sept. 2010, 01:36
par damours111
Donc j'ai mis register global a on
Très mauvaise solution : cette directive doit à l'avenir disparaitre de PHP et rester à OFF par défaut. Ça veut dire que lorsque tu feras une mise à jour de la configuration de PHP, tu vas avoir un jour une vilaine surprises, très désagréable je dirais même...

Je signale au passage pour ceux qui l'ignoreraient : pourquoi cette directive doit-elle disparaitre de PHP ? parce que ça ouvre une faille de sécurité sur les sites programmés avec un peu de laxisme sous le fallacieux prétexte d'écrire moins de code, et malheureusement pas pour optimiser ledit code. Si un appel vers la page envoit des données (en GET, POST, COOKIE, ou en général REQUEST) avec des valeurs contenant des codes malicieux, la surprise ne sera pas bonne du tout pour le responsable du site qui risque de voir dans le meilleur des cas sa page d'accueil revue en profondeur avec des messages d'un got plus ou moins douteux, au pire sa base de données piratée, pillée ou simplement détruite.

Enfin bon, c'est vous qui voyez, il y en a qui on essayé,... ils ont eu des problèmes. :mrgreen:
Bonjour Cyrano,

La dessus, je te fais entièrement confiance. Tu m'as souvent aider avant. Mais cela ne règle pas mon problème, au contraire. en effet, je dois faire sortir une liste de livre partir d'un formulaire ou la personne a fait un choix selon l'auteur. Ce formulaire à été envoyer par la méthode POST . Cette liste servira pour que la personne choisisse un livre et puisse avoir accès au données tel que: Résume et autre données.

C'est à cela que servait mon srcipt.

Je sais que l'on peut faire remplir un champs liste déroulante à d'un choix fais dans un autre formulaire (su moins je pense), mais je ne me souvient plus comment.
Alors, si tu peux, ou quelqu'un d'autre, me donner une piste, j'apprécierais vraiment.

Merci
Alain

Re: Récupératio de données

Posté : 18 sept. 2010, 08:22
par Cyrano
J'ai pas tout suivi depuis le début : tu penses à quelque chose comme ceci ?

Re: Récupératio de données

Posté : 18 sept. 2010, 13:46
par damours111
J'ai pas tout suivi depuis le début : tu penses à quelque chose comme ceci ?
Merci Cyrano,

je vais regarder tester et voir si cela correspond. Je vais te laisser savoir la suite.

Alain

Re: Récupératio de données

Posté : 18 sept. 2010, 14:49
par damours111
Salut

Pour être plus simple, ce que je veux c'est comme le forum qu'on utilise présentement. Une première étape est de choisir le sujet, ensuite choisir le message, et accéder à celui-ci.

Est-ce que l'exemple correspond un peu à cela?

Merci
Alain

Re: Récupératio de données

Posté : 18 sept. 2010, 22:44
par Cyrano
Non, le tuto en question explique comment lier des listes et comment à partir du choix dans une première liste mettre à jour les choix de la suivante.

Ceci dit c'est similaire d'une certaine manière : à partir du choix dans une liste de thèmes, on met à jour la liste suivante qui compose ce thème. Là, pose toi la question de la structure des données : comment structurer les données pour lier tout ça : si tu arrives à définir cette structure, ce sera bien plus facile de programmer le fonctionnement. Si tu tentes l'inverse, ça va être à mon avis beaucoup plus laborieux.