Foros del Web » Programando para Internet » PHP »

problema con mi propia funcion

Estas en el tema de problema con mi propia funcion en el foro de PHP en Foros del Web. hola amigos tengo un scripts que muestra las diferentes secciones de mi pagina......segun una variable que llega desde un link........www.mipagina.com/ver_secciones.php?secciones=juegos este es codigo de ver_secciones.php ...
  #1 (permalink)  
Antiguo 31/03/2003, 20:32
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
problema con mi propia funcion

hola amigos tengo un scripts que muestra las diferentes secciones de mi pagina......segun una variable que llega desde un link........www.mipagina.com/ver_secciones.php?secciones=juegos
este es codigo de ver_secciones.php
Código PHP:
<?php
    
function (ver_tabla){
    
mysql_connect("localhost""""");
    
$result mysql_db_query("downwarez""SELECT * FROM $secciones ORDER BY c_fecha DESC") or die (mysql_error());
    echo 
"<table width='100%' border=1 cellspacing='0' align='center' bordercolor='#000000' class='tabla'>\n";
    echo 
"<tr>
              <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Nickname</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Warez</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Descripcion</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Direccion</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Crack</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Fecha</font></div>
            </td>
        </tr>\n"
;;
$lista_colores=array('#4682B4','FF7F50');
$num_colores=2;
$indice=0;
while (
$row=mysql_fetch_array($result)){

$color=$lista_colores[$indice $num_colores];
$indice++;

echo 
"<tr bgcolor=\"$color\">";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_nickname]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_warez]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_descripcion]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_direccion]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_crack]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_fecha]</font></td>";
echo 
" </tr>\n";
}
echo 
"</table>";
mysql_free_result ($result); ///liberamos la memoria
mysql_close(); ////cerramos la conexion
echo "</BODY>";
echo 
"</HTML>";
}
switch (
$secciones) {
            case 
juegos:
                
ver_tabla();
                break;
            case 
programacion:
                
ver_tabla();
                break;
            case 
multimedia:
                
ver_tabla();
                break;
                case 
xxx:
                
ver_tabla();
                break;
            case 
webmasters:
                
ver_tabla();
                break;
            case 
graficos_3d:
                
ver_tabla();
                break;
            case 
hacking_cracking:
                
ver_tabla();
                break;
            case 
os_s:
                
ver_tabla();
                break;
            case 
seguridad:
                
ver_tabla();
                break;
            case 
internet:
                
ver_tabla();
                break;
            case 
utilidades:
                
ver_tabla();
                break;        

?>
si alguien sabe algo al respecto se lo agradeceria!
  #2 (permalink)  
Antiguo 31/03/2003, 23:17
 
Fecha de Ingreso: febrero-2003
Ubicación: Viña del Mar
Mensajes: 85
Antigüedad: 21 años, 2 meses
Puntos: 2
donde dice :

function (ver_tabla){

debe decir :
function ver_tabla(){

y lo otro que se puede ver es que le falta las comillas a todos los case's...

donde dice:
case juegos:
debe decir
case "juegos":

y asi para todos los cases...


Espero que te sirva..

SaluTeS
__________________
http://www.zypper.cl/blues.gif
(web-hosting)

  #3 (permalink)  
Antiguo 01/04/2003, 09:08
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
tienes razon.....es function ver_tabla() ......pero con respecto a que los case llevan "" eso no es asi.

Un Saludo y Gracias!
  #4 (permalink)  
Antiguo 01/04/2003, 10:19
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

fmmeson, siento decirte que estas equivocado. En PHP todas las cadenas de texto tienen que ir delimitadas con comillas, ya sean simples o dobles. Por lo que tus case deben ir con comillas. Es un error, y si configuras PHP para que te muestre todos los mensajes (E_ALL), veras que en cada case salta un Notice indicando el error.

En PHP una cadena sin comillas es un identificador de constante, el nombre de una constante definida con define().

Lo que pasa es que PHP es muy listo. Le pones la cadena sin comillas y piensa que es una constante. Pero al no encontrarla dentro de su lista de constantes definidas, PHP le da el valor de la propia cadena. Por eso funciona. Porque PHP hace internamente esa sustitucion. Pero nadie asegura que sirva para siempre.

Ademas, imaginate que has definido la constate juegos con el valor 'canicas'. Entonces el case juegos: solo se ejecutara en el caso de que la variable del switch valga 'canicas'.

Lo mismo pasa cuando usas cadenas como indices de arrays asociativos. Deben ir con comillas.

Saludos.

PD: que funcione no quiere decir que sea correcto.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
  #5 (permalink)  
Antiguo 01/04/2003, 18:29
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
gracias....josemi....me diste una verdadera leccion.....yo no las puse porque no las vi en el manual de php, seguro se me paso. Gracias!
  #6 (permalink)  
Antiguo 01/04/2003, 18:45
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
sigo con el mismo problema y es codigo quedo asi.....si encuentran alguna cosa.....se lo agradeceria
Código PHP:
<?php
function ver_tabla() {
echo <<< HTML
<HTML>
<HEAD>
<TITLE>Downwarez</TITLE>
<link href="estilo.css" rel="stylesheet" rev="stylesheet" type="text/css">
</HEAD>
<BODY>
<br>
<br>
HTML;
    echo 
"<table width='100%' border=1 cellspacing='0' align='center' bordercolor='#000000' class='tabla'>\n";
    echo 
"<tr>
              <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Nickname</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Warez</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Descripcion</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Direccion</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Crack</font></div>
            </td>
            <td bgcolor=#cccccc class='td'>
            <div align='center'><font color='#000000'>Fecha</font></div>
            </td>
        </tr>\n"
;;
$lista_colores=array('#4682B4','FF7F50');
$num_colores=2;
$indice=0;
while (
$row=mysql_fetch_array($result)){

$color=$lista_colores[$indice $num_colores];
$indice++;

echo 
"<tr bgcolor=\"$color\">";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_nickname]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_warez]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_descripcion]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_direccion]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_crack]</font></td>";
echo 
"<td bgcolor=\"$color\" align=\"center\"><font color=\"#000000\">$row[c_fecha]</font></td>";
echo 
" </tr>\n";
}
echo 
"</table>";
mysql_free_result ($result); ///liberamos la memoria
mysql_close(); ////cerramos la conexion
echo "</BODY>";
echo 
"</HTML>";
}
switch (
$secciones) {
            case 
"juegos":
                
mysql_connect("localhost""""");
                
$result mysql_db_query("downwarez""SELECT * FROM juegos ORDER BY c_fecha DESC") or die (mysql_error());
                
ver_tabla();
                break;
            case 
"programacion":
                
ver_tabla();
                break;
            case 
"multimedia":
                
ver_tabla();
                break;
                case 
"xxx":
                
mysql_connect("localhost""""");
                
$result mysql_db_query("downwarez""SELECT * FROM xxx ORDER BY c_fecha DESC") or die (mysql_error());
                
ver_tabla();
                break;
            case 
"webmasters":
                
ver_tabla();
                break;
            case 
"graficos_3d":
                
ver_tabla();
                break;
            case 
"hacking_cracking":
                
ver_tabla();
                break;
            case 
"os_s":
                
ver_tabla();
                break;
            case 
"seguridad":
                
ver_tabla();
                break;
            case 
"internet":
                
ver_tabla();
                break;
            case 
"utilidades":
                
ver_tabla();
                break;        

?>
  #7 (permalink)  
Antiguo 01/04/2003, 20:55
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Tienes que tener cuidado con el ambito (scope) de las variables .. (revisa el manual de PHP para mas info)

Usas en tu función ver_tabla() .. funciones de msyql . pero la conexíon la haces "fuera" de la función ..

Deberías:
Hacer la conexión en la funcion ver_tabla() dentro .. o bien pasarle como parámetro (o referencia) tu variable $result.

tu función:
fuction ver_tablas($result){

Y las llamadas a tu función:
ver_tabla($result);

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #8 (permalink)  
Antiguo 01/04/2003, 22:59
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
Un vez mas gracias Cluster.....
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 02:56.