pb sur une requete

Mammouth du PHP | 504 Messages

26 déc. 2011, 12:26

Bonjour a tous,

J'ai un petit soucis sur une requete:

j'ai cette requete:
/* on selectionne le contenu de la page */
$page = mysql_fetch_array(mysql_query("SELECT id, titre, contenu, reference, source, rubrique
					FROM xxxxx
et aprés:
// dans depeches
function recherche_news(&$content, $q) {
	[b]$categories = mysql_query("select * from news_categories WHERE rubrique=5");[/b]	while($categorie = mysql_fetch_array($categories)) {
		$sql = generer_requete("news", "titre", $q, 'categorie='.$categorie['id'],"date");
		$buffer = mysql_query($sql);
		$count = mysql_num_rows($buffer);
En fait, c'est pour cette expression: $categories = mysql_query("select * from news_categories WHERE rubrique=5");

si je remplace: WHERE rubrique=5 par
WHERE rubrique='"stripslashes($page['rubrique'])'"
, ça ne marche pas. mon code ne me renvoie rien alors que si je mets la valeur exacte ça marche.

Je ne comprends pas....

ViPHP
ViPHP | 2577 Messages

26 déc. 2011, 13:16

"select * from news_categories WHERE rubrique=5"

à remplacer par

"select * from news_categories WHERE rubrique=".stripslashes($page['rubrique'])

Mammouth du PHP | 504 Messages

26 déc. 2011, 13:27

J'ai pas compris :(
$categories = mysql_query("select * from news_categories WHERE rubrique=5");
ça je le remplace par quoi ?

ViPHP
ViPHP | 2577 Messages

26 déc. 2011, 13:51

ben par
$categories = mysql_query("select * from news_categories WHERE rubrique=".stripslashes($page['rubrique']));

ViPHP
xTG
ViPHP | 7331 Messages

26 déc. 2011, 14:32

Je dirai tant qu'à faire les choses bien :
$categories = mysql_query("select * from news_categories WHERE rubrique=".mysql_real_escape_string(stripslashes($page['rubrique'])));

ViPHP
ViPHP | 2577 Messages

26 déc. 2011, 14:37

Pour une variable numérique qui vient de la base de données, c'est de la parano^^

ViPHP
xTG
ViPHP | 7331 Messages

26 déc. 2011, 15:37

Bah je n'ai rien lu dans son code qui impliquait cela justement, et pis quand le code passe par des générations de développeurs on n'est jamais trop sûr de rien. :P

Mammouth du PHP | 504 Messages

26 déc. 2011, 15:52

Alors je suis perdu... Aucun des deux codes ne marche...

ni
$categories = mysql_query("select * from news_categories WHERE rubrique=".mysql_real_escape_string(stripslashes($page['rubrique'])));
ni
$categories = mysql_query("select * from news_categories WHERE rubrique=".stripslashes($page['rubrique']));
 
Bizarre :(

ViPHP
ViPHP | 2577 Messages

26 déc. 2011, 16:25

Quel est le message d'erreur ?
Que contient $page['rubrique'] ?

Mammouth du PHP | 504 Messages

26 déc. 2011, 16:36

quand je fais un echo, ça me donne bien 5.

Mais j'ai pas le message d'erreur avec ce serveur. :(

ViPHP
ViPHP | 2577 Messages

26 déc. 2011, 16:43

$sql = "select * from news_categories WHERE rubrique=".stripslashes($page['rubrique']));
$categories = mysql_query($sql);
Et tu pourras afficher le contenu de la requete pour vérifier.

Il faut ajouter après chaque mysql_query() :
if (mysql_errno()<> 0) echo mysql_error();
Il est bien de mettre error_reporting(E_ALL | E_STRICT) en début de script.

Mammouth du PHP | 504 Messages

26 déc. 2011, 17:13

J'ai bien mis:
<?php

error_reporting(E_ALL | E_STRICT);
et
$sql = "select * from news_categories WHERE rubrique=".stripslashes($page['rubrique']));
$categories = mysql_query($sql);

if (mysql_error()<> 0) echo mysql_error();
Résultat: page blanche... :(