Bonsoir,
voila je cherche le moyen le plus simple pour transformer un formulaire de recherche en Url qui est après analisé.

array (size=7)
  'courir' => string 'on' (length=2)
  'marche' => string 'on' (length=2)
  'categorie' => string 'ma-categorie-1' (length=19)
  'code-postal' => string '74500' (length=0)
  'mots-cles' => string 'mot1 mot2 mot3' (length=0)

formulaire en POST -> Transformation en URL par route -> URL lue par route-> Lecture/analyse par le contrôleur -> retour vue
j'aimerai que mon url ce transforme en:
ndd/action=courir+marche&categorie=ma-categorie&code-postal=74500&mots-cles=mot1+mot2+mot3

Quelqu'un aurai une piste pour que j'arrive à ça?

3 réponses


la méthode GET permet d'envoyer ta requête par l'URL, c'est donc visible mais en termes de tailles c'est limité à la taille maximum d'une adresse URL (soit 255 caractères) la méthode POST permet d'envoyer des éléments plus gros (par exemple un bloc de texte)
<u>ce qui sera envoyé dans l'URL sera les nom des éléments du formulaire (le nom des input, select textarea etc...) suivi de la valeur entrée</u>

donc dans ta page tu mets ceci

<form method="get" action="resultat.php">
    <input name="recherche" />
    <input name="options" />
    <input type="submit" value="Envoyer">
</form>

en cliquant sur le bouton envoyer tu devrais avoir ceci dans ta barre d'adresse (sauf si tu fais une redirection dans ta page resultat.php)

http://www.neocorp.com/resultat.php?recherche=valeur1&options=valeur2

puis dans la page resultat.php (que j'ai mis dans mon formulaire comme valeur de l'attribut action
tu fait ceci

<?php
if(isset($_GET'recherche'])) $recherche=$_GET'recherche'];
if(isset($_GET'options'])) $options=$_GET'options'];

et c'est tout ... tu as récupéré les éléments envoyé par ton formulaire, tu peux utilisé dans ta requête sql pour afficher le résultat de ta recherche

<?php
    if(isset($_GET'recherche'])) $recherche=$_GET'recherche'];
    else $recherche="";
    if(isset($_GET'options'])) $options=$_GET'options'];
    else options="";
    require "dbconfig.php";

    mysql_connect($host,$user,$password);
    mysql_select_db($database);

    $requetesql = "SELECT * FROM equipe WHERE post LIKE '%".$recherche."%' AND categorie LIKE '%".$option."%'";
    $requete = mysql_query($requetesql ) or die('problème rencontré:'.mysql_error());
     ?>
    <h2>Resultat de la recherche de <?php echo $recherche; ?> dans la catégorie <?php echo $option; ?></h2>
    <?php
    $count=1;
    while($data=mysql_fetch_assoc($requete )){

        echo '<span>'.$count++.'</span><a href="model/view/'.$data'id'].'">'.$data"title"].'</a>';
    }

voila :) j'espère que cela t'aidera, bonne continuation

PS: J’écris le code à la main sans le tester, prend le en guise d'exemple et non pas tels qu'elle il y a peut être une virgule mal placée ou parenthèse mal fermée

neocorp
Auteur

C'est simpa, mais je connais bien les metode GET & POST, en faites je souhaite faire un post-traitement de l'url, afin de la rendre plus "lisible ( avec une metode get standard = "marcher=on&courir=on&..." j'aimerai "action=courir-marcher&..." et complète" donc d'y apporter des modifications, un peu comme le forum d'hardware.fr, le formulaire de recherche commence en POST pour terminée en GET sur l'url, entre temps le get est devenu plus "complet".
D'ou ma question en faite ;) sinon j'aurai bêtement appliqué la méthodologie de base ^^

neocorp
Auteur

C'est bon, je pense que j'ai retrouvé mon chemin ;)

Route::post('/recherche', function(){
$action = null;
$action_possible = array('courir', 'marcher', 'manger', 'dormir');
    foreach ($action_possible as $ap) {
        if(isset($_POST$ap]) && $_POST$ap] == 'on'){ $action = $action.$ap.'-'; }
    }
$action = 'action='.substr($action, 0, -1);
});

Merci en tout cas d'avoir participé à ma réflexion :D !