Foros del Web » Programando para Internet » PHP »

optimizar consulta

Estas en el tema de optimizar consulta en el foro de PHP en Foros del Web. Hola ..mi consulta es la sgte. desde un form ingreso un dato (ej: automovil )y su valor (ej: $ 6.000.000) Donde se de antemano que ...
  #1 (permalink)  
Antiguo 16/04/2003, 02:13
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 2 meses
Puntos: 1
optimizar consulta

Hola ..mi consulta es la sgte.
desde un form ingreso un dato (ej: automovil )y su valor (ej: $ 6.000.000)
Donde se de antemano que automovil esta en la base de datos(no deseo validar si encuentra o no..comienzo de la base de que esta!)
bueno esto es para todos los datos que ingrese como maximo puedo ingresar 10 nombres de vehiculos..
bueno el asunto es que cada automovil tiene unos datos anexos (que son campos numericos que deseo calcular)
por lo tanto necesito tratarlo por separado, sin embargo me gustaría saber si se puede hacer de otra forma este asunto.

que pasa si uso un SWITCH se podrá?...

haber mejor les muestro el código para que así me puedan dar alguna idea:

Form
Código PHP:
 echo" <form action=\"$PHP_SELF\" method=\"post\">
      <table border=1 >
      <tr><td colspan=2 align=center bgcolor=#E0BDFB>$de</td></tr>
      <tr><td bgcolor=#cccccc>Ingrese Nombre Vehiculo</td><td bgcolor=#cccccc>Ingrese Valor(Grs) </td></tr>
      <tr><td>1].<input type=\"text\" name=\"des1\" value=\"$des1\"></td><td><input type=\"text\" name=\"mdes1\"value=\"$mdes1\"size=6 maxlength=5><td></td></tr>
      <tr><td>2].<input type=\"text\" name=\"des2\" value=\"$des2\"></td><td><input type=\"text\" name=\"mdes2\"value=\"$mdes2\"size=6 maxlength=5><td></td></tr>
      <tr><td>3].<input type=\"text\" name=\"des3\" value=\"$des3\"></td><td><input type=\"text\" name=\"mdes3\"value=\"$mdes3\"size=6 maxlength=5><td></td></tr>
      <tr><td>4].<input type=\"text\" name=\"des4\" value=\"$des4\"></td><td><input type=\"text\" name=\"mdes4\"value=\"$mdes4\"size=6 maxlength=5><td></td></tr>
      <tr><td>5].<input type=\"text\" name=\"des5\" value=\"$des5\"></td><td><input type=\"text\" name=\"mdes5\"value=\"$mdes5\"size=6 maxlength=5><td></td></tr>
      <tr><td>6].<input type=\"text\" name=\"des6\" value=\"$des6\"></td><td><input type=\"text\" name=\"mdes6\"value=\"$mdes6\"size=6 maxlength=5><td></td></tr>
      <tr><td>7].<input type=\"text\" name=\"des7\" value=\"$des7\"></td><td><input type=\"text\" name=\"mdes7\"value=\"$mdes7\"size=6 maxlength=5><td></td></tr>
      <tr><td>8].<input type=\"text\" name=\"des8\" value=\"$des8\"></td><td><input type=\"text\" name=\"mdes8\"value=\"$mdes8\"size=6 maxlength=5><td></td></tr>
      <tr><td>9].<input type=\"text\" name=\"des9\" value=\"$des9\"></td><td><input type=\"text\" name=\"mdes9\"value=\"$mdes9\"size=6 maxlength=5><td></td></tr>
      <tr><td>10].<input type=\"text\" name=\"des10\" value=\"$des10\"></td><td><input type=\"text\" name=\"mdes10\"value=\"$mdes10\"size=6 maxlength=5><td></td></tr> </table>
      </form>
