Foros del Web » Programando para Internet » PHP »

[Ayuda]Problema con evaluacion if

Estas en el tema de [Ayuda]Problema con evaluacion if en el foro de PHP en Foros del Web. tengo un problema muy feito, hace como 2 dia busco y busco y no encuentro solucion mi codigo es este Funcion Código PHP: function  Consulta ...
  #1 (permalink)  
Antiguo 02/11/2012, 11:38
Avatar de dany0425  
Fecha de Ingreso: julio-2012
Ubicación: Colombia
Mensajes: 16
Antigüedad: 11 años, 9 meses
Puntos: 3
Exclamación [Ayuda]Problema con evaluacion if

tengo un problema muy feito, hace como 2 dia busco y busco y no encuentro solucion mi codigo es este

Funcion
Código PHP:
function Consulta($s,$t,$f,$c){
    global 
$host;
    global 
$usuario;
    global 
$clave;
    global 
$db_other;        
$link mysql_connect($host,$usuario,$clave);
mysql_select_db($db_other,$link);
    
$sql sprintf("SELECT ".$s." FROM ".$t." WHERE ".$f."='".$c."'");
    
$query mysql_query($sql,$link) or die (mysql_error());
    
$row mysql_fetch_array($query) or die (mysql_error());
    return 
$row[$f];    
mysql_close($link);

Registro
Código PHP:
if(Consulta('*','cuentas','cuenta',$rcuenta) == $rcuenta){
                    echo 
"La cuenta ya existe !";
                }elseif(
Consulta('*','cuentas','apodo',$rapodo)==$rapodo) {
                    echo 
"La apodo ya existe !";
                    }else{ 
ayudemen porfa! estoy desesperado D: lo que ocurre es que cuando no se cumple el primer if no se va a else sino que no se que pasa, se queda sin evaluar el elseif
  #2 (permalink)  
Antiguo 02/11/2012, 19:37
 
Fecha de Ingreso: noviembre-2010
Mensajes: 62
Antigüedad: 13 años, 5 meses
Puntos: 11
Respuesta: [Ayuda]Problema con evaluacion if

El error esta en return $row[$f], la manera correcta seria:

return $row["'".$f."'"];
  #3 (permalink)  
Antiguo 02/11/2012, 23:30
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: [Ayuda]Problema con evaluacion if

No es correcto que en una función tengas conexión, consulta y desconexión de la base de datos, mucho menos cuando no sabes si realizarás dos o más consultas.

Aparte, hay la posibilidad de que la consulta no genere resultados, por lo que finalizaría el script cuando mysql_fetch_array() devuelva falso.

Código PHP:
Ver original
  1. // Primero estableces la conexión y seleccionas la base de datos
  2. $link = mysql_connect($host,$usuario,$clave);
  3. mysql_select_db($db_other,$link);
  4.  
  5. // Tu función quedaría más o menos así:
  6. // Cambié los nombres de variables, suponiendo la intención
  7. function Consulta($campos, $tabla, $filtro, $valor) {
  8.     global $link; // No es recomendable esto..., pero sólo vamos por la lógica
  9.     $sql = "SELECT $campos FROM $tabla WHERE $filtro = '$valor'";
  10.     $query = mysql_query($sql, $link) or die (mysql_error());
  11.     // Devuelves verdadero si ya existe o falso si no
  12.     if(mysql_num_rows($query) > 0) {
  13.           return true;
  14.     } else {
  15.           return false;
  16.     }
  17. }
  18.  
  19. // Ahora, la función devuelve solo verdadero o falso
  20. // Por cierto, no necesitas leer todo el registro (*), sólo un campo
  21. if(Consulta('cuenta', 'cuentas', 'cuenta', $rcuenta)) {
  22.      echo "La cuenta ya existe !";
  23. } else if(Consulta('apodo', 'cuentas', 'apodo', $rapodo)) {
  24.      echo "El apodo ya existe !";
  25. } else {
  26.      // Es una cuenta nueva
  27. }
  28.  
  29. // No es necesario cerrar la conexión a base de datos
  30. // Pero, si lo deseas, hazlo al final de tu script
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: evaluacion, mysql, registro, sql, usuarios
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 03:42.