Foros del Web » Programando para Internet » PHP »

Problema en if

Estas en el tema de Problema en if en el foro de PHP en Foros del Web. Tengo un problemita con este if... Código PHP: $query  =  "SELECT * FROM online ORDER BY username" ; $cad  =  mysql_db_query ( $dbname , $query  ) or die ( mysql_error ()); while( $row  =  ...
  #1 (permalink)  
Antiguo 31/12/2007, 17:37
Avatar de seinkraft  
Fecha de Ingreso: diciembre-2007
Mensajes: 119
Antigüedad: 16 años, 4 meses
Puntos: 1
Problema en if

Tengo un problemita con este if...
Código PHP:
$query "SELECT * FROM online ORDER BY username";
$cad mysql_db_query($dbname,$query ) or die (mysql_error());

while(
$row mysql_fetch_array($cad)){
 if (
$row[username] == $username){
}else{
$sql "INSERT INTO online (username, lastlogin, ip) VALUES ('$username','$lastlogin', '$ip_real')";
$result mysql_query($sql);
}

En esta parte se busca en la tabla si existe el usuario de la session en la misma y si no existe insertarlo dentro de la tabla. Esto es para evitar que se vuelva a insertar en la tabla el mismo usuario y de una lectura erronea (sistema de estadisticas: usuarios conectados, registros totales, etc...).

Pero lo que sucede es que no me inserta en la tabla el usuario sin embargo sin el if lo inserta pero si se actualiza la pagina lo inserta tantas veces como actualices la pagina y da error en las estadisticas.

codigo completo:
Código PHP:
<?
include("includes/connect.php"); 

include(
'languajes/english/register.php');

if (
$_POST['username']) {
//Comprobacion del envio del nombre de usuario y password
$username=$_POST['username'];
$password=$_POST['password'];
if (
$password==NULL) {
echo 
"La password no fue enviada"
}else{
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$data mysql_fetch_array($query);
if(
$data['password'] != $password) { 
echo 
"Wrong username/password";
}else{
$query mysql_query("SELECT username,password FROM users WHERE username = '$username'") or die(mysql_error());
$row mysql_fetch_array($query);
$_SESSION["s_username"] = $row['username'];
$_SESSION["s_lastlogin"] = $row['lastlogin'];


if (
$_SERVER) {
        if ( 
$_SERVER[HTTP_X_FORWARDED_FOR] ) {
            
$ip_real $_SERVER['HTTP_X_FORWARDED_FOR'];
}
    elseif ( 
$_SERVER['HTTP_CLIENT_IP'] ) {
            
$ip_real $_SERVER['HTTP_CLIENT_IP'];
}
else {
            
$ip_real $_SERVER['REMOTE_ADDR'];
}
}
 else {
        if ( 
getenv'HTTP_X_FORWARDED_FOR' ) ) {
            
$ip_real getenv'HTTP_X_FORWARDED_FOR' );
}
elseif ( 
getenv'HTTP_CLIENT_IP' ) ) {
            
$ip_real getenv'HTTP_CLIENT_IP' );
}
else {
            
$ip_real getenv'REMOTE_ADDR' );
}
}

$username=($_SESSION['s_username']);
$lastlogin=date("d/m/Y h:i A");

$query "SELECT * FROM online ORDER BY username";
$cad mysql_db_query($dbname,$query ) or die (mysql_error());

while(
$row mysql_fetch_array($cad)){
 if (
$row[username] == $username){
}else{
$sql "INSERT INTO online (username, lastlogin, ip) VALUES ('$username','$lastlogin', '$ip_real')";
$result mysql_query($sql);
}
}

}
}
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<link href="styles/crystal.css" rel="stylesheet" type="text/css" />
</head>
<?php 
if (isset($_SESSION['s_username'])) {
echo (
'
<body class="body">
<div class="div_container">
<div class="div_title">Log In</div>
'
);
echo (
'<div class="div_text">Welcome 
'
);
echo (
$_SESSION['s_username']);
echo (
'
<br />
<a href="logout.php">Logout</a>
</div>
</div>
<br />
</body>
'
);
}
else
{
echo(
'
<body class="body">
<form method="POST">
<div class="div_container">
<div class="div_title">Log In</div>
<div class="div_text">
Username:
<br />
<input name="username" type="text" />
<br />
<br />
Password:
<br />
<input name="password" type="password" />
<br />
<br />
<input type="submit" name="Submit" value="'
);
echo 
$lang_register["Submit"];
echo(
'
" />
</div>
<div class="div_text">
<a href="register.php">Register</a>
</div>
</form>
</body>
'
);
exit;
}
?>

