Foros del Web » Programando para Internet » PHP »

Duda con función y llamada

Estas en el tema de Duda con función y llamada en el foro de PHP en Foros del Web. Hola estoy desarrollando un script en PHP para optimizar un poco más el funcionamiento del sitio mio. Lo que me pasa es que he creado ...
  #1 (permalink)  
Antiguo 25/10/2003, 19:55
Avatar de Reynier  
Fecha de Ingreso: noviembre-2002
Ubicación: Por ahí en algún sitio
Mensajes: 1.844
Antigüedad: 21 años, 4 meses
Puntos: 1
Duda con función y llamada

Hola estoy desarrollando un script en PHP para optimizar un poco más el funcionamiento del sitio mio. Lo que me pasa es que he creado un archivo que se llama functions.php que contiene lo siguiente
Código PHP:
 <?php
function pagina_resultados($tabla){
$server  "localhost";
$db_user "root";
$db_pass "";
$base "tinogrm";

$con=mysql_connect($server,$db_user,$db_pass);
mysql_select_db($base,$con);

   
$pagina 0
   
$cantidad=5
   
$inicial $pagina $cantidad;
   
$pegar "SELECT * FROM ".$tabla." ORDER BY id LIMIT $inicial,$cantidad";
   
$cad mysql_db_query($base,$pegar) or die (mysql_error());
   
$contar "SELECT * FROM ".$tabla." ORDER BY id"
   
$contarokmysql_db_query($base,$contar);
   
$total_records mysql_num_rows($contarok);
   
$pages intval($total_records $cantidad);
   echo 
"<table width='100%' border=0>";
    if (
mysql_num_rows($contarok) == 0){
     echo 
"No hay campos disponibles en la Base de Datos para mostrar.";
    }
    while(
$array mysql_fetch_array($cad)) {
     echo 
"<tr><td bgcolor='".$color."'><font face='Tahoma' size='2'></font></td></tr>";
     echo 
"<tr><td>&nbsp;&nbsp;Entrada No.:&nbsp;".$array['id']."<br>";
     echo 
"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Nombre:&nbsp;".$array['adminname']."<br>";
     echo 
"<tr><td>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Correo Electrónico:&nbsp; <a href=\"javascript:VentanaPopUpMail('mailto.php?for=".$array['adminmail']."')\">".$array['adminmail']."</a><br>";
     
$colorfila = ($colorfila ) % 2;
       if (
$colorfila==0)
         
$color"#FFFFCC";
       else
         
$color="#CCCCCC";
       } 
     echo 
"<tr><td bgcolor='".$color."'><font face='Tahoma' size='2'></font></td></tr>";
     echo 
"</table>";
     
$con=mysql_close($con);
     echo 
"<p>";
     if (
$pagina <> 0)
      {
       
$url $pagina 1;
        echo 
"<a href='show.php?pagina=".$url."'>&laquo; Anterior</a>&nbsp;";
       }
       else {
        echo 
" ";
       }
    for (
$i 0$i<($pages 1); $i++) {
      if (
$i == $pagina) {
      echo 
"<font face='Tahoma' size=2 color=CCCCC><b>&nbsp;$i&nbsp;</b></font>";
    }
    else {
      echo 
"<a href='show.php?pagina=".$i."'>".$i."</a>&nbsp;";
    }
  }
  if (
$pagina $pages) {
   
$url $pagina 1;
   echo 
"<a href='show.php?pagina=".$url."'>Siguiente &raquo;</a>";
   }
  else {
   echo 
" ";
  }
 echo 
"</p>";
}
?>
en los ficheros que me hace falta usar la función pongo lo siguiente
Código PHP:
require("functions.php"); 
y en la llamada a la función la hago así, que es la que no se si está correcta
Código PHP:
pagina_resultados(admin); 
me muestra solamente los 5 primeros elementos de la tabla teniendo está mucho más de 15 y me debia poner 3 paginas resultado de la paginacion
__________________
Ing. Reynier Pérez Mira

Última edición por Reynier; 25/10/2003 a las 20:18
  #2 (permalink)  
Antiguo 25/10/2003, 23:54
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
El ambito de las variables (scope) NO es global en funciones .. debes de pasarle como parámetro a tu función las variables que uses y vengan definidas fuera de tu función .. o bien declararlas como globales en el interior de tu función.

Por ejemplo .. se vén algunas variables como $pagina que la estás asumiendo como global .. cuando no lo es en tu función .. (y seguro que tienes alguna más .. revisalo).

Repasa:
http://www.php.net/variables.scope

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 26/10/2003, 14:25
Ex Colaborador
 
Fecha de Ingreso: junio-2002
Mensajes: 9.091
Antigüedad: 21 años, 10 meses
Puntos: 16
Hola,

No es que tomes $pagina como global, es esto:
Código PHP:
$pagina 0
Es decir, siempre estas haciendo $pagina=0, la primera pagina.

Cambialo por:
Código PHP:
if (isset($_GET['pagina'])) {
  
$pagina=$_GET['pagina'];
} else {
  
$pagina=0;

Asi solo toma 0 si no recibe por URL la pagina.

Saludos.

PD: Revisa la formula de calculo de $pages, sobre todo con valores multiplos de $cantidad. Puede que no sea todo lo correcta que crees.
__________________
Josemi

Aprendiz de mucho, maestro de poco.
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:47.