Foros del Web » Programando para Internet » PHP »

Almacenar resultado de una consulta en un array dentro de un input

Estas en el tema de Almacenar resultado de una consulta en un array dentro de un input en el foro de PHP en Foros del Web. Hola estoy haciendo un script en el que muestro el resultado de una consula y lo comparo con el valor que ha introducido el usuario ...
  #1 (permalink)  
Antiguo 17/02/2012, 06:55
 
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 2
Almacenar resultado de una consulta en un array dentro de un input

Hola estoy haciendo un script en el que muestro el resultado de una consula y lo comparo con el valor que ha introducido el usuario en un input, la cuestión es que despues de probar varias formas de hacerlo esta ha sido la mas viable, pero aún asi me falta algo que no termino de solucionar

La cuestion es que comparo el resultado de la consulta con el valor del input que ha escrito el usuario, esto lo almaceno en un array de manera oculta en un "hidden" y al final lo que pretendo mostrar son todos estos inputs, que se repiten en un bucle while

Pero lo que pasa es que cuando pulso en botón comprobar solo se almacena en el array el último valor pero el resto no

Y lo que quiero es mostrarlos todos para luego comparar si lo que ha escrito el usuario corresponde con el mismo valor que hay en la base de datos para darlo como correcto

Aqui os pongo una captura de lo que estoy haciendo, lo que figura debajo de cada apartado, no hagais caso que son flag para comprobar:


Y aquí el código en php:
Código PHP:
<?php
require("usuario.php");//Redirigido de la pagina usuario.php
    
$j=0;
    
$variable $_POST['selecciona'];    
    echo 
"<br><center><h4>Has seleccionado el nivel $variable</h4></center>";
    while(
$j<4)
    {
        
//Conectamos a la base de datos para mostrar los registros aletarios del nivel seleccionado
        
$conexion=mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
        
mysql_select_db('idioma')or die ('Error al seleccionar la Base de Datos: ');
        
$consulta=mysql_query("use idioma",$conexion);
        
$laselect="select ingles,espanol from datos where nivel='$variable' limit $j,1";
        
$consulta mysql_query($laselect)or die ('La consulta insert falló: ' mysql_error());
        echo
"<center><table border=0><tr><th>Palabra en Ingles</th><th><pre style='display:inline'>    </pre></th><th>Palabra en Español</tr>";
        while (
$registro mysql_fetch_row($consulta))
        {
            echo
"<tr><td>";
            echo 
$registro[0]."<br>";
            
$ingles[$j]=$registro[0];
            
//echo "j=$j"."<br>";//flag
            //echo $ingles[$j]."<br>";//flag
            
$almacena[$j]=$registro[1];
            
//echo $almacena[$j];//flag
            
echo"</td><td></td>";
        }    
        
    
        echo 
"<form action='usuario2.php' method='post'name='formulario' >";            
        echo 
"<td><input type='text' name='espanolpalabra' size='20' onkeyup='document.formulario.comprobar.disabled=document.formulario.comprobar.enabled'></td></tr>";
        echo 
"<td><input type='hidden' name='inglespalabra' value=$almacena[$j]><br></td></tr></table><br>";//como la variable $almacena pierde el valor una vez se ejecute el formulario aplico este técnica para guardarla
        
$inglespalabra[$j]=$_POST['espanolpalabra'];
        
$espanolpalabra[$j]=$_POST["inglespalabra"];
        echo 
"J=$j,inglespalabra=$inglespalabra[$j],espanolpalabra=$espanolpalabra[$j],almacena=$almacena[$j],ingles=$ingles[$j]"."<br>";//flag
        
$j++;
    }    
    echo 
"<tr><input type='submit' value='Comprobar' name='comprobar' disabled></tr>";
    echo
"</form></center>";
    
    for(
$i=0;$i<4;$i++)
    {
        echo 
$inglespalabra[$i]."<br>";
        echo 
$espanolpalabra[$i]."<br>";
    }

?>
Gracias ojala podais ayudarme

Un Saludo

Última edición por sylarlocke; 17/02/2012 a las 07:10
  #2 (permalink)  
Antiguo 17/02/2012, 07:13
Avatar de luis010182  
Fecha de Ingreso: julio-2009
Ubicación: Argentina - Capital Federal
Mensajes: 382
Antigüedad: 15 años, 4 meses
Puntos: 27
Respuesta: Almacenar resultado de una consulta en un array dentro de un input

Código PHP:
        while ($registro mysql_fetch_row($consulta)) 
        { 
            echo
"<tr><td>"
            echo 
$registro[0]."<br>"
            
$ingles[$j][]=$registro[0]; 
            
$almacena[$j][]=$registro[1]; 
            echo
"</td><td></td>"
        } 
o que pasa que la consulta te puede dar mas de un resultado y "$j" se incremeta fueran de bucle que guarda los registros, de la forma que te lo puse se arma un array bidimenciaonal.
  #3 (permalink)  
Antiguo 17/02/2012, 10:47
 
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Almacenar resultado de una consulta en un array dentro de un input

HOla gracias Luis por contestar pero el problema que tengo que no consigo almacenar los resultados del input, cuando pulso el botón comprobar solo almacena el resultado del último

