2011-02-05 31 views
8

Intentando hacer una búsqueda avanzada, con la clasificación de diferentes opciones ASC o DESC.Parámetros PHP URL GET, si existen, reemplazar?

Ejemplo URL:

search.php?accom_type=x&no_rooms=x&rooms_total=x&prop_area=x&rent_less=&rent_more=&available=&go=Search&sd=a

destacado en negrita es la opción & sd (dirección de ordenación). . Las variables anteriores se pasan a través de un formulario que se llena en

Ahora tengo enlaces de esta manera ..

<a href="<?=$_SERVER['REQUEST_URI']?>&sd=a">ASC</a>|<a href="<?=$_SERVER['REQUEST_URI']?>&sd=d">DESC</a> 

Cuál es obviamente erróneo porque estoy usando REQUEST_URI - porque si una persona cambia después de que se se establece inicialmente la URL será:

&sd=a&sd=d 

estoy seguro de que me he encontrado con este problema antes, pero no puedo pensar en cómo lo resolví.

Cómo verifico si un GET ya está configurado (como sd) y, de ser así, cámbielo, de lo contrario, agréguelo al final de la URL para generar los enlaces que se muestran arriba.

Editar: Tal vez una captura de pantalla ayudaría a entender: http://dl.dropbox.com/u/10591127/Capture.PNG

Cheers, Matt

+1

isset ($ _ GET ['sd'])? –

+0

Una sentencia if debería funcionar perfectamente. Use 'isset()' para verificar si una variable está configurada. – Shoe

+0

No resolvería el problema para reemplazar el _GET – Matt

Respuesta

20

Usted puede utilizar el $ _GET superglobal para obtener cada variable get individual. Si lo pone en una matriz, puede sobrescribir cualquier valor simplemente configurándolo de nuevo:

$params = $_GET; 
$params['sd'] = "whateveryoulike"; 
$paramString = http_build_query($params); 
+0

existente. Muchísimas gracias, pero no estoy del todo seguro de cómo ejecutar esto, ¿no sería necesario repetirlo para cada enlace? Tengo muchos enlaces como este ... Rent | Availabity Matt

+0

Luego simplemente cree la función simple createSortByLink ($ sortby) {... – Tomik

Cuestiones relacionadas