Bonjour, j'ai une url avec plusieur varialbe
/annonce/offres/".$mot."/".$id."/".$dep."/".$code_postal."/".$c."/".$ep."/".titre."

Cette url est accessible en cliquant sur un lien
Je voudrais savoir comment cette url peut se raccouricir si certaine variable sont nul

exemple: varabiable $ep, $titre, $dep nul j'obtiendrais une url
/annonce/offres/".$mot."/".$id."/".$code_postal."/".$c."/

Merci pour votre aide

7 réponses


moza2409
Auteur

personne n'a une petite idée

et bien moi perso j’identifierai la base commune a toutes mes urls par exemple si $mot et $id sont tjs obligatoires je ferai
/annonce/offres/scooter-trop-beau-3.html ou scooter-trop-beau et $mot et 3 est $id puis je rajouterai en get les champs optionnels du style /annonce/offres/scooter-trop-beau-3.html?cp=75008... du coup dans ton php tu ferais un isset($_GET'cp']) etc... tu as tout a fait le droit de travailler avec get cela ne pénalise pas ton site l'autre solution et de passe en post si tu as un moteur de recherche l'intêret de get et d'obtenir des url que les internautes pourront bookmarquer

moza2409
Auteur

Donc en gros l'url serait comme ca ?
<a href='/Services/offres/".$id."/".isset($_GET'dep'])."/".isset($_GET'cp'])."".isset($_GET't'])."/".isset($_GET'c'])."&a=1&q=1'>

Non pas trop...
tout dépend de la façon dont tes paramètres sont passés via formulaire post ou via du get (cf doc de php)

regarde par exemple sur ce site http://www.place-immo.fr/immobilier-ancien-revente-5.html mon url de base est NDD/txt-ID.html et si tu regarde dans la colonne de droite et que tu clique sur un des liens tu auras NDD/txt-ID.html?var=valeur si tu veux que tes variables soient passées dans l'url il faut le gérer de cette façon

je ne sais pas comment est structuré ton site donc compliqué de de dire exactement comment faire

mais le isset ça serait plus du genre

$url = "mon-url.html"; //Url de base
$params = array(); //Tableau de paramètres
//Test des paramètres
//Je stocke dans un tableau pour pas trop me faire ..... avec les tests finaux
if(isset($_GET'dept'])) { $params] = 'dept=75'; }
if(isset($_GET'cp'])) { $params] = 'cp=75008'; }
...
//Génération de l'url
if(count($params)) { $url .= '?'.implode($params, '&'); }

a tester car brut de pomme

;)

moza2409
Auteur

Donc j'ai modifier voila ce que ca donne
$url = "/Service/annonces/offres/"; //Url de base
$params = array(); //Tableau de paramètres

//Test des paramètres
//Je stocke dans un tableau pour pas trop me faire ..... avec les tests finaux
if(isset($_GET'area'])) { $params] = $id; }
if(isset($_GET'dep'])) { $params] = ($_GET'dep']); }
if(isset($_GET'cp'])) { $params] = ($_GET'cp']); }
if(isset($_GET't'])) { $params] = ($_GET't']); }
if(isset($_GET'a'])) { $params] = ($_GET'a']); }
if(isset($_GET'c'])) { $params] = ($_GET'c']); }

//Génération de l'url
if(count($params)) { $url .= implode($params, '/'); }

Donc ca enleve bien les variables vide mais le probleme c'est qu'avec l'url rewrite ca beug un peux.
Voila mon rewrite:
ewriteRule ^annonces/([a-zA-Z]+)/p=([0-9]+)$ index.php?p=services&offres=$1&q=$2 [L,QSA]

RewriteRule ^annonces/([a-zA-Z]+)/([a-zA-Z\_]+)/p=([0-9]+)$ index.php?p=services&offres=$1&area=$2&q=$3 [L,QSA]

RewriteRule ^annonces/([a-zA-Z]+)/([a-zA-Z\]+)/([a-zA-Z\]+)/p=([0-9]+)$ index.php?p=services&offres=$1&area=$2&dep=$3&q=$4 [L,QSA]

RewriteRule ^annonces/([a-zA-Z]+)/([a-zA-Z\]+)/([a-zA-Z\]+)/([0-9]+)/p=([0-9]+)$ index.php?p=services&offres=$1&area=$2&dep=$3&cp=$4&q=$5 [L,QSA]

RewriteRule ^annonces/([a-zA-Z]+)/([a-zA-Z\]+)/([a-zA-Z\]+)/([0-9]+)/([0-9]+)/p=([0-9]+)$ index.php?p=services&offres=$1&area=$2&dep=$3&cp=$4&c=$5&q=$6 [L,QSA]

RewriteRule ^annonces/([a-zA-Z]+)/([a-zA-Z\]+)/([a-zA-Z\]+)/([0-9]+)/([0-9]+)/([a-zA-Z0-9-]+)/p=([0-9]+)$ index.php?p=services&offres=$1&area=$2&dep=$3&cp=$4&c=$5&t=$6&q=$7 [L,QSA]

RewriteRule ^annonces/([a-zA-Z]+)/([a-zA-Z\]+)/([a-zA-Z\]+)/([0-9]+)/([0-9]+)/([a-zA-Z0-9-]+)/([0-9]+)/p=([0-9]+)$ index.php?p=services&offres=$1&area=$2&dep=$3&cp=$4&c=$5&t=$6&a=$7&q=$8 [L,QSA]

Le probleme c'est que des fois il confond entre les variables, tu n'aurai pas une idée de comment je pourrai regler ce probleme

deja j'ai l'impression qu'il y a toujours p=services du coup sort le a gauche ça sert a rien à mon sens et du coup tu n'a besoins que d'un rewrite je pense car le reste sera passé via get dans tes urls
Suis pas un tueur en regex mais essaye ca

RewriteRule ^annonces/([a-zA-Z]+)/([a-zA-Z0-9]+)$ index.php?p=services&offres=$1&q=$2 [L,QSA]

je doute que ca fonctionne ;) donc au pire essaye ça

RewriteRule ^annonces/([a-zA-Z]+)$ index.php?p=services&offres=$1 [L,QSA]

je regarderais ça mieux jeudi je bosse pas demain c'est la journée des enfants ;)
files moi ton mail via https://www.besoin-de-conseils.com/contactez-nous.html comme ça je pourrais éventuellement t'envoyer ce que j'ai trouvé

moza2409
Auteur

Merci pour ton aide, c'est bon je t'ai envoyé mon mail