Foros del Web » Programando para Internet » PHP »

Problema con num_rows

Estas en el tema de Problema con num_rows en el foro de PHP en Foros del Web. Estoy teniendo problemas a la hora de crear un sistema de seguimiento de visitas. el caso es que en el If que depende del resultado ...
  #1 (permalink)  
Antiguo 17/11/2008, 12:02
 
Fecha de Ingreso: noviembre-2006
Mensajes: 75
Antigüedad: 18 años
Puntos: 2
Problema con num_rows

Estoy teniendo problemas a la hora de crear un sistema de seguimiento de visitas.

el caso es que en el If que depende del resultado de $comprueba, siempre mete resultado en la base de datos pero como registro nuevo, no actualiza si ya existe. porfavor, kien tenga un momento y pueda echarle un ojo se lo agradeceria. estoy un poco perdido ya que no se como ponerlo, he intentado varios metodos pero ninguno me funciona como quisiera.

<?php

include("includes/conexion/conecta.php");
$resultados = mysql_query("SELECT ip FROM `visitas` WHERE ip='$ip'");
$comprueba = mysql_num_rows($resultados,$conecta);
if ($comprueba != 0){
$actualiza_visitas = "UPDATE `visitas` SET fecha='$fecha' contador='$contador' ultima_url='$ultima_url' WHERE idsession='$idsession'";
mysql_query($actualiza_visitas,$conecta);
}else{
$crea_visita = "INSERT INTO `visitas` (id, idsession, ip, fecha, contador, primera_url, ultima_url, proviene) VALUES ('', '$idsession', '$ip', '$fecha', '$contador', '$primera_url', '$ultima_url', '$proviene')";
mysql_query($crea_visita,$conecta);
}
include("includes/conexion/cierra_conecta.php");
?>


muchas gracias por vuestro tiempo y apoyo
  #2 (permalink)  
Antiguo 17/11/2008, 12:06
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 16 años, 4 meses
Puntos: 105
Respuesta: Problema con num_rows

haber tus error es el siguiente:

esta asi:
$actualiza_visitas = "UPDATE `visitas` SET fecha='$fecha' contador='$contador' ultima_url='$ultima_url' WHERE idsession='$idsession'";


le faltan comas, dejalo asi:
$actualiza_visitas = "UPDATE `visitas` SET fecha='$fecha', contador='$contador', ultima_url='$ultima_url' WHERE idsession='$idsession'";


Y NADA MAS, ya que no se que viene en las variables.....

a cierto, mejor tambien as asi:

