Page 1 sur 1

Récuperer le contenu d'una variable et $GET

Posté : 22 avr. 2016, 15:23
par yoann38
Salut à tous.
J'arrange des details sur le site nottament l'url rewriting

Je récupère actuellement mes valeurs avec $_REQUEST['loisir'])
$_REQUEST['loisir']) vaut = 10 par exemple

Du coup j'ai l'url suivante:
http://monsite.fr/toutes-les-actu-10.html

mon htaccess.
RewriteCond %{HTTP_HOST} ^www\.monsite.fr$
RewriteRule ^(.*) http://monsite.fr/$1  [QSA,L,R=301]

# -- la ligne en question ci-dessous --
RewriteRule ^toutes-les-actu-([A-Za-z0-9_-]+).html$ actu.php?loisir=$1

RewriteRule ^toutes-les-actu.html actu.php
#RewriteRule ^([A-Za-z0-9_-]+).html$ $1.php

Je souhaite la valeur de 10 qui vaut pour l'exemple: bricolage
et ainsi obtenir l'url suivante : toutes-les-actu-bricolage.html au lieu de toutes-les-actu-10.html

Dans mon code je récupère la valeur bricolage comme ça:
ucfirst($aLoisirs[$_REQUEST['loisir']])
et le numéro comme ça:
$_REQUEST['loisir']
comment résoudre le problème svp, Merci à vous

Re: Récuperer le contenu d'una variable et $GET

Posté : 22 avr. 2016, 15:26
par or 1
en testant $_REQUEST['loisir'] avec http://php.net/ctype_digit

Re: Récuperer le contenu d'una variable et $GET

Posté : 22 avr. 2016, 15:38
par yoann38
Heu je ne vois pas comment l'exemple :
<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
  if (ctype_digit($testcase)) {
    echo "La chaîne $testcase ne contient que des entiers.\n";
  } else {
    echo "La chaîne $testcase ne contient pas que des entiers.\n";
  }
}
?>
peut permettre d'avoir l'url souhaité et modifier ainsi mon htaccess...

Re: Récuperer le contenu d'una variable et $GET

Posté : 22 avr. 2016, 15:52
par or 1
RewriteRule ^toutes-les-actu-([A-Za-z0-9_-]+).html$ actu.php?loisir=$1
donc ton .htaccess permet déjà d'avoir 10 ou bricolage.
une solution plus simple pourrait être d'avoir
RewriteRule ^toutes-les-actu-([0-9]+).html$ actu.php?idloisir=$1
RewriteRule ^toutes-les-actu-([A-Za-z_-]+).html$ actu.php?aLoisirs=$1

Re: Récuperer le contenu d'una variable et $GET

Posté : 22 avr. 2016, 23:44
par yoann38
Alors en fait ui 10 est bien accessible mais pas bricolage par exemple.
Faut que ca filtre ma requete biensur qui va avec:
$_REQUEST['departement'] = !empty($_REQUEST['departement']) ? $_REQUEST['departement'] : NULL;
	$_REQUEST['departement'] = !empty($_SESSION['membre']) && empty($_REQUEST['departement']) && empty($_REQUEST['region']) ? $_SESSION['membre']['id_departements'] :$_REQUEST['departement'];
	
    $sql = "SELECT * FROM `loisirs`  JOIN `regions` ON `regions`.`region_id` = `loisirs`.`id_region` WHERE `loisirs`.`date_fin_sortie` > NOW() AND `loisirs`.`valide` = 1";
	
  	$sql .= !empty($_REQUEST['region']) ? ' AND `regions`.`url` = "'.$_REQUEST['region'].'"' : NULL; // region
    $sql .= !empty($_REQUEST['departement']) ? ' AND `loisirs`.`id_departements` = '.$_REQUEST['departement'] : NULL; // dep
    $sql .= !empty($_REQUEST['loisir']) ? ' AND `loisirs`.`id_type_loisirs` = "'.$_REQUEST['loisir'].'"' : NULL; // loisir

Re: Récuperer le contenu d'una variable et $GET

Posté : 26 avr. 2016, 15:46
par Ryle
Bonjour,

Dans ton fichier htaccess, la ligne RewriteRule ^toutes-les-actu-([A-Za-z0-9_-]+).html$ actu.php?loisir=$1 va capturer la dernière chaine de caractères alphanumérique passée dans l'url avant le ".html"

Déjà sur ce point : le "point" est un caractère spécial des expressions régulières qui correspond à n'importe quel caractère. Pour désigner le caractère "." il faut protéger celui-ci : "\."

Quoi qu'il en soit, avec cette condition
"toutes-les-actu-bricolage.html" sera redirigée vers actu.php?loisir=bricolage
"toutes-les-actu-10.html" sera redirigée vers actu.php?loisir=10

Il te faut dans les deux cas utiliser $_GET['loisir'] pour récupérer ta valeur (ou $_REQUEST) et adapté ton traitement en fonction de valeur récupérée : si c'est un nombre ou si c'est une chaine. A vue de nez, si c'est une chaine, il faut que tu puisses dire quelque part que si la valeur reçue est "bricolage", alors c'est la page d'id 10 qu'il faut ouvrir...

