Foros del Web » Programando para Internet » PHP »

¿Por que no funciona un Select con una variable pasada por url?

Estas en el tema de ¿Por que no funciona un Select con una variable pasada por url? en el foro de PHP en Foros del Web. Seguro que es una tonteria, pero me gustaria saber por que no funciona el siguiente codigo Código PHP: <?php $sel = $HTTP_GET_VARS [ 'sel' ]; $query_listado  ...
  #1 (permalink)  
Antiguo 21/04/2003, 03:16
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años
Puntos: 0
¿Por que no funciona un Select con una variable pasada por url?


Seguro que es una tonteria, pero me gustaria saber por que no funciona el siguiente codigo
Código PHP:
<?php $sel=$HTTP_GET_VARS['sel'];
$query_listado "SELECT * FROM tabla WHERE campo like ".$sel."%"" ORDER BY campo ASC"?>
La variable "$sel" se recoge bien, pero da el error:
Parse error: parse error, unexpected T_CONSTANT_ENCAPSED_STRING in
  #2 (permalink)  
Antiguo 21/04/2003, 03:21
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Probá haciendo:
Código PHP:
$query_listado "SELECT * FROM tabla WHERE campo like '".$sel."%' ORDER BY campo ASC"
Saludos!
  #3 (permalink)  
Antiguo 21/04/2003, 03:27
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años
Puntos: 0

Perfecto, ahora si funciona.

Igual dentro de un par de siglos me aclaro con la sintaxis.

Gracias.
  #4 (permalink)  
Antiguo 21/04/2003, 03:31
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años
Puntos: 0
Bueno, pues el mismo supuesto, pero $sel="0-9".

¿Porque no me saca los valores que empiecen por número?
  #5 (permalink)  
Antiguo 21/04/2003, 03:50
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Por lo de la sintaxis: puede parecer un embrollo, pero no es tan asi...
Debes distinguir 2 cosas: lo que le debe llegar a mysql y lo que "le das" a PHP.
X ej en tu consulta a mysql le deberia llegar
Código:
SELECT * FROM tabla WHERE campo like 'valordesel%' ORDER BY campo ASC
o sino (creo que es lo mismo - te ADVIERTO que recien empiezo a "descubrir" esto de SQL)
Código:
SELECT * FROM tabla WHERE campo like "valordesel%" ORDER BY campo ASC
Pero para decirle a PHP que mande eso a mysql debes tener en cuenta las comillas que deben llegar en la consulta.
Por ej si al string lo defines usando comillas dobles, y quieres pones comillas dobles dentro del mismo usa \"
Código PHP:
$query_listado "SELECT * FROM tabla WHERE campo like \"$sel%\" ORDER BY campo ASC"
Con respecto a lo de $sel="0-9". ¿que quieres? ¿que la consulta devuelva campos que tengan numeros del 0 al 9?

Porque tengo entendido que si $sel="0-9" y usas LIKE con el % al final te encontraria, por ej la cadena "0-91123421" o "0-9abc"

Si lo que quieres es lo otro usa REGEXP de mysql, que busca coicidencias con la expresion regular.

Lee esto
http://www.programacion.com/tutorial/mysql_basico/11/

Si no puedes postea lo que quieres y tratamos de ayudarte.

un saludo,
  #6 (permalink)  
Antiguo 21/04/2003, 04:12
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años
Puntos: 0
He estado mirando tu link, pero no consigo hacer lo que quiero.

Me explico, en el mismo campo tengo datos cuyo primer dígito puede ser un número o una letra y lo que intento es que se realize una consulta en una página y en otra me saque los resultados, según la selección.
  #7 (permalink)  
Antiguo 21/04/2003, 04:48
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Se me hace como que no te has tomado el tiempo suficiente para leer el articulo en detalle: REPASALO la respuesta esta allí.

Si usas ^ en la expresio indica que la palabra empieza con ese caracter, y si luego defines una clase de caracter con las llaves [] tienes la solucion.
Código:
SELECT * FROM tabla WHERE campo REGEXP '^[0-9]'

Un saludo,
  #8 (permalink)  
Antiguo 21/04/2003, 04:52
 
Fecha de Ingreso: agosto-2002
Ubicación: Colón - Entre Rios - Argentina
Mensajes: 647
Antigüedad: 21 años, 8 meses
Puntos: 8
Me olvidé, o en su defecto:
Código:
SELECT * FROM tabla WHERE campo REGEXP '^[a-z]'
Te repito, repasa el articulo y presta atencion a lo de las mayusculas/minusculas segun tu version de MYSQL.
  #9 (permalink)  
Antiguo 22/04/2003, 17:50
Avatar de Pandragon  
Fecha de Ingreso: abril-2003
Ubicación: Alicante - España
Mensajes: 66
Antigüedad: 21 años
Puntos: 0
Ok, ahora perfecto.

Gracias
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 07:01.