</html>
Saludos y Feliz Año Nuevo.
  #2 (permalink)  
Antiguo 31/12/2007, 17:53
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Problema en if

Esto no tiene sentido:

if ($row[username] == $username){
// aca nada ????????
}else{
$sql = "INSERT INTO online (username, lastlogin, ip) VALUES ('$username','$lastlogin', '$ip_real')";
$result = mysql_query($sql);
}

Si queres negarlo hace directamente:

if ($row[username] != $username){
$sql = "INSERT INTO online (username, lastlogin, ip) VALUES ('$username','$lastlogin', '$ip_real')";
$result = mysql_query($sql);
}
__________________
Salu2!
  #3 (permalink)  
Antiguo 31/12/2007, 17:56
Avatar de seinkraft  
Fecha de Ingreso: diciembre-2007
Mensajes: 119
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: Problema en if

Igualmente siendo asi no inserta el usuario en la tabla.
  #4 (permalink)  
Antiguo 31/12/2007, 20:16
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Problema en if

este post ya se me hace conocido....
ya te habian comentado que revises el valor que le pasas, pues se pierde tu valor de la sesion, ya te comentarion que uses valores de estado osea variables y que hagas pruebas por parte imprimiendo el valor de tu session o tu variable en un determinado momento...
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #5 (permalink)  
Antiguo 31/12/2007, 20:18
Avatar de seinkraft  
Fecha de Ingreso: diciembre-2007
Mensajes: 119
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: Problema en if

Pues no, este es otro jajaja. El otro era un problema al borrar un dato de una tabla. Este es un problema que no me inserte los datos en la tabla evitando de que se dupliquen. :P
  #6 (permalink)  
Antiguo 31/12/2007, 20:23
okram
Invitado
 
Mensajes: n/a
Puntos:
Re: Problema en if

Supongo que lo que deseas hacer es evitar que se inserten dos usuarios con el mismo nombre. La mejor forma de hacerlo sería:
Código PHP:
$query "SELECT username FROM online WHERE username='$username' ORDER BY username"
$cad mysql_db_query($dbname,$query ) or die (mysql_error()); 

if (
mysql_num_rows($cad) < 1) { 
    
$sql "INSERT INTO online (username, lastlogin, ip) VALUES ('$username','$lastlogin', '$ip_real')"
    
$result mysql_query($sql); 

http://www.php.net/mysql_num_rows

Un saludo,
  #7 (permalink)  
Antiguo 31/12/2007, 20:25
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Problema en if

Código PHP:
while($row mysql_fetch_array($cad)){
 if (
$row[username] == $username){
}else{
$sql "INSERT INTO online (username, lastlogin, ip) VALUES ('$username','$lastlogin', '$ip_real')";
$result mysql_query($sql);
}

en el row[username] no tienes las comillas, ese es un pekeñisimo error que ahce que no funcione tu aplicacion....

yo no se pork usas row para acceder y comparar si el usuario existe en la bd
tan simple como hacer la consulta en la bd y comparar el usuario en la consulta....

if( mysql_num_rows()) con eso detectas si un select regresa resultados, estas deacuerdo que si regresa es pork hubo una coincidencia o hay algun registro...

espero haberte ayudado
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #8 (permalink)  
Antiguo 31/12/2007, 20:27
Avatar de vevni  
Fecha de Ingreso: julio-2005
Ubicación: cancun mexico
Mensajes: 598
Antigüedad: 18 años, 9 meses
Puntos: 3
Re: Problema en if

claro mysql_num_rows($resulset)>0
__________________
Código PHP:
echo"hola mundo ver 1221332143.02";
echo
"cuantos usuarios habran impreso hola mundo en el mundo.!???"
  #9 (permalink)  
Antiguo 01/01/2008, 02:41
Avatar de Italico76  
Fecha de Ingreso: abril-2007
Mensajes: 3.303
Antigüedad: 17 años
Puntos: 292
Re: Problema en if

Cita:
Note: Esta función es obsoleta desde PHP 4.0.6 no use esta función. Use mysql_select_db() y mysql_query().
Me parecia..... yo uso mysql_query()
__________________
Salu2!
  #10 (permalink)  
Antiguo 01/01/2008, 06:25
Avatar de seinkraft  
Fecha de Ingreso: diciembre-2007
Mensajes: 119
Antigüedad: 16 años, 4 meses
Puntos: 1
Re: Problema en if

Gracias, me funciono perfecto. Ando bastante despistado hoy en dia por algunas complicaciones en la familia :S.

Gracias por molestarse.
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 17:50.