[RESOLU] "+" qui pose problème.

Eléphant du PHP | 58 Messages

21 mars 2013, 23:12

Bonjour.

Dans mon catalogue d'objets astronomiques, je peux ouvrir une fiche pour tout les objets, sauf ceux dont le nom contient un "+". J'ai l'habitude d'envoyer le nom de l'étoile via l'url (?star=$star_name)

Sur la fiche étoile, pour l'étoile "2M 0746+20" $_GET['star'] me donne "2M 0746 20", le + s'est fait passer pour un espace. Bien entendu toute requête dans la base de données utilisant ce nom incomplet est vouée à l'échec.

Avec vous une idée pour contourner ce problème sans changer la dénomination de l'étoile? (ce n'est pas moi qui les nomme)

Merci d'avance.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

21 mars 2013, 23:15

salut,

tu peux essayer un url_encode, mais c'es pas gagné (il s'agit justement de la gestion de l'url par php qui va utiliser url_decode sur les valeurs).

sinon deux solutions :

- utiliser : $_REQUEST['QUERY_STRING']
- remplacer les + par autre chose et faire l'inverse ensuite.


@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 58 Messages

27 mars 2013, 23:17

Bonjour.

J'ai choisi la méthode "remplacer les + par autre chose et faire l'inverse ensuite". J'en ai profité pour remplacer les espaces par des "_" e qui va me rendre service plus tard.

Voici ce que j'ai écrit dans mon catalogue:
$star_url=str_replace(' ','_',$star_name);
					$star_url=str_replace('+','plus',$star_url);
					echo"<a href='index.php?CONTENU=fiche_etoile&star=$star_url'>$star_name</td>";
et dans fiche_etoile.php:
$star_url=$_GET["star"];
$star_name=str_replace('_',' ',$star_url);
$star_name=str_replace('plus','+',$star_name);
et ça marche très bien.

Désolé du temps de réponse, je comptais régler d'autres problèmes avant de m'attaquer à celui ci.