Foros del Web » Programando para Internet » PHP »

crear sql desde formulario

Estas en el tema de crear sql desde formulario en el foro de PHP en Foros del Web. como puedo seleccionar todos los registro indicandolo atravez de caracter es decir si en un formulario tengo un select de varios departamentos como puedo hacerle ...
  #1 (permalink)  
Antiguo 16/03/2006, 15:09
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
crear sql desde formulario

como puedo seleccionar todos los registro indicandolo atravez de caracter
es decir si en un formulario tengo un select de varios departamentos
como puedo hacerle usando una solo sentencia sql
que me seleccione a todos si ese caracter selecciono

$resultconsulta = mysql_query("SELECT * FROM $INSUMOS_PEDIDOS where ID_PROVEEDOR='$_POST[txproveedor]' and FECHA_PEDIDO_INSUMO>='$_POST[txdate]' and ID_ESTADO>=4", $conexion);

en $_POST[txproveedor] ahi va el id del proveedor seleccionado pero si el usuario selecciona el que tenga la opcion con * como lo haria en el sql
__________________
gerardo

Última edición por chalchis; 16/03/2006 a las 15:22
  #2 (permalink)  
Antiguo 16/03/2006, 15:44
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Tendrías que gestionar tu dato $_POST['txproveedor'] para generar un tipo de consulta SQL (condicional) o sin el condicional ..

Código PHP:
<?

// Seleccionas por el dato que ingresas en ese "select" una u otra consulta SQL a ejecutar.

if ($_POST['txproveedor'] == "*"){
  
$sql="SELECT * FROM $INSUMOS_PEDIDOS where FECHA_PEDIDO_INSUMO>='$_POST[txdate]' and ID_ESTADO>=4");
} else {
  
$sql ="SELECT * FROM $INSUMOS_PEDIDOS where ID_PROVEEDOR='$_POST[txproveedor]' and FECHA_PEDIDO_INSUMO>='$_POST[txdate]' and ID_ESTADO>=4";
}

// Ejecutas la consulta SQL que resultó. Date cuenta que para PHP no es más que un string (cadena) una consulta SQL .. 

$resultconsulta mysql_query($sql$conexion);


?>
Un saludo,
  #3 (permalink)  
Antiguo 16/03/2006, 15:51
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Sonrisa gracias Cluster

Ni modo crei que podria haber una posibilidad usando expresiones regulares pero tampoco me resulta.

gracias por la ayuda
saludos

Cita:
Iniciado por Cluster
Tendrías que gestionar tu dato $_POST['txproveedor'] para generar un tipo de consulta SQL (condicional) o sin el condicional ..

Código PHP:
<?

// Seleccionas por el dato que ingresas en ese "select" una u otra consulta SQL a ejecutar.

if ($_POST['txproveedor'] == "*"){
  
$sql="SELECT * FROM $INSUMOS_PEDIDOS where FECHA_PEDIDO_INSUMO>='$_POST[txdate]' and ID_ESTADO>=4");
} else {
  
$sql ="SELECT * FROM $INSUMOS_PEDIDOS where ID_PROVEEDOR='$_POST[txproveedor]' and FECHA_PEDIDO_INSUMO>='$_POST[txdate]' and ID_ESTADO>=4";
}

// Ejecutas la consulta SQL que resultó. Date cuenta que para PHP no es más que un string (cadena) una consulta SQL .. 

$resultconsulta mysql_query($sql$conexion);


?>
Un saludo,
__________________
gerardo
  #4 (permalink)  
Antiguo 16/03/2006, 15:57
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. te funciona la propuesta que te hice (o es lo que esperas)?

Un saludo,
  #5 (permalink)  
Antiguo 16/03/2006, 16:00
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Sonrisa si esta muy bien

lo que pasa que mas adelante en el formulario
pondre mas select y pues como que ya el poner condiciones
no seria muy apto
no crees

saludos

Cita:
Iniciado por Cluster
Pero .. te funciona la propuesta que te hice (o es lo que esperas)?

Un saludo,
__________________
gerardo
  #6 (permalink)  
Antiguo 16/03/2006, 16:49
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Pregunta HOLA clustes hice algo asi no se si es correcto

hola cluster
el select lo puese asi
<option value="(.)">Todos</option>
<option value="3" >Distribuidora de Papel del Golfo SA de CV</option><option value="4" >Ofix SA de CV</option><option value="5" >Recycling System</option><option value="6" >Arleth Baltazar Silva</option><option value="7" >Moisés Lazo Torres</option><option value="8" >Office Depot SA de CV</option><option value="9" >las polainas</option><option value="10" >gerardo</option> </select>

y el query

$resultconsulta = mysql_query("SELECT * FROM $INSUMOS_PEDIDOS where ID_PROVEEDOR REGEXP '$_POST[txproveedor]' and TIPO_INSUMO='a' and FECHA_PEDIDO_INSUMO>='$_POST[txdate]'and ID_DEPARTAMENTO REGEXP '$_POST[txdepa]' and ID_ESTADO>=4", $conexion);
y pues si resulta pero no se si es correcto
no me sale ningun error

