Foros del Web » Programando para Internet » PHP »

Simplificar este codigo?

Estas en el tema de Simplificar este codigo? en el foro de PHP en Foros del Web. Código PHP: <?php $link  =  mysql_connect ( "localhost" , "root" , "" ); mysql_select_db ( "pruebas" , $link ); $consulta  =  "Select * From config WHERE opcion='secciones'" ; $result  =  ...
  #1 (permalink)  
Antiguo 06/01/2008, 18:38
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 16 años, 3 meses
Puntos: 0
Simplificar este codigo?

Código PHP:
<?php
$link 
mysql_connect("localhost","root","");
mysql_select_db("pruebas",$link);


$consulta "Select * From config WHERE opcion='secciones'";
$result mysql_query($consulta,$link);
$row mysql_fetch_array($result);
if(
$row['valor'] == "si"){
echo 
"muestra el contenido de secciones<br><br>";
} else { 
echo 
"no mostrar el contenido de secciones<br><br>"
}

/////////////////////////////////////////////////////////////////////////
//AKI PUEDEN IR OTROS CONTENIDOS DE LA PAGINAAA////
/////////////////////////////////////////////////////////////////////////

$consulta "Select * From config WHERE opcion='fotolog'";
$result mysql_query($consulta,$link);
$row mysql_fetch_array($result);
if(
$row['valor'] == "si"){
echo 
"muestra el contenido de fotolog<br><br>";
} else { 
echo 
"no mostrar el contenido de fotolog<br><br>"
}
/////////////////////////////////////////////////////////////////////////
//AKI PUEDEN IR OTROS CONTENIDOS DE LA PAGINAAA////
/////////////////////////////////////////////////////////////////////////

$consulta "Select * From config WHERE opcion='link'";
$result mysql_query($consulta,$link);
$row mysql_fetch_array($result);
if(
$row['valor'] == "si"){
echo 
"muestra el contenido de link<br><br>";
} else { 
echo 
"no mostrar el contenido de link<br><br>"
}

?>
Lo que intente hacer aqui es que si en mi base de datos tengo por ejemplo:
Mostrar secciones | Si (o no)

y asi, onda para hacer las opciones de la web
y quiero que si secciones esta si muestre lo correspondiente
y si no nada, o algun mensaje(eso no es problema)

aunque aca no tengo algun problema (ningun error ni nada) funciona bien, pero queria ver si se puede simplificar el codigo, onda hacer una sola consulta y que me todos los registros pero separados onda ...
$variable[registro0][opcion][valor] a valor me refiero si esta en si o en no
$variable[registro1][opcion][valor]
$variable[registro2][opcion][valor]
etc. etc
asi puedo utilizar las variables en toda la pagina
en vez de estar haciendo una consulta por cada opcion que haya en la base de datos(como eso es una prueba, solo hay 3, pero en una pagina que toy haciendo esto tendria muchos registros)

Bueno eso
Ojala alguien me diga como se puede mejorar :D

Última edición por luckxhor; 06/01/2008 a las 20:40
  #2 (permalink)  
Antiguo 06/01/2008, 19:05
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Simplificar este codigo?

Podrías hacerlo así:

Código PHP:
//Aca agregas los registros -.-
$opciones = array("link""fotolog""secciones");
 
$op = array();
foreach(
$opciones as $v) {
    
$op[] = "'".mysql_real_escape_string($v)."'";
}
$op implode(",",$op);
 