Re: Récuperer le contenu d'una variable et $GET

Posté : 28 avr. 2016, 07:20
par yoann38
Salut à tous.
Je reviens vers vous, j'essaie toujours de solutioner mon problème j'ai essayer de faire plus simple.
le problème reste le même :
toutes-les-actu-bricolage.html ( ne filtre pas mes requete en gros il dit que bricolage n'est pas défini)
mais
toutes-les-actu-10.html ( marche correctement)

Coté code:
$h1 .= !empty($region_id) ? 'les infos : ' .$aRegion[$region_id] : NULL; // La région
$h1 .= !empty($_REQUEST['loisir']) &&  empty($_REQUEST['departement'])  &&  empty($_REQUEST['ville']) ? ' <a href="actu-'.$_REQUEST['loisir'].'.html">actu de ' .ucfirst($aLoisirs[$_REQUEST['loisir']]).'</a>': NULL;
Coté htaccess.
# -- actu + région + type
RewriteRule ^actu/([A-Za-z0-9_-]+)-([A-Za-z0-9_-]+).html$ list.php?region=$1&loisir=$2

# -- actu + région -------------------
RewriteRule ^actu/([A-Za-z0-9_-]+).html$ list.php?region=$1

Mon array:
$aLoisirs = array ( 2 => 'couture', 3 => 'service', 4 => 'ménage', 5 => 'garde', 6 => 'animaux', 7 => 'occasion', 8 => 'neuf', 9 => 'Divers', 10 => 'bricolage', 11 => 'astuce', 13 => 'systemed', 14 => 'autres',  17 => 'encore',  18 => 'encore', 23 => 'encore'  );
Donc en gros ça marche que si je met la numéro de l'array mais pas la valeur associé à celui-ci...................
Merci encore

Re: Récuperer le contenu d'una variable et $GET

Posté : 28 avr. 2016, 09:07
par Ryle
Bonjour,

SI $_REQUEST['loisir'] contient un id, ton traitement qui se base sur l'id fonctionne...
Si $_REQUEST['loisir'] contienne une chaine, ton traitement qui se base sur l'id ne peut pas fonctionner...

Adapte ton traitement pour détecter si tu reçois un chiffre ou une chaine et faire ce qui doit être fait dans un cas comme dans l'autre :)

Re: Récuperer le contenu d'una variable et $GET

Posté : 28 avr. 2016, 09:15
par yoann38
coment adapter le traitement pour cela justement svp ? merci a vs

Re: Récuperer le contenu d'una variable et $GET

Posté : 28 avr. 2016, 09:31
par Ryle
Il te faut déjà distinguer si $_REQUEST['loisir'] est un nombre ou pas. Si c'est un nombre, rien à changer à ton traitement, tu utilises la valeur récupérée.

Si c'est une chaine, alors tu peux utiliser array_search() pour retrouver la clé associée à cette valeur dans ton tableau. Ainsi pour "bricolage", cette méthode te retournera 10 et tu pourras reprendre ton traitement comme si un nombre avait été spécifié dans l'url :)

Re: Récuperer le contenu d'una variable et $GET

Posté : 28 avr. 2016, 16:30
par yoann38
J'ai fait ceci du coup:
//mon array
$aLoisirs = array ( 2 => 'couture', 3 => 'service', 4 => 'ménage', 5 => 'garde', 6 => 'animaux', 7 => 'occasion', 8 => 'neuf', 9 => 'Divers', 10 => 'bricolage', 11 => 'astuce', 13 => 'systemed', 14 => 'autres',  17 => 'encore',  18 => 'encore', 23 => 'encore'  );

// Ca renvoi une chaine par exemple: bricolage
	echo 'On affiche le loisir demandé: ' .$_REQUEST['loisir'];
	
	//test
	$key = array_search ($_REQUEST['loisir'],$aLoisirs); // $key = 2;
	echo 'le numéro de loisir' .$key;
mais $key ne renvoi rien

Re: [RESOLU] Récuperer le contenu d'una variable et $GET

Posté : 29 avr. 2016, 11:31
par Ryle
Si $key ne contient rien, c'est que array_search() n'a pas trouvé de correspondance dans ton tableau pour la valeur $_REQUEST['loisir']

As-tu vérifier cette dernière ? et est-elle bien présente en l'état dans ton tableau $aLoisirs ? (par exemple tu as une valeur "Divers" avec un D majuscule. Si $_REQUEST['loisir'] contient "divers", aucun résultat ne sera retourné.

Tu peux d'ailleurs tester simplement la méthode :
$key = array_search ('bricolage', $aLoisirs);
  echo 'le numéro de loisir : ' .$key;
Si celle-ci te retourne 10, c'est que $_REQUEST['loisir'] ne contient pas l'information attendue

Par ailleurs, tu as 3 valeurs "encore", seule la première clé sera retournée par array_search()