que opinan
ID_PROVEEDOR REGEXP '$_POST[txproveedor]'


Cita:
Iniciado por chalchis
lo que pasa que mas adelante en el formulario
pondre mas select y pues como que ya el poner condiciones
no seria muy apto
no crees

saludos
__________________
gerardo

Última edición por chalchis; 16/03/2006 a las 17:15
  #7 (permalink)  
Antiguo 17/03/2006, 06:22
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Cita:
Iniciado por chalchis
lo que pasa que mas adelante en el formulario
pondre mas select y pues como que ya el poner condiciones
no seria muy apto
no crees

saludos
Pero que tantas opciones vas a poner? .. Si tus "opciones" son N y fijas .. el "trabajo" lo harás una vez (esos if() o switch() ..) puedes optimizar algo la sentencia SQL usando variables y concatenando (como para no repetir las partes de tu cadena (string) que es tu sentencia SQL lo menos posible ante eventuales mantenciones de ese código o modificaciones).

Cita:
No sé con que fin pretendes usar:
que opinan
ID_PROVEEDOR REGEXP '$_POST[txproveedor]'
pero si tu antes de eso haces
AND ....
es decir . .fuerzas "y" tal condicion .. no te servirá en principio para tu propósito. Además que NO es nada seguro que uses SQL en tus "<select>" .. o mejor dicho que vengan esas posibles sentencias SQL desde un formulario en forma externa .. imagina que por el mismo método que tu usas cierta sentencia SQL .. o te "inyecto" otra sentencia SQL con otros fines (maliciosos!).

Por eso, usar ese "IF()" o juego de "switch()" creo que al menos en este caso es lo más seguro en principio para "lanzar" o "incrustrar" la parte de la sentencia SQL que corresponda según tu fin ..

Un saludo,
  #8 (permalink)  
Antiguo 17/03/2006, 09:51
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 14 años, 4 meses
Puntos: 21
Pregunta REGEXP '$_POST[txproveedor]'

lo que trato se saber es si es totalmente correcto
usar la exprecion ID_PROVEEDOR REGEXP '$_POST[txproveedor]'
lo que busco es que si recibe un valor digamos del 1....n
busque el id del proveedor y si recibe un '(.)' segun por lo que entendi
aqui http://www.webtaller.com/manual-mysq...-regulares.php

puede buscar El caracter punto ( . ) coincide con cualquier caracter.
y tome eso como referencia, como diciendo que seleccione todos los id de los
proveedores pero bueno es algo que se me ocurrio pero no se si es totalmente correcto.

y encuanto a cuantos selectes pondre pues namas serian 2
1 donde estan los proveedores
1 donde estan los departamentos
1 campo de fecha

pero como dice cluster si pongo despues un 'and' y la condicion
creo que no es muy acto

saludos esperos sus comentarios
y gracias cluster por los comentarios

saludos




Cita:
Iniciado por Cluster
Pero que tantas opciones vas a poner? .. Si tus "opciones" son N y fijas .. el "trabajo" lo harás una vez (esos if() o switch() ..) puedes optimizar algo la sentencia SQL usando variables y concatenando (como para no repetir las partes de tu cadena (string) que es tu sentencia SQL lo menos posible ante eventuales mantenciones de ese código o modificaciones).



pero si tu antes de eso haces
AND ....
es decir . .fuerzas "y" tal condicion .. no te servirá en principio para tu propósito. Además que NO es nada seguro que uses SQL en tus "<select>" .. o mejor dicho que vengan esas posibles sentencias SQL desde un formulario en forma externa .. imagina que por el mismo método que tu usas cierta sentencia SQL .. o te "inyecto" otra sentencia SQL con otros fines (maliciosos!).

Por eso, usar ese "IF()" o juego de "switch()" creo que al menos en este caso es lo más seguro en principio para "lanzar" o "incrustrar" la parte de la sentencia SQL que corresponda según tu fin ..

Un saludo,
__________________
gerardo

Última edición por chalchis; 17/03/2006 a las 09:59
  #9 (permalink)  
Antiguo 17/03/2006, 11:29
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
El uso de expresiones regulares para ese caso es aplicable a "cadenas" no a tus "ID's"

De todas formas verifica su uso o aplicación para este caso en el foro de "Base de datos" -> "Mysql" que tratan esos temas.

Cita:
pero como dice cluster si pongo despues un 'and' y la condicion
creo que no es muy acto
No entendí .. Igualmente puedo comprender la necesidad de optimizar el código y buscar alguna forma "simple" de solventar un problema .. o no depender de PHP e intentar resolver el tema vía SQL .. Pero a veces no se puede.

De todas formas .. te "hago" saber por si lo desconoces que en SQL puedes usar "condicionales" también .. por si quieres "armar" un condicional similar al que te propongo en PHP pero en SQL ... En general maneja estructuras de control como las que haces en PHP. Tal vez por ahí resuelvas el problema con SQL sólo. De todas formas insisto y te invito a consultar en el foro de Mysql.

http://dev.mysql.com/doc/refman/4.1/...functions.html

Un saludo,
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 22:19.