Foros del Web » Programando para Internet » PHP »

problemas con el select

Estas en el tema de problemas con el select en el foro de PHP en Foros del Web. Hola, soy bastante novato en esto, y no manejo bien el select ni el mysql_fetch_row, mysql_fetch_assoc. Lo entiendo bien en teoría, pero luego hago códigos ...
  #1 (permalink)  
Antiguo 20/08/2009, 13:31
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
problemas con el select

Hola, soy bastante novato en esto, y no manejo bien el select ni el mysql_fetch_row, mysql_fetch_assoc. Lo entiendo bien en teoría, pero luego hago códigos de ejemplo y no me funcionan. Por ejemplo este, que recibe un usuario y contraseña por POST, luego quiero que mire si está en la base de datos y si está me los muestre. Sé que hay otras maneras más fáciles de hacer esto, pero lo que quiero es aprender a usar estas funciones y saber qué es lo que está mal, porque lo he revisado mil veces y no veo error.

El código al ejecutarse no hace nada en absoluto, no muestra nada, ni error ni nada de nada.

Código:
<?php
$lognick=$_POST['usuario'];
$logpass=$_POST['contrasena'];
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$result=mysql_query("select nick, contraseña from autores WHERE nick='$lognick' AND contraseña='$logpass'")or die (mysql_error()); 
if (!result){
    echo "sin resultado";
    }
else{
$fila = mysql_fetch_assoc($result)or die (mysql_error());
    $valor=$fila["nick"] ;
    echo "$valor";
     
echo "aqui estoy";
}
?>
  #2 (permalink)  
Antiguo 20/08/2009, 13:38
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: problemas con el select

prueba quitando el or die de aqui

$fila = mysql_fetch_assoc($result)or die (mysql_error());

y pon

$fila = (mysql_fetch_assoc($result));
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #3 (permalink)  
Antiguo 20/08/2009, 13:38
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: problemas con el select

