Foros del Web » Programando para Internet » PHP »

de esta forma me tarda mucho, alguien sabe algo mas rapido?

Estas en el tema de de esta forma me tarda mucho, alguien sabe algo mas rapido? en el foro de PHP en Foros del Web. no me tira el listado porque tarda mucho tiempo, me imagino que como lo arme es re cabeza, pero no se me ocurria nada mas... ...
  #1 (permalink)  
Antiguo 18/03/2005, 13:20
 
Fecha de Ingreso: marzo-2005
Mensajes: 10
Antigüedad: 19 años, 1 mes
Puntos: 0
de esta forma me tarda mucho, alguien sabe algo mas rapido?

no me tira el listado porque tarda mucho tiempo, me imagino que como lo arme es re cabeza, pero no se me ocurria nada mas...
espero alguna ayudita plz

Código PHP:
if ($_POST['autor'] == "0" AND $_POST['disco'] == "0" and $_POST['tema'] == "0") {
    
$query_props sprintf("SELECT autor, tema, disco FROM musica");
} else {
    while (
$_POST['autor'] == "0" AND $_POST['disco'] != "0" and $_POST['tema'] != "0") {
          
$query_props sprintf("SELECT autor, tema, disco FROM musica WHERE disco = %s AND tema = %s"$disco_musica$tema_musica);
    }while (
$_POST['autor'] == "0" AND $_POST['disco'] == "0" and $_POST['tema'] != "0") {
          
$query_props sprintf("SELECT autor, tema, disco FROM musica WHERE tema = %s"$tema_musica);
    }while (
$_POST['autor'] == "0" AND $_POST['disco'] != "0" and $_POST['tema'] == "0") {
          
$query_props sprintf("SELECT autor, tema, disco FROM musica WHERE disco = %s"$disco_musica);
    }while (
$_POST['autor'] != "0" AND $_POST['disco'] == "0" and $_POST['tema'] != "0") {
          
$query_props sprintf("SELECT autor, tema, disco FROM musica WHERE autor = %s AND tema = %s"$autor_musica$tema_musica);
    }while (
$_POST['autor'] != "0" AND $_POST['disco'] == "0" and $_POST['tema'] == "0") {
          
$query_props sprintf("SELECT autor, tema, disco FROM musica WHERE autor = %s"$autor_musica);
    }while (
$_POST['autor'] != "0" AND $_POST['disco'] != "0" and $_POST['tema'] == "0") {
          
$query_props sprintf("SELECT autor, tema, disco FROM musica WHERE autor = %s AND disco = %s"$autor_musica$disco_musica);
    }while (
$_POST['autor'] != "0" AND $_POST['disco'] != "0" and $_POST['tema'] != "0") {
          
$query_props sprintf("SELECT autor, tema, disco FROM musica WHERE autor = %s AND disco = %s AND tema = %s"$autor_musica$disco_musica$tema_musica);
    }

InSa
  #2 (permalink)  
Antiguo 18/03/2005, 14:42
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
pero que estas haciendo ahi??? explica que es lo que necesitas, y que datos tenes...
Desde ya que tantos while son sobredosis para php:p
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #3 (permalink)  
Antiguo 18/03/2005, 14:59
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
REalmente a simple vista es complicado hacerse una idea de lo que hace esa porción de código extraido de algo más complejo y que ademas interviene con base de datos ..

Sería recomendable que explicases que hace el código .. así se veran otras soluciones si las hay o recomendaciones que darte.

A simple vista . .parece que en función de los datos que ingresas en tu formulario de busqueda .. así generas una sentencia SQL condicional .. Bien, .. si es así .. que eso se ejecute mejor o peor dependerá de la indexación de los campos que uses ..

Para agilizar este tipo de busquedas sobre campos de texto .. puedes usar busquedas tipo "Full text search" (busqueda de texto completo). Tienes un tutorial al respecto en:

http://www.mysql-hispano.org/page.php?id=15

Pero, en principio puedes ir indexando tus campos que usas para busquedas y observar el rendimiento .. Eso lo haces en tu Base de datos .. no desde PHP.

http://www.mysql-hispano.org/page.php?id=29

Un saludo,
  #4 (permalink)  
Antiguo 18/03/2005, 15:01
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por nicolaspar
pero que estas haciendo ahi??? explica que es lo que necesitas, y que datos tenes...
Desde ya que tantos while son sobredosis para php:p
Así es .. no sé el por qué de los while() .. lo que toca para ese caso es un IF() y en lugar de AND o and . .usar && (lo mismo que para un "or" usar || ..)

Un saludo,
  #5 (permalink)  
Antiguo 18/03/2005, 15:09
Avatar de nicolaspar  
Fecha de Ingreso: noviembre-2004
Ubicación: Villa Ballester Bs-As|Ar
Mensajes: 2.002
Antigüedad: 19 años, 5 meses
Puntos: 34
Cambiando de tema, yo uso && y || para and y or, creo haber leido en su momento que era lo mismo...pero..., hay alguna diferencia?
__________________
Mi punto de partida es Que Bueno Lo Nuevo
  #6 (permalink)  
Antiguo 18/03/2005, 15:43
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por nicolaspar
Cambiando de tema, yo uso && y || para and y or, creo haber leido en su momento que era lo mismo...pero..., hay alguna diferencia?
La diferencia está en el orden que se ejecutan los operadores (de derecha a izquierda o al reves .. en muchos casos da igual pero en otros no ..)

http://www.php.net/manual/en/languag...ors.precedence

Un saludo,
  #7 (permalink)  
Antiguo 18/03/2005, 16:36
Avatar de Seppo  
Fecha de Ingreso: marzo-2005
Ubicación: Buenos Aires, Argentina
Mensajes: 1.284
Antigüedad: 19 años, 1 mes
Puntos: 17
voy a hacer mi interpretacion de la pregunta =P
las variables post: autor, disco y tema pueden valer 0 o no. La idea es que si autor vale 1 mande como condicion que autor = $autor_musica y así con todos, para lo que hizo los 8 casos posibles (Creo q son 8)
por mi parte yo lo haria así (alguien q se fije si está bien el implode... siempre me lo confundo o lo hago mal =P)

Código:
if ($_POST['autor'] != 0) { $cond[] = "autor = '".$autor_musica."'"; }
if ($_POST['disco'] != 0) { $cond[] = "disco = '".$disco_musica."'"; }
if ($_POST['tema'] != 0) { $cond[] = "tema = '".$tema_musica."'"; }
if (count($cond) > 0 ) {
  $condicion = implode(" AND ",$cond);
  $query_props = "SELECT autor, tema, disco FROM musica WHERE ".$condicion.""; 
} else {
  $query_props = "SELECT autor, tema, disco FROM musica"; 
}
  #8 (permalink)  
Antiguo 18/03/2005, 20:39
 
Fecha de Ingreso: marzo-2005
Mensajes: 10
Antigüedad: 19 años, 1 mes
Puntos: 0
gracias por l adata, pero estaba utilizando mal el tema de lo swhile y por eso no andaba.

voy a pasar a explicar en forma mas que criolla (para que los novatos entiendan claramente)

Tengo 2 paginas : una es buscador.php y la otra es listado.php

BUSADOR.PHP = esta pagina tiene 3 campos donde se van a ingresar valores, son numeros a partir del 1, y estos valores se enviaran como variables segun el campo. (campo1 va a ser $var1, campo2 como $var2 y campo3 como $var3)

LISTADO.PHP = Esta pagina trea informacion que se encuentra en una base de datos. Por ella se ejecutaran 3 filtros (cada filtro segun la variable que viene desde buscador.php; ejemplo filtro1 segun $var1, filtro2 segun $var2...). Lo que quiero hacer es que si los valores dentro de las variables son distintas a 0, que se ejecuten los filtros.

este codigo en forma criolla fue el que cree:

Código PHP:
Si ($var1 es distinta a 0 ) {
    
ejecutar Si ($var2 es distinto a 0) {
        
ejecutar Si ($var3 es distinto a 0) {
            
ejecutar filtro1filtro2 y filtro3
        
sino {
            
ejecutar filtro1 y filtro2
        
}
    } 
sino {
        
ejecutar Si ($var3 es distinto a 0) {
            
ejecutar filtro1 y filtro3
        
sino {
            
ejecutar filtro1
        
}
    }
sino {
    
ejecutar Si ($var2 es distinto a 0) {
        
ejecutar Si ($var3 es distinto a 0) {
            
ejecutar filtro2 y filtro3
        
sino {
            
ejecutar filtro2
        
}
    } 
sino {
        
ejecutar Si ($var3 es distinto a 0) {
            
ejecutar filtro3
        
sino {
            
no ejecutar ninguna filtro
        
}
    }

muchas gracias a todos .

Última edición por insaniac; 18/03/2005 a las 20:40
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 09:41.