Menú Principal

ayuda PHP

Iniciado por Frost, 24 Diciembre 2008, 15:27 PM

0 Miembros y 1 Visitante están viendo este tema.

Frost

Holas
necesito que algien porfavor me ayude a limpiar este codigo, no tengo muchos conocimientos de php y esta fue la unica forma que se me ocurrio  :rolleyes: para hacer consultas en tablas distintas (dentro de la misma db)

switch ($tabla){

/////////////buscar en tabla 1////////////////
case 1:
if($parte=='')
{
echo "<script>alert('debe ingresar al menos un nombre para realizar la busqueda')</script>";
}else{
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');

mysql_select_db($dbname, $conn);

$sql = "SELECT * FROM tabla1 WHERE partes like '%".$parte."%' and year= $year";
$result = mysql_query($sql, $conn);
                       
                        /// esta parte llama al codigo q genera la tabla ///
include("while/indice1.php");
mysql_free_result($result);

mysql_close();
}
break;

/////////////buscar en tabla 2////////////////
case 2:
if($parte=='')
{
echo "<script>alert('debe ingresar al menos un nombre para realizar la busqueda')</script>";
}else{
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');

mysql_select_db($dbname, $conn);

$sql = "SELECT * FROM tabla2 WHERE partes like '%".$parte."%' and year= $year ";
$result = mysql_query($sql, $conn);

/// esta parte llama al codigo q genera la tabla ///
                        include("while/indice2.php");
mysql_free_result($result);

mysql_close();
}
break;


etc......
en realidad son 12 tablas pero puse las 2 primeras por que es el mismo metodo para todo, pense en poner como variable solamente esta parte donde selecciona la tabla(n) $sql = "SELECT * FROM tabla2 WHERE partes like '%".$parte."%' and year= $year ";pero por algun motivo no pude, el codigo funciona pero imagino que debe haber otra forma de hacerlo algo mas "descente"
bueno eso es todo gracias
saludos

PD: estoy ocupando bluefish para escribirlo


sorry no habia visto el subforo de php  :P (muevanlo porfas)









cassiani

Varias cosas:

1. No se para que tantas tablas con campos similares, si tienes pensado almacenar información diferente en cada una para procedimientos determinados, solo agrégale un campo extra que diferencie el tipo de registro o a quien va dirigido.

2. Llamar las mismas líneas de código una y otra vez, en ese caso convierte eso en función y pásale como parámetro los valores que diferencian un caso de otro y que te devuelva el nombre del archivo a incluir.

3. Yo no usaría JS para mostrar los mensajes en pantalla.  :P

Frost

1.- son varias tablas que no me permiten modificar, lo unico que logre q me dejaran hacer es agregar un campo mas "id" y  en realidad son archivos de exel q pase a mysql

2.- efectivamente era lo que tenia pensado pero no logre,  las 12 consultas solo se diferencia en la tabla que selecciona en esta parte:
$sql = "SELECT * FROM tabla1 WHERE partes like '%".$parte."%' and year= $year";

3.- q recomiendas algo como un echo "debe ingresar al menos un nombre para realizar la busqueda";

Gracias =P

Frost

#3
uuuuhhhhhhh     :rolleyes:  esto acortaria el codigo un poco

if($parte=='')
{
echo "aqui el mensaje";
}else{
$conn = mysql_connect($dbhost, $dbuser, $dbpass) or die ('Error connecting to mysql');
mysql_select_db($dbname, $conn);
   
        ///// y aqui el switch ///////
switch ($sql){

case 1:
$sql = "SELECT * FROM tabla1 WHERE partes like '%".$parte."%' and year= $year";
include("while/indice1.php");
case 2:
$sql = "SELECT * FROM tabla2 WHERE partes like '%".$parte."%' and year= $year";
include("while/indice2.php");
case 3:
$sql = "SELECT * FROM tabla3 WHERE partes like '%".$parte."%' and year= $year";       
include("while/indice3.php");
}
$result = mysql_query($sql, $conn);
                       
                        mysql_free_result($result);

mysql_close();
}