Foros del Web » Programando para Internet » PHP »

Afinando el problema de la variable perdida

Estas en el tema de Afinando el problema de la variable perdida en el foro de PHP en Foros del Web. Hola amigos. Bueno, afinando el problema del porque se pierde el valor de una variable. Aqui está el error: Cita: <?php //funcion para conectar con ...
  #1 (permalink)  
Antiguo 21/12/2009, 17:42
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Afinando el problema de la variable perdida

Hola amigos. Bueno, afinando el problema del porque se pierde el valor de una variable. Aqui está el error:

Cita:
<?php
//funcion para conectar con la base de datos
function conectar(){
// Conexión a la base de datos
$dbhost='localhost';
$dbusername='nombreusuario';
$dbuserpass='*********';
$dbname='nombredatabase';
$link = mysql_connect($dbhost, $dbusername,$dbuserpass);
mysql_select_db($dbname, $link);
return $link;
}

echo $tabla; // SE IMPRIME CORRECTAMENTE EL VALOR (acciondisparos)

$id = $_GET['id'];
if($id!=""){
$voto = $_GET['v'];
$link = conectar();

$fecha = date('Y-m-d');
$result = mysql_query("DELETE FROM votos_usuarios WHERE dataCreate <> '".$fecha."'",$link);
$result = mysql_query("SELECT *FROM votos_usuarios WHERE ip = '".$realip."' and id = $id",$link);
$row = mysql_fetch_row($result);

if($row[0]==""){
$result = mysql_query("SELECT votos,media FROM $tabla WHERE id =$id",$link);
//ACA $tabla no tiene valor

$row = mysql_fetch_row($result);

$auxmedia = $row[1];
$votos =$row[0] + 1;
$media = (($row[0] * $auxmedia) + $voto)/ $votos;
//actualizamos el voto
$result = mysql_query("UPDATE $tabla SET votos= $votos, media= $media WHERE id= $id",$link);
mysql_query("INSERT INTO votos_usuarios(id,ip,dataCreate)VALUES($id,'".$rea lip."','".$fecha."')",$link);
echo "<br> \n";
echo "Gracias por votar!";
}else{ //el usuario ya ha votado para este apartado
echo "<br> \n";
echo "Ya votaste";
}
}
?>
Pero, si cambio de posicion echo $tabla; y lo pongo debajo de
$link = conectar();
entonces, la variable pierde el valor.