if($Calcular){
$result1=mysql_query("
select from tabla where nombre='$des1'",$link);
$result2=mysql_query("
select from tabla  where nombre='$des2'",$link);
$result3=mysql_query("
select from tabla where nombre='$des3'",$link);
$result4=mysql_query("
select from tabla  where nombre='$des4'",$link);
$result5=mysql_query("
select from tabla  where nombre='$des5'",$link);
$result6=mysql_query("
select from tabla  where nombre='$des6'",$link);
$result7=mysql_query("
select from tabla  where nombre='$des7'",$link);
$result8=mysql_query("
select from tabla  where nombre='$des8'",$link);
$result9=mysql_query("
select from tabla  where nombre='$des9'",$link);
$result10=mysql_query("
select from tabla  where nombre='$des10'",$link);

//luego hago lo sgte puesto que cada vehiculo tiene datos únicos(valores numericos)

while($row1=mysql_fetch_array($result1)){
calculos matematicos...
echo"
bla bla";
}
while($row2=mysql_fetch_array($result2)){
calculos matematicos...

echo"
echo"bla bla";
}
.
.
etc..(idem hasta el último)
.
.
while(
$row10=mysql_fetch_array($result10)){
calculos matematicos...

echo
"bla bla";


Con lo que yo hago de todas maneras no tengo problemas , los resultado son exactos..
¿Se puede hacer las consultas de otra forma?
__________________
Cristian...
  #2 (permalink)  
Antiguo 16/04/2003, 02:16
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Podrías hacer:

Código PHP:
<?
$result
=mysql_query("select * from tabla where nombre IN ('$des1','$des2','$des3',...'$des10') order by nombre",$link);

while(
$row=mysql_fetch_array($result)){
calculos matematicos...

echo
"bla bla";
}
?>
El problema es que no se ordenarán en el orden de entrada por el usuario, sino en función de algún campo de la base de datos (en el ejemplo: el nombre).
__________________
M a l d i t o F r i k i
  #3 (permalink)  
Antiguo 18/04/2003, 01:07
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 2 meses
Puntos: 1
Ok no sabía que se podía usar de esa forma, voy a ver si me sirve
gracias amigo...
__________________
Cristian...
  #4 (permalink)  
Antiguo 19/04/2003, 03:17
Avatar de Cain  
Fecha de Ingreso: enero-2002
Ubicación: Catalunya
Mensajes: 6.459
Antigüedad: 22 años, 3 meses
Puntos: 17
Para más información sobre como funciona MySQL:
http://www.mysql.com/doc
__________________
M a l d i t o F r i k i
  #5 (permalink)  
Antiguo 20/04/2003, 16:44
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 2 meses
Puntos: 1
CITANDO:
Código PHP:
$result=mysql_query("select * from tabla where nombre IN ('$des1','$des2','$des3',...'$des10') order by nombre",$link);

while(
$row=mysql_fetch_array($result)){
calculos matematicos...

echo
"bla bla";

es cierto que esta consulta me calcula todos los campos y los envía en el orden en que se encuentran en la BD, sin embargo esto no me sirve por lo sgte:
Código PHP:
<input type="text\" name=\"des1\" value=\"$des1\"></td><td><input type=\"text\" name=\"mdes1\"value=\"$mdes1\"size=6 maxlength=5></td><td><ul>
      <li><select name=\"list1\">
      <option >Seleccionar
      <option >grupo1
      <option >grupo2
      <option >grupo3
</select>
.
.
// por cada caja existe una lista que me permite seleccionar entre distintas trablas de mi BD. Y Si realizo la consulta que sugieres no me sirve puesto que yo no necesito llenar todos las cajas entonces si no lleno alguna de ellas me envía un warning(aunque también me envía los resultados), pero no quiero que aparezca ese mensaje..
</td> 


osea , como podria ver la forma de incluir estas variables en una sola consulta:
des1
des2
..
.
des10

también
mdes1
mdes2
.
.
mdes10

$result1=mysql_query("select * from $list1 where nombre='$des1..$des2..$des3...algo así'",$link);

donde $list1=sería el nombre de la BD pero como incluyo las otras variables,

tengo ideas pero no se como expresalas..sugerencias son bien recibidas gracias.
__________________
Cristian...
  #6 (permalink)  
Antiguo 20/04/2003, 17:13
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 9 meses
Puntos: 16
Hola,

Pues si cada consulta puede ser de una tabla distinta, creo que es bastante dificil juntarla en una sola consulta. Lo podrias intentar como lo hacias antes, una consulta para cada conjunto de campos (como en tu primer mensaje) pero en lugar de poner el codigo "a mano", generarlo con un bucle. Algo como:
Código PHP:
for ($i=1;$i<=10;$i++) {
$temp='list'.$i;
$tabla=$$temp;
$temp='des'.$i;
$des=$$temp;
$result=mysql_query("select * from $tabla  where nombre='$des'",$link);



//luego hago lo sgte puesto que cada vehiculo tiene datos únicos(valores numericos)



while($row=mysql_fetch_array($result)){

calculos matematicos...

echo
"bla bla";

}

Lo de $$temp es lo que en PHP se llama "variables variables" (ver manual). Basicamente sirve para crear en ejecucion el nombre de la variable a la que quieres acceder.

Sobre lo del warning, es por que no has escogido valor para es select. La forma de evitar el warning es comprobando con isset() si existe la variable antes de usarla.

Suerte.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #7 (permalink)  
Antiguo 22/04/2003, 01:10
 
Fecha de Ingreso: enero-2003
Ubicación: Santiago
Mensajes: 301
Antigüedad: 21 años, 2 meses
Puntos: 1
Ok Josemi, voy que tal me sale ...que mas !
solo gracias.
__________________
Cristian...
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 16:53.