Foros del Web » Programando para Internet » PHP »

Novato con funciones =(

Estas en el tema de Novato con funciones =( en el foro de PHP en Foros del Web. Holas... hasta hace poco yo manejaba mis consultas de PHP en la misma pagina donde se ejecutaban... Quiero hacer mis paginas mas dinamicas y organizadas ...
  #1 (permalink)  
Antiguo 23/06/2008, 14:14
 
Fecha de Ingreso: enero-2006
Mensajes: 20
Antigüedad: 18 años, 3 meses
Puntos: 0
Exclamación Novato con funciones =(

Holas... hasta hace poco yo manejaba mis consultas de PHP en la misma pagina donde se ejecutaban... Quiero hacer mis paginas mas dinamicas y organizadas creando las funciones aparte y solo llamandolas por medio de un
Código PHP:
<?php echo funcion() ?>
.

De momento todo bien, estuve leyendo varias guias y todo bien, el problema es al comenzar a generar mis funciones.

En mi index.php (donde se muestran las funciones) viene los includes

Código PHP:
<?php

include ('funciones/funcionesindex.php');
include (
'funciones/conectarse.php');
?>
Para llamar a las funcion uso
Código PHP:
<?php echo destacados() ?>
y en la pagina que tengo con las funciones (funcionesindex.php) tengo lo siguiente:

Código PHP:
<?php

error_reporting
(E_ALL);

//FUNCIONES PARA EL INDEX

function destacados()

{

$consulta "SELECT ID_DESTAQUE, LINK, TITULO, FECHA, IMAGEN FROM destaques ORDER BY ID_DESTAQUE limit 0,3"//Consulta a la base de datos
$query mysql_query($consulta,$link) or die(mysql_error()); // Creacion del query
$row mysql_fetch_array($query);
while(
$row=mysql_fetch_array($row)){
$resultado '

<a href=" '
$row['LINK'] . ' "><img src=" '$row['IMAGEN'] .' " border="0"></a>

'
;

return 
$resultado

}

}

?>
El detalle es que esa forma de generar la query funcionaba cuando el PHP estaba en la misma pagina (en el index.php vaya) y pues me aparece este error:


Notice: Undefined variable: link in /Users/egem/Sites/MAFancomix/funciones/funcionesindex.php on line 15

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /Users/egem/Sites/MAFancomix/funciones/funcionesindex.php on line 15


Al parecer no identifica mi variable conocida como $link que es la que conecta a la base de datos ...

conectarse.php
Código PHP:
<?php
function Conectarse()
{

   if (!(
$link=mysql_connect("localhost","root","nightmare18")))
   {
      echo 
"Error conectando a la base de datos.";
      exit();
   }
   if (!
mysql_select_db("fancomix",$link))
   {
      echo 
"Error seleccionando la base de datos.";
      exit();
   }
   return 
$link;
}

$link=Conectarse();
echo 
"";

?>
.... Y pues es eso, no se que hacer, me habian comentado algo de hacer una variable global, pero de ahi me perdi... Espero puedan ayudarme... Muchas gracias =D
  #2 (permalink)  
Antiguo 23/06/2008, 14:39
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Novato con funciones =(

Creo que debes llamar primero a "conectarse" antes de incluir las funciones!

Saludos, nos comentas
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #3 (permalink)  
Antiguo 23/06/2008, 14:45
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Novato con funciones =(

Hola EgEm, lo que pasa es que las variables no son globales por defecto, tienes que explicitamente usar global para que sean visibles para tu función.

Saludos.
  #4 (permalink)  
Antiguo 23/06/2008, 14:53
 
Fecha de Ingreso: enero-2006
Mensajes: 20
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Novato con funciones =(

Holas...

Jajaja, pues estuvo raro, estuve hablando con un amigo, y me comento de que no estaba haciendo un enlace a la base de datos... entonces al principio de la consulta debia poner ...

Código PHP:
$link=conectarse(); 
que lo que hace es llamar a la funcion conectarse...

Y adivinen... FUNCIONO :D!, pero ahora me sale este error....

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /Users/egem/Sites/MAFancomix/funciones/funcionesindex.php on line 14

:(... .Ahora al parecer el problema es el while =(

Código PHP:
while($row=mysql_fetch_array($row)){
$resultado =  
Ahora si me quedo omg, por que ya no se que hacer xDD...

Muchas gracias =D
  #5 (permalink)  
Antiguo 23/06/2008, 14:57
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Novato con funciones =(

Lo que pasa es que tu guardas en $row, el resultado de mysql_query, y luego vuelves a ocupar $row para descargar los datos con lo que sobrescribes el valor de la variable.

Cambia el nombre de tus variables y tu función funcionara de la forma correcta.

Saludos.
  #6 (permalink)  
Antiguo 23/06/2008, 15:00
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Novato con funciones =(

while ($row=mysql_fetch_array($query)){

}

y quitas la linea que dice:
$row=mysql_fetch_array($query);

debe funcionarte.

Saludos
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #7 (permalink)  
Antiguo 23/06/2008, 15:20
 
Fecha de Ingreso: enero-2006
Mensajes: 20
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Novato con funciones =(

WOoow, muchas gracias the_web_saint O_O!!!!, ya funciono :D ya no me marca error....

Pero ahora esta mas raro... xD.... que nada mas me muestra 1 registro en el resultado, y no 3, como estoy pidiendo en el SELECT...

Código PHP:
ORDER BY ID_DESTAQUE limit 0,
=( gee, que cosas... jajaja... que podria ser, deberas disculpen por tanta lata...
  #8 (permalink)  
Antiguo 23/06/2008, 15:25
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Novato con funciones =(

haz esto!:

comenta ese return que tienes dentro del while y mira que sucede!

Comentanos!!
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
  #9 (permalink)  
Antiguo 23/06/2008, 15:33
 
Fecha de Ingreso: enero-2006
Mensajes: 20
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Novato con funciones =(

Achis, :O... disculpa, ese no le entendi xD.... te referias a return $resultado;

ahorita como lo tengo ... quedo asi

Código PHP:
{
$link=conectarse();
$consulta "SELECT ID_DESTAQUE, LINK, TITULO, FECHA, IMAGEN FROM destaques ORDER BY ID_DESTAQUE limit 0,3"//Consulta a la base de datos
$query mysql_query($consulta,$link) or die(mysql_error()); // Creacion del query
while($row=mysql_fetch_array($query))

{
$resultado '

<a href=" '
$row['LINK'] . ' "><img src="imagenes/'$row['IMAGEN'] .' " border="0"></a>

'
;

}

return 
$resultado

}

?> 
Intente ponerlo adentro del while (adentro del ';), no paso nada... puse el return fue del segundo } ... y nada ... :( omg jajaja... espero puedas guiarme, jajaja soy todo un noob lo siento...
  #10 (permalink)  
Antiguo 23/06/2008, 16:54
 
Fecha de Ingreso: enero-2006
Mensajes: 20
Antigüedad: 18 años, 3 meses
Puntos: 0
Respuesta: Novato con funciones =(

Solo para avisar... ya pude xD!, muchas gracias =)...

solo era de poner un punto donde es $resultado .= xDD....

Muchas gracias espero ya no molestarlos =P Gracias!
  #11 (permalink)  
Antiguo 24/06/2008, 07:38
Avatar de the_web_saint  
Fecha de Ingreso: mayo-2008
Ubicación: localhost/tierra/america/panama
Mensajes: 1.229
Antigüedad: 15 años, 11 meses
Puntos: 43
Respuesta: Novato con funciones =(

Ahh ok, para concatenar todos los resultados, siiii

XD
__________________
..::The Saint::..
El pesimista se queja del viento; el optimista espera que cambie; el realista ajusta las velas.
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 22:12.