Cita:
$id = $_GET['id'];
if($id!=""){
$voto = $_GET['v'];
$link = conectar();

echo $tabla; // NO SE IMPRIME (se pierde el valor de la variable)
En resumen, como puedo hacer para que se mantenga el valor de la variable debajo de $link=conectar();
  #2 (permalink)  
Antiguo 21/12/2009, 17:51
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Afinando el problema de la variable perdida

Estimado , verifique el codigo ya que tabla no recibe inicialización ni valor en ninguún sector de su codigo x ende no tiene valor.

Saludos
  #3 (permalink)  
Antiguo 21/12/2009, 17:55
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Afinando el problema de la variable perdida

Perdon jonatanc, en otro archivos
Cita:
$tabla="acciondisparos";
En los demas archivos lo lee perfectamente y abre y cierra la conexion a la base de datos. Aqui es el problema, no lo lee despues del $link, pero, al principio del archivo (como mostré en el primer quote) si lo toma perfectamente.
  #4 (permalink)  
Antiguo 21/12/2009, 17:59
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Afinando el problema de la variable perdida

La conexión la realiza en un archivo supong denominado DB.php y ese lo incluye en todos los php que necesita acceso a base de datos? o en cada fichero genera una conexion a la base de datos?
  #5 (permalink)  
Antiguo 21/12/2009, 18:13
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Afinando el problema de la variable perdida

No, el archivo de conexion es el que te mostre. Incluye la conexion y la apertura de la base de datos (no los tengo separado).
Mira, encontre otro detalle (hace 4 días que estoy con este problema)

Cita:
$id = $_GET['id'];
echo $tabla;
if($id!=""){

$voto = $_GET['v'];//voto del usuario

$link = conectar();//conectamos a la base de datos
Ahi, el valor de $tabla mantiene el valor = acciondisparos. Pero si lo muevo una linea:

Cita:
$id = $_GET['id'];//pagina, apartado o noticia que se quiere votar
if($id!=""){
echo $tabla;

$voto = $_GET['v'];//voto del usuario

$link = conectar();//conectamos a la base de datos
Aqui ya $tabla pierde el valor completamente. Es decir, debajo del
Cita:
if($id!=""){
Como que si el $id está vacio, luego de ahí pierde inmediatamente el valor.
  #6 (permalink)  
Antiguo 21/12/2009, 18:17
 
Fecha de Ingreso: enero-2009
Mensajes: 408
Antigüedad: 15 años, 3 meses
Puntos: 14
Respuesta: Afinando el problema de la variable perdida

Estimado , no es de mala persona pero le recomendaria leer un manual de php para comprender que lo que usted marca como un error en realidad es una reacción natural de su codigo ya que al encontrar el id vacio , nunca ingresa a ese bloque del if.

Por otro lado en vez de
if($id!="")

ponga

if($id!=="")

Saludos.
  #7 (permalink)  
Antiguo 21/12/2009, 18:41
Avatar de CdG
CdG
 
Fecha de Ingreso: marzo-2008
Mensajes: 114
Antigüedad: 16 años, 1 mes
Puntos: 2
Respuesta: Afinando el problema de la variable perdida

,si el problema está aquí:
Código PHP:
if ($id != "") { 
verifica que id es enviada correctamente.
tabla no pierde el valor, simplemente no entra en la condición
saludos
__________________
no quiero ser un árbol y caminar
Jacinto Piedra
  #8 (permalink)  
Antiguo 21/12/2009, 18:48
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Afinando el problema de la variable perdida

Bueno, amigos, si, el error parece que está ahi nomas. Imprimi el valor de la variable y pasó. Me tira 2 errores, del mismo tipo del anterior, en las siguientes lineas:

Cita:
$result = mysql_query("SELECT *FROM votos_usuarios WHERE ip = '".$realip."' and id = $id",$link);
$row = mysql_fetch_row($result);
Y aca tambien me tira el error:

Cita:
if($row[0]==""){
$result = mysql_query("SELECT votos,media FROM $tabla WHERE id =$id",$link);
$row = mysql_fetch_row($result);
El mismo error: este es el error

Cita:
acciondisparos
Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\wamp\www\misitio\rank\rank.php on line 45

Warning: mysql_fetch_row() expects parameter 1 to be resource, boolean given in C:\wamp\www\misitio\rank\rank.php on line 50
Como ven, arriba, imprimio correctamente la variable. No se perdio, o mejor dicho como dice CdG, la variable entra ahora en la condicion.
Es el mismo problema ahora?
Muchisimas gracias, estoy viendo ahora mismo el manual php.
  #9 (permalink)  
Antiguo 21/12/2009, 19:08
 
Fecha de Ingreso: noviembre-2009
Mensajes: 164
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Afinando el problema de la variable perdida

Insisto: la variable $tabla es tomada en todo el archivo, pero me tira los errores mencionados arriba, quería saber porque, si la variable mantiene su valor (creo que puede seguir siendo un error de sintaxis). Le agregue == y comillas simples (''), pero nada, sigue tirando el error.
  #10 (permalink)  
Antiguo 26/03/2012, 21:00
 
Fecha de Ingreso: marzo-2012
Mensajes: 1
Antigüedad: 12 años
Puntos: 0
Respuesta: Afinando el problema de la variable perdida

Hola, alguien resolvio este problema creo que es el mismo que yo tengo, la variable de conexion se pierde o no se libera los datos, pero no se como resolverlo, la unica manera fue asignarle la variable de conexion cada vez que voy a hacer una consulta, por cierto estoy trabajando con porcedures.

alguna solucion ???
gracias.....
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 05:31.