$comprueba = mysql_num_rows($resultados);
if ($comprueba >= 0){


es decir, ya no le mandes la variable de conexion... ya no necesario.

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #3 (permalink)  
Antiguo 17/11/2008, 12:24
 
Fecha de Ingreso: noviembre-2006
Mensajes: 75
Antigüedad: 18 años
Puntos: 2
Respuesta: Problema con num_rows

Muchas gracias por tu rapidez de respuesta, he probado con lo que dices pero sigo en las mismas. incluso ahora no arroja ningun error pero tampoco graba en la base de datos. me estoy volviendo loco con esto y seguro que es una tonteria.

$resultados = mysql_query("SELECT ip FROM `visitas` WHERE ip='$ip'");
$comprueba = mysql_num_rows($resultados);
if ($comprueba >= 0){
$actualiza_visitas = "UPDATE `visitas` SET fecha='$fecha', contador='$contador', ultima_url='$ultima_url' WHERE idsession='$idsession'";
mysql_query($actualiza_visitas);
}
else{
$crea_visita = "INSERT INTO `visitas` (id, idsession, ip, fecha, contador, primera_url, ultima_url, proviene) VALUES ('', '$idsession', '$ip', '$fecha', '$contador', '$primera_url', '$ultima_url', '$proviene')";
mysql_query($crea_visita);
}

voy a ducharme seguramente luego lo vea desde otro punto de vista.
  #4 (permalink)  
Antiguo 17/11/2008, 12:28
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 16 años, 4 meses
Puntos: 105
Respuesta: Problema con num_rows

ps la verdad, ayi las sentencias ahora si estan bien....

ya solo queda depender de las variables que usas, quizas un tipo de campo sea incorrecto o algo asi....

lo mas optimo es hacer:
mysql_query($actualiza_visitas) or die(mysql_error());

o has un hecho de las cadenas sql para que veas que trae.

Suerte.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #5 (permalink)  
Antiguo 17/11/2008, 14:43
Avatar de fodsite  
Fecha de Ingreso: agosto-2005
Ubicación: Talca
Mensajes: 20
Antigüedad: 19 años, 3 meses
Puntos: 3
Respuesta: Problema con num_rows

¿Cómo obtienes los valores de las variables?

Ten cuidado porque generalmente en un servidor Windows puedes recibir variables solo usando '$variable', independiente que sea POST o GET.

En un Servidor Web Linux, por defecto debes indicar la forma de recibir la variable:

'$_GET[variable]'
'$_POST[variable]'

Lo anterior depende del metodo con que envies tu form.

Saludos.
  #6 (permalink)  
Antiguo 17/11/2008, 16:52
 
Fecha de Ingreso: noviembre-2002
Mensajes: 1.341
Antigüedad: 22 años
Puntos: 17
Respuesta: Problema con num_rows

Para matizar el último comentario, no depende del sistema operativo, sino de la directiva Register_Globals, configurable en el php.ini y que se aconseja que esté desactivada para no acceder directamente a variables de los arrays superglobales.

Con respecto al error, comprueba que la consulta SQL esté correcta, que IP tenga el valor correcto.
  #7 (permalink)  
Antiguo 18/11/2008, 05:06
 
Fecha de Ingreso: noviembre-2006
Mensajes: 75
Antigüedad: 18 años
Puntos: 2
Respuesta: Problema con num_rows

gracias a los dos pero... no funciona :-s

ya no se que hacer, aqui os dejo el codigo al completo y si podeis decirme algo os lo agradeceria, ahora mismo ni muestra error ni guarda en BD, solo muestra los datos que se supone que tendria que guardar

if(isset($_SESSION['contador'])) {
$contador = $_SESSION['contador']++;
$contador = $_SESSION['contador'];
} else {
$_SESSION['contador'] = 1;
$contador = $_SESSION['contador'];
}

if (getenv(HTTP_X_FORWARDED_FOR)) {
$ip = getenv(HTTP_X_FORWARDED_FOR);
} else {
$ip = getenv(REMOTE_ADDR);
}

$fecha=date("F j, Y, g:i a");

$primera_url = "$_SERVER[REQUEST_URI]";

$ultima_url = "$_SERVER[REQUEST_URI]";

$proviene = getenv("HTTP_REFERER");


////////estas lineas son de comprobacion, para ver los datos que voy a meter////////
echo "$ip<br>";
echo "$contador<br>";
$idsession = session_id();
echo "$idsession<br>";
echo "$primera_url<br>$ultima_url<br>$proviene";
////////////////////////////////////////////////////////////////////////////////////

include("includes/conexion/conecta.php");

$resultados = mysql_query("SELECT ip FROM visitas WHERE idsession='$idsession'") or die(mysql_eror());
$comprueba = mysql_num_rows($resultados) or die (mysql_error());

if ($comprueba >= 0){

$actualiza_visitas = "UPDATE visitas SET fecha='$fecha', contador='$contador', ultima_url='$ultima_url' WHERE idsession=".'$idsession';
mysql_query($actualiza_visitas) or die(mysql_eror());

}else{

$crea_visita = "INSERT INTO visitas (id, idsession, ip, fecha, contador, primera_url, ultima_url, proviene) VALUES ('', '$idsession', '$ip', '$fecha', '$contador', '$primera_url', '$ultima_url', '$proviene')";
mysql_query($crea_visita) or die(mysql_eror());

}

mysql_free_result($comprueba);

include("includes/conexion/cierra_conecta.php");

Si lo veis necesario os cuelgo tambien la estructura de la tabla.

saludos y muchas gracias a todos por vuestro tiempo
  #8 (permalink)  
Antiguo 18/11/2008, 07:59
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 16 años, 4 meses
Puntos: 105
Respuesta: Problema con num_rows

chamo pero tu codigo que enredado que es..... pero vale quer aqui te va lo que puedo apoyarte.....

Código PHP:
if(isset($_SESSION['contador'])) {
$_SESSION['contador']++;
$contador $_SESSION['contador'];
} else {
$contador 1;
$_SESSION['contador'] = $contador;
}

$ip $_SERVER['REMOTE_ADDR'];

$fecha=date("F j, Y, g:i a");

$primera_url "$_SERVER[REQUEST_URI]";//????

$ultima_url "$_SERVER[REQUEST_URI]";//????

$proviene getenv("HTTP_REFERER");//????


////////estas lineas son de comprobacion, para ver los datos que voy a meter////////
echo "$ip<br>";
echo 
"$contador<br>";
$idsession session_id();
echo 
"$idsession<br>";
echo 
"$primera_url<br>$ultima_url<br>$proviene";
////////////////////////////////////////////////////////////////////////////////////

include("includes/conexion/conecta.php");

$resultados mysql_query("SELECT ip FROM visitas WHERE idsession='$idsession'") or die(mysql_error());//es error no eror
$comprueba mysql_num_rows($resultados);//aqui no va "or die"

if ($comprueba >= 0){

$actualiza_visitas "UPDATE visitas SET fecha='$fecha', contador='$contador', ultima_url='$ultima_url' WHERE idsession='$idsession'";//has bien la sentencia
mysql_query($actualiza_visitas) or die(mysql_error());//es error no eror

}else{

$crea_visita "INSERT INTO visitas (id, idsession, ip, fecha, contador, primera_url, ultima_url, proviene) VALUES ('', '$idsession', '$ip', '$fecha', '$contador', '$primera_url', '$ultima_url', '$proviene')";
mysql_query($crea_visita) or die(mysql_error());//es error no eror

}

//mysql_free_result($comprueba);//esto es para un query no para un mysql_num_rows

include("includes/conexion/cierra_conecta.php"); 
Bueno, ese es mi aporte...... espero te sirva

SUERTE.
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #9 (permalink)  
Antiguo 18/11/2008, 09:59
 
Fecha de Ingreso: noviembre-2006
Mensajes: 75
Antigüedad: 18 años
Puntos: 2
Respuesta: Problema con num_rows

Despues de seguir urgando he conseguido hacer que funcione, aqui dejo las sentencias para quien lo quiera consultar.

include("includes/conexion/conecta.php");

$resultados = mysql_query("SELECT * FROM visitas WHERE idsession='$idsession'") or die(mysql_error());

if (mysql_num_rows($resultados) <= 0){

$crea_visita = "INSERT INTO visitas (id, idsession, ip, fecha, contador, primera_url, ultima_url, proviene) VALUES ('', '$idsession', '$ip', '$fecha', '$contador', '$primera_url', '$ultima_url', '$proviene')";
mysql_query($crea_visita) or die(mysql_error());

}else{

$actualiza_visitas = "UPDATE visitas SET fecha='$fecha', contador='$contador', ultima_url='$ultima_url' WHERE idsession='$idsession'";
mysql_query($actualiza_visitas) or die(mysql_error());

}

mysql_free_result($resultados);

include("includes/conexion/cierra_conecta.php");

este hilo puede cerrarse
  #10 (permalink)  
Antiguo 18/11/2008, 10:03
Avatar de masterojitos  
Fecha de Ingreso: julio-2008
Ubicación: Lima Callao Chucuito
Mensajes: 1.931
Antigüedad: 16 años, 4 meses
Puntos: 105
Respuesta: Problema con num_rows

ehhhh y que cambiaste ah????
que donde estaba tu error????

que no te sirvieron los otros post o no sabes agradecer????

en fin.........
__________________
Atte. MasterOjitos :ojotes:
Todo sobre Programación Web
Las ultimas tendencias en Efectos y Recursos Web: MasterOjitos Blog
  #11 (permalink)  
Antiguo 18/11/2008, 10:23
 
Fecha de Ingreso: noviembre-2006
Mensajes: 75
Antigüedad: 18 años
Puntos: 2
Respuesta: Problema con num_rows

perdona, con la emocion se me ha ido, no te me ralles chewaca ;)

gracias por vuestras ayudas

deberia haber mas gente como vosotros en el mundo
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 12:08.