Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: jhonatanAsm en 23 Diciembre 2011, 15:44 pm



Título: me podrian explicar el sgte codigo en php
Publicado por: jhonatanAsm en 23 Diciembre 2011, 15:44 pm
hola, creo que el sgte codigo se deberia ejecutarse una sola vez, sin embargo llega a buscar todas las filas de la tabla, por qué?
Código:
while($busca=mysqli_fetch_array($consulta))
{
if($busca['nombre']==$nombre && $busca['pass']==$pass)
echo 'ingreso';

break;//este break debería hacer que el while se ejecute una sola vez, mas no lo hace.
}//fin while

espero puedan ayudarme.salu2.


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: Pablo Videla en 23 Diciembre 2011, 15:59 pm
$consulta que trae dentro  :huh:


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: #!drvy en 23 Diciembre 2011, 17:36 pm
Citar
$consulta que trae dentro  

Pues una query x'D.

Na enserio, si pasa por todas las filas de la tabla, es porque la consulta lo indica así y/o porque usas while.

Yo veo que tienes un lio con el if, un lio muy grande xD.
Vamos a ver.

Código
  1. while($busca=mysqli_fetch_array($consulta)){
Aquí le indicamos que haga un while en todas las filas devueltas por $consulta.

Código
  1. if($busca['nombre']==$nombre && $busca['pass']==$pass)
  2. echo 'ingreso';
Aquí le hacemos comparacion para ver si coinciden los parametros.
PERO, ni abres el { que va después del if, ni lo cierras después.

Por tanto PHP toma todo lo que esta dentro del while como un if.

Tienes que escapar el if usando { y }, si no, te lias tu y se lia PHP tambien.


Código
  1. while($busca=mysqli_fetch_array($consulta))
  2. {
  3. if($busca['nombre']==$nombre && $busca['pass']==$pass)
  4. {
  5. echo 'ingreso';
  6. }
  7. break;//este break debería hacer que el while se ejecute una sola vez, mas no lo hace.
  8. }//fin while

Saludos


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: cassiani en 23 Diciembre 2011, 19:30 pm
sin embargo llega a buscar todas las filas de la tabla, por qué?

El arreglo se arma con el resultado de la consulta, va a albergar todas las filas del resultado independientemente de si las muestras o no, ahora, no sé si te refieres a eso o a las iteraciones del ciclo.

Creo que debería postear el código completo, yo no veo nada raro en esas líneas de código y efectivamente, debería iterar una sola vez.

monkey, en realidad las llaves no son necesarias si es una sola instrucción la que quieres condicionar, en este caso el echo. Condicionara esa e ignorara las demás líneas.

saludos!!


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: #!drvy en 24 Diciembre 2011, 00:05 am
Mmmmm, fallo mio entonces xD


PD: De todos modos, no apruebo el no usar las { }. Es un lio total xD.
Saludos


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: Pablo Videla en 24 Diciembre 2011, 04:00 am
Mmmmm, fallo mio entonces xD


PD: De todos modos, no apruebo el no usar las { }. Es un lio total xD.
Saludos
Es considerado una mala practica no usarlos.


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: jhonatanAsm en 24 Diciembre 2011, 06:54 am
hola. -$consulta trae una query ( select * from nombreTabla ).
-mi duda es por qué  itera más de una vez?

le agregué a el codigo las llaves, pero esta igual, repitiendo varias veces.
averigue que mysqli_fetch_array() utiliza un puntero para pasar de un valor a otro, así no olvida la posición anterior. posiblemente sea esta funcion la que obliga a repetirse en contra de su voluntad!gracias por las respuestas.salu2.



Título: Re: me podrian explicar el sgte codigo en php
Publicado por: Pablo Videla en 24 Diciembre 2011, 07:00 am
Deja que el break; este dentro de la condicion


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: Shell Root en 24 Diciembre 2011, 09:14 am
No entiendo porque la query de esa forma, es decir, supongo que con ese ingreso se supone que es un login de usuario? Debería de ser, algo al estilo...
Código
  1. SELECT pass                -- Campos de la tabla
  2.  FROM tblUsuario             -- Tabla
  3. WHERE usuario = 'usuario' -- Condición
  4. LIMIT 1;                  -- Limitar los resultados de la consulta MySQL a sólo 1
El resultado del campo pass lo guardas en una variable y después verificas qué esa pass de la consulta, sea igual al pass ingresado.
Código
  1. print ($returnQuery['pass'] === $pass)?"SI":"NO";


No entiendo porque recorres todos los registros, en busca del user y pass del usuario, sabiendo que también lo puedes hacer directamente desde la query.
Código
  1. SELECT id, nombre, apellido, email
  2.  FROM tblUsuario
  3. WHERE (usuario = 'usuario') AND (pass = 'contraseña')
  4. LIMIT 1;


Título: Re: me podrian explicar el sgte codigo en php
Publicado por: jhonatanAsm en 25 Diciembre 2011, 03:49 am
buena idea shell root.

gracias por sus respuestas.salu2.