Bonjour,
Je me permet de poster ce message afin de vous faire part d'un problème que je n'arrive pas à solutionner.
J'ai suivi la méthode de "Spout"
https://www.webrankinfo.com/forum/pratique-htaccess-lire-avant-poser-t13288 ... l#p1217718
Mais je coince sur un petite point .
Mon formulaire
Traitement de données URL
.Htaccess
Traitement du code (ça fonctionne)
Je voudrai que quand une personne effectue une recherche l'url soit du type
http://www.site.com/recherche/[Var]
en tapant dans ma barre d'url http://www.site.com/recherche/[Var] j'arrive directement sur la bonne page mais en cliquant via mon formulaire pas moyen il me retourne toujours http://www.site.com/recherche.php?... (pas moyen de faire passer le $_GET dans la action du formulaire)
Il y a t-il une solution pour contourner cela sans passer par un script de soumission javascript un peu comme http://equidir.com/fr/annuaire/search/test ?
Je me permet de poster ce message afin de vous faire part d'un problème que je n'arrive pas à solutionner.
J'ai suivi la méthode de "Spout"
https://www.webrankinfo.com/forum/pratique-htaccess-lire-avant-poser-t13288 ... l#p1217718
Mais je coince sur un petite point .
Mon formulaire
Code:
<form method="GET" action="">
Enter a value for $_POST['some_text']: <input type="text" name="some_text" />
<input type="submit" />
</form>
Traitement de données URL
Code:
$type = 'GET';//QUERY_STRING, REQUEST_URI, PATH_INFO ou GET
switch ($type) {
case 'QUERY_STRING':
case 'PATH_INFO':
$url = $_SERVER[$type];
break;
case 'REQUEST_URI':
$url = substr($_SERVER[$type], strlen($_SERVER['SCRIPT_NAME']));
break;
case 'GET':
$url = $_GET['some_text'];
break;
default:
break;
}
$params = explode('/', $url);
array_shift($params);//Suppression du premier paramètre vide
//Récupération des variables pour l'exemple: http://example.com/module/action/param1/param2
list($module, $action, $param1, $param2) = $params;
echo sprintf('module: %s<br />action: %s<br />param1: %s<br />param2: %s<br />', $module, $action, $param1, $param2);
.Htaccess
Code:
Options -Indexes
RewriteOptions Inherit
Options +FollowSymlinks
RewriteEngine on
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^recherche/(.+)$ recherche.php?some_text=/$1 [L,QSA]
Traitement du code (ça fonctionne)
Code:
if(isset($_GET['some_text']) && $_GET['some_text'] != NULL)
{
$requete = rename_dir($_GET['some_text']);
//$requete_new=explode("recherche.php?requete=", $_SERVER['REQUEST_URI']);
//if(rename_dir($requete_new[1])!=rename_dir($_SESSION['some_text']) && $requete_new[1]!=NULL){$requete=$requete_new[1];}
$req = $GLOBALS['connexion']->prepare("SELECT * FROM cleusb WHERE ref LIKE :requete or gamme LIKE :requete ORDER BY id DESC");
$req->execute(array('requete' => '%'.$requete.'%'));
$nb_resultats = $req->rowCount();
if($nb_resultats != 0)
{?>
<h3>Résultats de votre recherche.</h3>
<p>Nous avons trouvé <?php echo $nb_resultats;
if($nb_resultats > 1) { echo 'résultats'; } else { echo 'résultat'; }
?>
dans notre base de données. Voici les fonctions que nous avons trouvées :<br/><br/>
<?php
while( $donnees = $req->fetch(PDO::FETCH_OBJ) )
{
?>
<a href="fonction.php?id=<? echo $donnees->id; ?>"><? echo $donnees->ref ?></a><br/>
<?php
}
?>
<br/>
<br/>
<a href="recherche.php">Faire une nouvelle recherche</a></p>
<?php
}
else
{ ?>
<h3>Pas de résultats</h3>
<p>Nous n'avons trouvé aucun résultat pour votre requête. <a href="recherche.php">Réessayez</a> avec autre chose.</p>
<?php
}
$req->closeCursor();
} ?>
Je voudrai que quand une personne effectue une recherche l'url soit du type
http://www.site.com/recherche/[Var]
en tapant dans ma barre d'url http://www.site.com/recherche/[Var] j'arrive directement sur la bonne page mais en cliquant via mon formulaire pas moyen il me retourne toujours http://www.site.com/recherche.php?... (pas moyen de faire passer le $_GET dans la action du formulaire)
Il y a t-il une solution pour contourner cela sans passer par un script de soumission javascript un peu comme http://equidir.com/fr/annuaire/search/test ?