if (!$result){ <-- aqui te olvidaste el $ si no lo quieres usar prueba con EUR xD

Última edición por nonpublic; 20/08/2009 a las 13:47
  #4 (permalink)  
Antiguo 20/08/2009, 13:41
Avatar de kaninox  
Fecha de Ingreso: septiembre-2005
Ubicación: In my House
Mensajes: 3.597
Antigüedad: 18 años, 7 meses
Puntos: 49
Respuesta: problemas con el select

ups si, hay puedes hacer

if (mysql_num_rows($result) == '0'){
__________________
Gokuh Salvo al mundo. PUNTO!!!!
  #5 (permalink)  
Antiguo 20/08/2009, 13:47
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: problemas con el select

en el if te falta el signo $ de la variable

lo otro es al seleccionar la base de datos agrega comillas
mysql_select_db(dbimagenes,$link);

pone
mysql_select_db("dbimagenes", $link);

intenta con eso
  #6 (permalink)  
Antiguo 20/08/2009, 15:21
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el select

Bueno, he hecho todo lo que habéis dicho y este es el código resultante:


Código:
<?php
$lognick=$_POST['usuario'];
$logpass=$_POST['contrasena'];
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$result=mysql_query("select nick, contraseña from autores WHERE nick='$lognick' AND contraseña='$logpass'"); 
if (mysql_num_rows($result) == '0'){
    echo "sin resultado";
    }
else{
$fila = mysql_fetch_assoc($result);
    $valor=$fila["$nick"] ;
    echo "$valor";
    echo "aqui estoy";
}
?>
El resultado es que si meto un usuario y contraseña incorrectos me dice sin resultado, y si son corerctos me dice aquí estoy, pero no me muestra el usuario y contraseña.

He mirado mysql_fetch_assoc en el manual y viene el siguiente código de ejemplo. Por ejemplo, no entiendo por qué no puedo usar if(!$result), si lo usa en el ejemplo, cómo es que a mi no me funciona. El resto del código entiendo que está bien, al menos según el ejemplo.
Código:
<?php

$conexion = mysql_connect("localhost", "mysql_user", "mysql_password");

if (!$conexion) {
    echo "No pudo conectarse a la BD: " . mysql_error();
    exit;
}

if (!mysql_select_db("nombre_de_la_bd")) {
    echo "No ha sido posible seleccionar la BD: " . mysql_error();
    exit;
}

$sql = "SELECT id as id_usuario, nombre_completo, status_usuario
        FROM   alguna_tabla
        WHERE  status_usuario = 1";

$resultado = mysql_query($sql);

if (!$resultado) {
    echo "No pudo ejecutarse satisfactoriamente la consulta ($sql) " .
         "en la BD: " . mysql_error();
    exit;
}

if (mysql_num_rows($resultado) == 0) {
    echo "No se han encontrado filas, nada a imprimir, asi que voy " .
         "a detenerme.";
    exit;
}

// Mientras exista una fila de datos, colocar esa fila en $fila
// como una matriz asociativa
// Nota: Si solo espera una fila, no hay necesidad de usar un ciclo
// Nota: Si coloca extract($fila); dentro del siguiente ciclo,
//       estara creando $id_usuario, $nombre_completo, y $status_usuario
while ($fila = mysql_fetch_assoc($resultado)) {
    echo $fila["id_usuario"];
    echo $fila["nombre_completo"];
    echo $fila["status_usuario"];
}

mysql_free_result($resultado);

?>
  #7 (permalink)  
Antiguo 20/08/2009, 15:35
 
Fecha de Ingreso: julio-2009
Ubicación: .mysql_error ( XD )
Mensajes: 554
Antigüedad: 14 años, 9 meses
Puntos: 13
Respuesta: problemas con el select


Cita:
no entiendo por qué no puedo usar if(!$result), si lo usa en el ejemplo, cómo es que a mi no me funciona.
no te funciona porque no pusiste el signo $ de la variable como se te dijo en varias respuestas
pero si lo puedes usar!


mira... prueba asi:

Código PHP:
<?php
$lognick 
$_POST['usuario'];
$logpass $_POST['contrasena'];
$link mysql_connect ("localhost""root""");
mysql_select_db ("dbimagenes"$link);
$result mysql_query ("select nick, contraseña from autores WHERE nick='$lognick' AND contraseña='$logpass'");


if (!
$fila mysql_fetch_assoc($result)) {

$valor $fila["nick"];
echo 
"$valor";

echo 
"aqui estoy";

}

else {

echo 
"sin resultado";
}
?>


nos cuentas que tal te fue :P
  #8 (permalink)  
Antiguo 20/08/2009, 19:15
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: problemas con el select

Prueba con
Código PHP:
$fila mysql_fetch_object($result);
    
$valor=$fila->nick;
    echo 
"{$valor}";
    echo 
"aqui estoy"
  #9 (permalink)  
Antiguo 21/08/2009, 04:59
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el select

Bueno, cuando dije que no me funcionaba if(!$result), me refería a que ya había corregido lo de la falta del $, y seguía sin funcionar. cuando lo pongo así, actúa como si siempre fuera correcto el login, es decir, siempre va al else.

Twonex, tu código presenta exáctamente el mismo problema que el mío, es decir, ejecuta bien el if, pero no presenta los valores del nick y la contraseña.

Nonpublic, lo mismo.

No entiendo cómo al poner el mismo código del ejemplo no me funciona.

estoy haciendo pruebas y me pasan cosas más raras. Por ejemplo, para simplificar pongo este código:
Código:
<?php

$link = mysql_connect ("localhost", "root", "");
mysql_select_db ("dbimagenes", $link);
$result = mysql_query ("select nick, contraseña from autores WHERE nick='pacoruiz' AND contraseña='fulanito'");
$fila = mysql_fetch_assoc($result);
    $valor=$fila["nick"] ;
echo " $valor";

?>
Y me escribe pacoruiz, lo que hace pensar que el $fila = mysql_fetch_assoc($result);
está bien y el problema está en el select, pero ahora pongo este código:
Código:
<?php
$lognick=$_POST['usuario'];
$logpass=$_POST['contrasena'];
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$result = mysql_query ("select nick, contraseña from autores WHERE nick='pacoruiz' AND contraseña='fulanito'"); 
if (mysql_num_rows($result) == '0'){
    echo "sin resultado";
    }
else{
$fila = mysql_fetch_assoc($result);
    $valor=$fila["nick"] ;
    echo "$valor";
    echo "aqui estoy";
}
?>
Y me escribe sin resultado. No tiene sentido porque la consulta es la misma, la que sí encontraba el registro en el código anterior, y similar a la que funcionaba bien en el if en el código inicial. Parece que las cosas funcionan cuando les da la gana.
  #10 (permalink)  
Antiguo 21/08/2009, 05:10
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: problemas con el select

Código PHP:
Ver original
  1. <?php
  2. $lognick=$_POST['usuario'];
  3. $logpass=$_POST['contrasena'];
  4. $link=mysql_connect("localhost","root","");
  5. mysql_select_db("dbimagenes",$link);
  6. $result=mysql_query("select * from autores WHERE nick='".$lognick."' AND contraseña='".$logpass."'")or die (mysql_error());
  7. if (mysql_num_rows($result)>0){
  8.     $fila = mysql_fetch_array($result)or die (mysql_error());
  9.     echo $fila["nick"];
  10. }else{
  11.     echo "sin resultado";
  12. }
  13. ?>
__________________
Hospedaje Web al mejor costo!
  #11 (permalink)  
Antiguo 21/08/2009, 07:58
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el select

Gracias urgido, he hecho una versión de mi código añadiendo algo del tuyo y funciona. He hecho esto:

Código:
<?php
$lognick=$_POST['usuario'];
$logpass=$_POST['contrasena'];
$link=mysql_connect("localhost","root","");
mysql_select_db(dbimagenes,$link);
$result = mysql_query ("select nick, contraseña from autores WHERE nick='".$lognick."' AND contraseña='".$logpass."'"); 
if (mysql_num_rows($result) == '0'){
    echo "sin resultado";
    }
else{
$fila = mysql_fetch_assoc($result);
    $valor=$fila["nick"] ;
    echo "$valor";
    echo "aqui estoy";
}
?>
Lo que no entiendo ahora es por qué estaba mal lo mío.
  #12 (permalink)  
Antiguo 21/08/2009, 08:08
Avatar de nonpublic  
Fecha de Ingreso: agosto-2009
Mensajes: 240
Antigüedad: 14 años, 8 meses
Puntos: 4
Respuesta: problemas con el select

Quiza porque pones comillas
Cita:
mysql_num_rows($result) == '0'
  #13 (permalink)  
Antiguo 21/08/2009, 08:31
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el select

No, mi último código sí funciona. En realidad yo tampoco entiendo esas comillas, pero funciona. La pregunta es por qué no funcionaba el anterior, que según yo lo veo está bien
  #14 (permalink)  
Antiguo 21/08/2009, 13:27
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: problemas con el select

te salia un error??
__________________
Hospedaje Web al mejor costo!
  #15 (permalink)  
Antiguo 21/08/2009, 13:41
Avatar de PacoRuiz  
Fecha de Ingreso: abril-2009
Mensajes: 254
Antigüedad: 15 años
Puntos: 3
Respuesta: problemas con el select

si, bueno, puedes seguir la historia leyendo los post
  #16 (permalink)  
Antiguo 21/08/2009, 13:42
Avatar de urgido  
Fecha de Ingreso: febrero-2005
Mensajes: 2.351
Antigüedad: 19 años, 1 mes
Puntos: 25
Respuesta: problemas con el select

siento que era el mysql_fetch_assoc, es mejor fetch_array ;)
__________________
Hospedaje Web al mejor costo!
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 15:04.