En el trozito de código que has puesto ya almacena bien los resultados de la consulta

Lo que intento comparar el resultado de la consulta(que lo hace bien) con los resultadode los inputs(que en teoria los hace bien) pero nos los guardaba bien cuando los envía el formulario, me estoy volviendo loco por que estoy modificando cosas y nada, y me da que el formulario no es capaz de guardarlo todo aunque se almacene en un array
  #4 (permalink)  
Antiguo 17/02/2012, 12:23
 
Fecha de Ingreso: febrero-2012
Mensajes: 66
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: Almacenar resultado de una consulta en un array dentro de un input

El problema es que no estás creando el input hidden como array, debes de poner name="inglespalabra[]".

Unj saludo.
  #5 (permalink)  
Antiguo 17/02/2012, 13:19
 
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Almacenar resultado de una consulta en un array dentro de un input

Hola gracias nuevamente por contestar, pero me parece que no me estoy explicando bien y perdonad

A ver yo tengo un bucle que se repite 4 veces y he metido dentro de este bucle un input que es la palabra que el usuario tiene que introducir, vale el tema esta que cuando le doy a enviar(comprobar en mi caso) solo envia el ultimo, por que el input lo introduce el usuario

Código PHP:
...
    while(
$j<4)
    {
        
//Conectamos a la base de datos para mostrar los registros aletarios del nivel seleccionado
        
$conexion=mysql_connect('localhost','root','')or die ('Ha fallado la conexión: '.mysql_error());
        
mysql_select_db('idioma')or die ('Error al seleccionar la Base de Datos: ');
        
$consulta=mysql_query("use idioma",$conexion);
        
$laselect="select ingles,espanol from datos where nivel='$variable' limit $j,1";
        
$consulta mysql_query($laselect)or die ('La consulta insert falló: ' mysql_error());
        echo
"<center><table border=0><tr><th>Palabra en Ingles</th><th><pre style='display:inline'> </pre></th><th>Palabra en Español</tr>";
        while (
$registro mysql_fetch_row($consulta))
        {
            echo
"<tr><td>";
            echo 
$registro[0]."<br>";
            
$ingles[$j]=$registro[0];
            
//echo "j=$j"."<br>";//flag
            //echo $ingles[$j]."<br>";//flag
            
$almacena[$j]=$registro[1];
            
//echo $almacena[$j];//flag
            
echo"</td><td></td>";
        }    
        
        echo 
"<form action='usuario2.php' method='post'name='formulario' >";            
        echo 
"<td><input type='text' name='espanolpalabra' size='20' onkeyup='document.formulario.comprobar.disabled=document.formulario.comprobar.enabled'></td></tr>";
        echo 
"J=$j,inglespalabra=$inglespalabra[$j],espanolpalabra=$espanolpalabra[$j],almacena=$almacena[$j],ingles=$ingles[$j]"."<br>";//flag
        
$j++;
}
... 
La otra parte ya la hace bien pero como veis el input llamado "espanolpalabra" es lo que introduce el usuario, pero esta metido en un bucle que se repite 4 veces y lo que quiero es almacenar lo que el usuario va escribiendo en una varible o de alguna forma en este input

Gracias y perdonad

Sigo investigando...
  #6 (permalink)  
Antiguo 17/02/2012, 14:27
 
Fecha de Ingreso: febrero-2012
Mensajes: 66
Antigüedad: 12 años, 9 meses
Puntos: 10
Respuesta: Almacenar resultado de una consulta en un array dentro de un input

No se... yo creo que te estás complicando demasiado pero no entiendo para que tienes que hacer dos while.
Solo tienes un botón de comprobar pero estás haciendo el form varias veces, lógicamente al apretar el botón solo te envía el último form.
Además el
Código HTML:
Ver original
  1. <input type='text' name='espanolpalabra'/>
debería ser
Código HTML:
Ver original
  1. <input type='text' name='espanolpalabra[]'
para que almacenara todos los campos que pone el usuario.
Yo creo que si cada vez que escribes el input de la palabra en español, guardarás un input hidden con la palabra en inglés, a la hora de mandar el formulario sería más fácil de comprobar los datos.
  #7 (permalink)  
Antiguo 17/02/2012, 17:08
 
Fecha de Ingreso: junio-2011
Mensajes: 44
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Almacenar resultado de una consulta en un array dentro de un input

Muchas gracias Hachikora de verdad y a todos por mostrar vuestra ayuda, estuve indagando y el problema estaba justo ahi, el campo del input siempre se llamaba igual y entonces solo mostraba uno, el ultimo

Lo que hice fue asignar al atributo name una variable nueva, esta coje el valor de la variable inicial del bucle y por lo tanto va cojiendo valores, podia haber concatenado el nombre con un numero pero al final me ha resultado más comodo, en definitiva que despues de mucho pensar y ver las opciones he conseguido hacerlo y ha sido todo un reto

Como me teneis aconstumbrado la gran ayuda que me habeis ofrecido me ha servido para solucionar el problema

Muchas gracias a todos ;)

Etiquetas: almacenar, formulario, input, mysql, registro, sql, resultados, variables, 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

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 08:26.