$consulta "Select * From config WHERE opcion in ($op)"
$result mysql_query($consulta,$link); 
while(
$row mysql_fetch_array($result)) { 
    if(
$row['valor'] == "si"){ 
        echo 
"muestra el contenido de {$row[$op]}<br><br>"
    } else {  
        echo 
"no mostrar el contenido de {$row[$op]}<br><br>";  
    }

Así debería funcionar...

Un saludo,
  #3 (permalink)  
Antiguo 06/01/2008, 20:39
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Simplificar este codigo?

Mira probe el codigo que dejaste(ke la verdad no entendi mucho de lo que isiste) y lo probe, asegunrandome antes de ponerle la conexion a la base de datos y corregir eso ...
Bueno, y me aparecen estos errores:

Notice: Undefined index: 'link','fotolog','secciones' in c:\archivos de programa\easyphp1-8\www\mejor\configurando\me_ayudaron.php on line 17
muestra el contenido de


Notice: Undefined index: 'link','fotolog','secciones' in c:\archivos de programa\easyphp1-8\www\mejor\configurando\me_ayudaron.php on line 19
no mostrar el contenido de


Notice: Undefined index: 'link','fotolog','secciones' in c:\archivos de programa\easyphp1-8\www\mejor\configurando\me_ayudaron.php on line 19
no mostrar el contenido de


De todos modos, como podria haber seleccionado el registro para ponerlo en otro lugar de la página??

Creo que en ese codigo lo hace todo en un while y por ende me lo ejecuta todo de corrido( uno tras otro) y yo eso lo voy a usar en distintas partes de la pagina :|

Bueno eso, Gracias de todos modos ;P
  #4 (permalink)  
Antiguo 06/01/2008, 23:06
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Simplificar este codigo?

exactamente como dice okram, para que ir opcion por opcion, basta con meter todo eso en un for, como? asi como te lo puso, claro es la idea, no esperes que te pongan un codigo con lujo, la idea aqui es demostrarte como seria, lo demas corre por ti, no entiendes lo que puso el?
no sabes mucho de php? te aconsejo que leas un poquito mas, aun asi..

lo que el hizo fue meter las opciones a un arreglo y de ahi ir tomandolas y metiendolas en la consulta, asi la opcion se meteria dentro del query e iria cambiando con cada iteracion del for e ir ejecutando cada una de las opciones subsecuentemente.. y te cambio la consulta usando un IN, que en terminos generales esta bien!
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #5 (permalink)  
Antiguo 07/01/2008, 12:58
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Simplificar este codigo?

Cita:
Iniciado por vevni Ver Mensaje
exactamente como dice okram, para que ir opcion por opcion, basta con meter todo eso en un for, como? asi como te lo puso, claro es la idea, no esperes que te pongan un codigo con lujo, la idea aqui es demostrarte como seria, lo demas corre por ti, no entiendes lo que puso el?
no sabes mucho de php? te aconsejo que leas un poquito mas, aun asi..

lo que el hizo fue meter las opciones a un arreglo y de ahi ir tomandolas y metiendolas en la consulta, asi la opcion se meteria dentro del query e iria cambiando con cada iteracion del for e ir ejecutando cada una de las opciones subsecuentemente.. y te cambio la consulta usando un IN, que en terminos generales esta bien!
Pues si, nose mucho de php, estoy aprendiendo, con practica, no me gusta mucho leer extentos manuales y ese tipo de cosas :P Pero eso no es el caso..

Bueno respecto al codigo que me dejaron, entendi algo, pero como tendria que hacer para cada opcion y mostrarla en diferentes partes de la pagina :S

Última edición por luckxhor; 07/01/2008 a las 15:17
  #6 (permalink)  
Antiguo 07/01/2008, 15:01
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Simplificar este codigo?

Cita:
Iniciado por luckxhor Ver Mensaje
[...]como tendria que hacer para cada seccion y mostrarla en diferentes partes de la pagina :S
Pero si el numero de registros, y por lo tanto de iteraciones es variable, ...

Osea, va a haber partes de la pagina que algunas veces tengan su seccion, y otras no variablemente? Explica bien que es lo que deseas.

Al final, recuerda que cada vez que ejecutas mysql_fetch_assoc() el puntero interno del array se mueve en una posicion, por lo que en vez de ejecutar el bucle podrias hacerlo manualmente:

Código PHP:
//Aca agregas los registros -.-
$opciones = array("link""fotolog""secciones");
 
$op = array();
foreach(
$opciones as $v) {
    
$op[] = "'".mysql_real_escape_string($v)."'";
}
$op implode(",",$op);
 
$consulta "Select * From config WHERE opcion in ($op)"
$result mysql_query($consulta,$link); 
 
//Seccion 1:
if($row mysql_fetch_array($result)) {
    if(
$row['valor'] == "si"){ 
        
/*
        Aca habia un error en el primer codigo que te indique,
        es por eso que te daba esos mensajes de error. Debía
        decir $row['opcion'] y yo puse $row[$op]
        */
        
echo "muestra el contenido de {$row['opcion']}<br><br>"
    } else {  
        echo 
"no mostrar el contenido de {$row['opcion']}<br><br>";  
    }
}  
 
///Bla bla bla
 
//Seccion 2:
if($row mysql_fetch_array($result)) {
    if(
$row['valor'] == "si"){ 
        echo 
"muestra el contenido de {$row['opcion']}<br><br>"
    } else {  
        echo 
"no mostrar el contenido de {$row['opcion']}<br><br>";  
    }
}  
 
///Bla bla bla
 
//Seccion 3:
if($row mysql_fetch_array($result)) {
    if(
$row['valor'] == "si"){ 
        echo 
"muestra el contenido de {$row['opcion']}<br><br>"
    } else {  
        echo 
"no mostrar el contenido de {$row['opcion']}<br><br>";  
    }

Un saludo,
  #7 (permalink)  
Antiguo 07/01/2008, 15:33
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Simplificar este codigo?

Muchas gracias por tu constante ayuda :D
bueno intente nuevamente y donde dice {$row['opcion']}
se supone que tengo que colocar la opcion, en este caso fotolog, o link o secciones ...

le agregue la base de datos y todo
y me aparecen errores de nuevo :


Notice: Undefined index: fotolog in c:\archivos de programa\easyphp1-8\www\mejor\configurando\me_ayudaron.php on line 25
muestra el contenido de


Notice: Undefined index: link in c:\archivos de programa\easyphp1-8\www\mejor\configurando\me_ayudaron.php on line 38
no mostrar el contenido de


Notice: Undefined index: secciones in c:\archivos de programa\easyphp1-8\www\mejor\configurando\me_ayudaron.php on line 49
no mostrar el contenido de



y eso :S

Última edición por luckxhor; 07/01/2008 a las 15:45
  #8 (permalink)  
Antiguo 07/01/2008, 15:39
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Simplificar este codigo?

Aparentemente el error esta en la consulta. Coloca:
Código PHP:
$result mysql_query($consulta,$link) or die(mysql_error()); 
Si la consulta es el problema, agregar el die(mysql_error()); despues de realizarla te dirá cuál es el error.

Un saludo,
  #9 (permalink)  
Antiguo 07/01/2008, 15:58
 
Fecha de Ingreso: enero-2008
Ubicación: en Punta Arenas
Mensajes: 47
Antigüedad: 16 años, 3 meses
Puntos: 0
Re: Simplificar este codigo?

bueno, estube mirando y fue error mio, me equivoque en poner la base de datos le habia puesto una que no tenia los datos :)
Bueno despues me salio otro error, que no recuerdo, pero era porque en todos donde decia $row[opcion] le puse a opcion el nombre de la opcion(fotolog,link,etc), por eso daba eeror, bueno , despues lo deje como estaba en opcion, y todo me funciono bien :D
Pero lo malo es que no sabria como saber cual es cual en momento de poner elcontenido a la página, porque me lo ordena segun la posicion que esta en la base de datos en este caso me muestra esto:

muestra el contenido de secciones

no mostrar el contenido de fotolog

no mostrar el contenido de link


los valores de los 3 esta bien y todo..
lo unico complicado es para saber cual if corresponde a cual :|

Gracias igual por toda la ayuda :)
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 15:32.