Foros del Web » Programando para Internet » PHP »

Sumar O Comparar Registros

Estas en el tema de Sumar O Comparar Registros en el foro de PHP en Foros del Web. Hola toma una consulta aleatoria de una tabla, son 10 registros. la consulta la realizo para colocar el resultado en los nombres de unos imput, ...
  #1 (permalink)  
Antiguo 07/02/2008, 09:06
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Hola toma una consulta aleatoria de una tabla, son 10 registros. la consulta la realizo para colocar el resultado en los nombres de unos imput, o sea, lo hago par que me itre un nombre diferente para cada imputo, que el usuario escribira algo en el mismo y enviara el formulario...

En otro archivo desee leer el contenido, como hago para leer estas variables, ya que no se cuales son las que toma el imput ya fueron aleatorias...

gracias

Lo unico que necesito es poder los datos cargados en la consulta aleatoria y guardarlos.......... alguien que me de una ayudita plissssssssss

Última edición por GatorV; 07/02/2008 a las 09:16
  #2 (permalink)  
Antiguo 07/02/2008, 09:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Hacer Variables

La tomas directo como se llama el input, todo depende de tu formulario, si el input lo llamas:
Código HTML:
<input type="text" name="variable1" /> 
En PHP la rescatas como $_POST['variable1'] o $_GET['variable1'].

Saludos.
  #3 (permalink)  
Antiguo 07/02/2008, 09:17
Avatar de Akiracr  
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: Hacer Variables

La consulta aparte de darte indices tiene alguna funcion??? eso es importante

si la respuesta es no puedes hacer un contador 1 a 10 y asi sabras el id de los objetos o inputs

si tiene alguna importancia lo que se me ocurre es crear objetos input de tipo hidden y con un contador que les de el id y asi ahi guardar el id de los input y de esta forma en el otro archivo que las lee recorre con un for el $_POST o $_GETS sacando los id de los input para poder sacar su valor
  #4 (permalink)  
Antiguo 07/02/2008, 09:17
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Re: Hacer Variables

el problema es como puedo saber como se llama el imput si su nombre es aleatorio
  #5 (permalink)  
Antiguo 07/02/2008, 09:23
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Hacer Variables

Lo generas aleatoriamente es lo que te decia, supon que quieres que el usuario llene 10 inputs, haces tu formulario:
Código HTML:
<input type="text" name="random[0]" value="" />
<input type="text" name="random[1]" value="" />
<input type="text" name="random[2]" value="" />
<input type="text" name="random[3]" value="" />
<input type="text" name="random[4]" value="" />
<input type="text" name="random[5]" value="" />
<input type="text" name="random[6]" value="" />
<input type="text" name="random[7]" value="" />
<input type="text" name="random[8]" value="" />
<input type="text" name="random[9]" value="" /> 
Luego cuando lo envias en PHP lo rescatas:
Código PHP:
$aleatorios $_POST['random'];
foreach( 
$aleatorios as $num => $valor ) {
       echo 
"El valor aleatorio $num es igual a $valor";

Saludos.
  #6 (permalink)  
Antiguo 07/02/2008, 09:27
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Re: Hacer Variables

Lo del contador no lo entiendo mucho...

Me decis que haga un caontador de la cantidad de variables que traigo, y que luego las muestre con un echo...

La verdad no se como hacer un catador sin saber los imput que envio.
  #7 (permalink)  
Antiguo 07/02/2008, 09:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Hacer Variables

Cual contador? Solo te estoy diciendo que envies en las variables la nomenclatura de un arreglo para que luego lo puedas ciclar con un foreach y asi obtienes el nombre y el dato que te puso.

Saludos.
  #8 (permalink)  
Antiguo 07/02/2008, 09:31
Avatar de Akiracr  
Fecha de Ingreso: septiembre-2006
Mensajes: 114
Antigüedad: 17 años, 7 meses
Puntos: 3
Re: Hacer Variables

Cita:
Iniciado por GatorV Ver Mensaje
Lo generas aleatoriamente es lo que te decia, supon que quieres que el usuario llene 10 inputs, haces tu formulario:
Código HTML:
<input type="text" name="random[0]" value="" />
<input type="text" name="random[1]" value="" />
<input type="text" name="random[2]" value="" />
<input type="text" name="random[3]" value="" />
<input type="text" name="random[4]" value="" />
<input type="text" name="random[5]" value="" />
<input type="text" name="random[6]" value="" />
<input type="text" name="random[7]" value="" />
<input type="text" name="random[8]" value="" />
<input type="text" name="random[9]" value="" /> 
Luego cuando lo envias en PHP lo rescatas:
Código PHP:
$aleatorios $_POST['random'];
foreach( 
$aleatorios as $num => $valor ) {
       echo 
"El valor aleatorio $num es igual a $valor";

Saludos.

Yo fui el que menciono el contador pero bueno esta respuesta esta mejor ;), dependiendo de que quieres hacer :P


Cita:
Iniciado por cmarrero Ver Mensaje
Lo del contador no lo entiendo mucho...

Me decis que haga un caontador de la cantidad de variables que traigo, y que luego las muestre con un echo...

La verdad no se como hacer un catador sin saber los imput que envio.
una opcion es hacer un contador para asignarlo de id a los input y asi sabes cual es el id al otro lado

la otra que mensione es un conatdor siempre que sea el id de unos input type='hidden' los cuales guarden en la propiedad value el id de cadauno de los input normales, en oras palabras un input hidden por cada input nomrmal para que le guarde el id generado por la consulta
  #9 (permalink)  
Antiguo 07/02/2008, 09:36
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Re: Hacer Variables

Bien lo que tengo es lo siguiente:

<input type="radio" name="<? echo "random[".$row['id']."]"; ?>" value="Si" id="respuesta_0" /> Si
<input type="radio" name="<? echo "random[".$row['id']."]"; ?>" value="No" id="respuesta_1" />

donde .$row['id']. es la consulta aleatoria, para que me quede de la siguiente manera.

Pregunta Aleatoria 30<input type="radio" name="random[30]" value="Si" id="respuesta_0" /> Si
<input type="radio" name="random[30]" value="No" id="respuesta_1" />No

Como hago un wile en otra pegunta lo veo asi

Pregunta Aleatoria 31<input type="radio" name="random[31]" value="Si" id="respuesta_0" /> Si
<input type="radio" name="random[31]" value="No" id="respuesta_1" />No

Esto se repite 10 veces, con el

Al enviar esto a envio_datos.php
<?

$aleatorios = $_POST['random'];
foreach( $aleatorios as $num => $valor ) {
echo "El valor aleatorio $num es igual a $valor";
}

?>

Que me propusieron, me salta error....

Que estoy haciendo mal....
  #10 (permalink)  
Antiguo 07/02/2008, 09:38
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Hacer Variables

Que error te marca?

Saludos.
  #11 (permalink)  
Antiguo 07/02/2008, 09:41
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Re: Hacer Variables

Warning: Invalid argument supplied for foreach() in C:\servidor\web\examen\sistema\examen\envio_datos. php on line 66
  #12 (permalink)  
Antiguo 07/02/2008, 09:45
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Re: Hacer Variables

Bien el problema era que lo envia por get y no por post... un descuido..

Ahora bien, me muestra los datos... pero como los tomo para guardalos en una tabla...

Gracias por la ayuda...
  #13 (permalink)  
Antiguo 07/02/2008, 09:49
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Hacer Variables

Pues si ya tienes en $num el id de la pregunta y en $valor el resultado, solo es cuestion de que hagas un ciclo e insertes en tu tabla de respuestas, algo asi:
Código PHP:
<?php

$aleatorios 
$_POST['random'];
foreach( 
$aleatorios as $num => $valor ) {
     
$query "INSERT INTO respuestas (id_pregunta, respuesta) VALUES ('$num', '$valor' )";
}

?>
Saludos.
  #14 (permalink)  
Antiguo 07/02/2008, 09:57
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Re: Hacer Variables

Bueno, ya he entendido....

Muchas gracias por la ayuda, realmente lo necesitaba....

Ahora la ultima y me dejo de joder...

La tabla donde guardo las respuestas es algo asi idusuario,preguntauno,preguntados,preguntatres asi asta la 10

El problema del registro asi de las respuestas es que me tira una fila por respuesta, y yo necesito una fila con todas las respuestas con un puntaje final, el puntaje tampoco abri problemas...

pero como hago esto... es decir, necesito que la pregunta 17 de Valor, me carguen en el campo preguntauno, y la pregunta 20 de Valor 2, me cargue en el campo preguntados de la misma tabla...

Es algo complicado...

Gracias por la ayuda
  #15 (permalink)  
Antiguo 07/02/2008, 10:11
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Insertar Registro En Mysql

Teniendo lo siguiente

Código PHP:

   $aleatorios 
$_POST['random'];
foreach( 
$aleatorios as $num => $valor ) {
 echo 
" $num $valor<br /> ";


SI YO HAGO:

Código PHP:
mysql_query("insert into respuesta (idrespuesta,respuesta) VALUES ('$num', '$valor')"); 
ME AGREGA UN REGISTRO POR FILA... SON EN TOTAL 10..

PERO SI YO MODIFICO MI TABLA, AGREGANDO 10 CAMPOS ES DECIR:

Código PHP:
mysql_query("insert into respuesta (idrespuesta,preuno,predos,pretres,precuatro,precinco,preseis,presiete,preocho,prenueve,predies) 
como hago para me inserta cada uno del os resultados en un campo, como hago el VALUES de la consulta SQL....

O que tengo que modificar para hacerlo
  #16 (permalink)  
Antiguo 07/02/2008, 10:15
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Insertar Registro En Mysql

Por favor no dupliques temas.

Temas unidos.

Para hacer lo que necesitas, entonces procesar tu arreglo y pasarlo a un string, por decir:
Código PHP:
$resultados implode", "$aleatorios ); 
Asi tienes una lista separada por comas, que puedes insertar en tu arreglo.

Saludos.
  #17 (permalink)  
Antiguo 07/02/2008, 10:23
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Re: Insertar Registro En Mysql

No comprendo mucho, no estoy tan avanzo...

seria algo asi
Código PHP:
 $aleatorios $_POST['random'];
   
$resultados implode", "$aleatorios );  
foreach( 
$aleatorios as $num => $valor ) { 
pero como realizaria la sentencia SQL


mysql_query("insert into examen (idusuario,uno,dos,tres,cuatro,cinco,seis,siete,oc ho,nueve,diez,texto,puntaje) me referia a los VALUES

gRACIAS
  #18 (permalink)  
Antiguo 07/02/2008, 10:33
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Insertar Registro En Mysql

Como te comento debes de armar tu Query:
Código PHP:
$valores implode", "$_POST['random'] );
$query "INSERT INTO examen (idusuario,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez,texto,puntaje) VALUES ('$idusuario', $valores, '$texto', '$puntaje' )"
Saludos.
  #19 (permalink)  
Antiguo 07/02/2008, 16:33
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Tengo en 1paso.php

Hago una consulta aleatoria una base de datos con limit 0,10

esto me tira 10 registros aleatorios, dichos registros cuentan con

id,pregunta,respuesta,puntaje

Obviamente lo unico que muestro es el id y pregunta los demas los mantengo en un hiddenField.

a cada registro le coloco un checbox de tipo Si o No...

a los nombres de los hiddenField les pongo de tipo random[consulta_id]

Dicho esto, envio a envio_datos.php que seria algo asi...

Código PHP:

$valores 
implode", "$_POST['random'] );
$query "INSERT INTO examen (idusuario,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez,texto,puntaje) VALUES ('$idusuario', $valores, '$texto', '$puntaje' )"
Uso la funcion implode para poder insertar los datos dentro de una tabla... ahor ami problema es como hago para poder sumar los puntajes obtenidos por la respuesta correcta, es decir, si en el checbox coloco Si y la respuesta es NO entonces no se suma, pero si la respuesta es Si entonces que sume el puntaje.

Lo unico que logre con un if fue lo siguiente:

$valores = implode( ", ", $_POST['random'] );

$respuestasverdaderas= implode( ", ", $_POST[resver] );

if ($valores=="$respuestasverdaderas") entocnes me comparaba lo que el usuario puso con lo verdadero y le colocaba si es verdadero sume 20 puntos ya que casi todas las preguntas eran de 2 puntos, y en caso contrario 0.

El problema es obvio, si respondio 4 bien y 6 mal, el resultado seria 0 y 8 como deberia ser...

Espero haberme hecho entender...

Y espero que alguien me de una ayudita...

Otra cosa, el puntaje final debo insertarlo en la tabla.

Si no es posible lo que digo pense en lo siguiente, una ves guardado los datos en la base de datos, hacer una consulta de comparacion con las respuestas correctas que se encuentran en la BD y las que hizo el usuario que se guardaron en la tabla examen, y de esta manera hacerlo mas facil....

Se me ocurrio algo por el estilo pero no lo he probado todavia... alguna idea de como hacerlo

Última edición por GatorV; 07/02/2008 a las 18:01
  #20 (permalink)  
Antiguo 07/02/2008, 18:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: Uso De Implode Con Php

Antes de hacer el implode, en tu foreach, compara:
Código PHP:
$aleatorios $_POST['random']; 
$puntaje 0;
foreach( 
$aleatorios as $num => $valor ) {  
       if( 
$valor == $preguntas[$num] ) {
              
$puntaje++;
       }

Aunque para esto deberas de tener un arreglo $preguntas donde venga la respuesta correcta a cada pregunta.

Saludos.
  #21 (permalink)  
Antiguo 08/02/2008, 05:54
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
ESTO FUE LO QUE INTENTE....

Traigo los valores que el usuario responde y las respuestas verdaderas...
Pero lo hago con implode como me dijiste para poder insertar estos datos en una tabala.
<?
$valores = implode( "',' ", $_POST['random'] );
$respuestas = implode( "',' ", $_POST['resver'] );
echo "$valores<br /><br />";
echo "$respuestas<br /><br />";
$puntaje = 0;
echo "$puntaje";
if ($valores=="$respuestas") {
$puntaje++;
}
mysql_connect("localhost","examen","examen");
mysql_select_db("examen");
mysql_query("insert into examen (idusuario,uno,dos,tres,cuatro,cinco,seis,siete,oc ho,nueve,diez,texto,puntaje) VALUES ('$idusuario', '$valores' , '$texto','$puntaje')");

?>

Pero no me funciona de esta manera....

Alguna idea

Intente solo mostrar el resultado sin insertarlo a la base de datos de esta manera... pero tampoco fuinciono...

Código PHP:
$respuestas=   $_POST['resver'];
foreach( 
$respuestas $nums => $valores ) { 
echo 
"$vlores y $nums"; }

$aleatorios $_POST['random']; 

$puntaje 0;
foreach( 
$aleatorios as $num => $valor ) {  
       if( 
$valor == $respuestas[$num] ) {
              
$puntaje++;
       }
}
echo 
"$puntaje"
el resultado de esto es el siguiente....

y 21 y 12 y 29 y 18 y 7 y 34 y 1 y 38 y 15 y 141

Y lo que o necesito es que me sumen el puntaje de las respuestas correctas, ya que me tiene que decir si ha respondido bien o mal...

y esto no me lo soluciona tampoco...

Una ayuditaaaaa....

Plis

Última edición por GatorV; 08/02/2008 a las 09:06
  #22 (permalink)  
Antiguo 08/02/2008, 08:29
(Desactivado)
 
Fecha de Ingreso: enero-2008
Ubicación: Mendoza
Mensajes: 458
Antigüedad: 16 años, 2 meses
Puntos: 2
Exclamación Sumar O Comparar Registros

ESTRUCTUR DE MI TABLA examen

id,idusuario,uno,dos,tres,cuatro,cinco,seis,siete, ocho,nueve,diez,texto,puntaje.

Y mi otra tabla pregutnas

id,pregunta,respuesta,puntaje

En la tabla examen cada uno de los campos uno,dos,tres.... etc... son las respuestas de un usuario a la tabla preguntas... osea.. el usuario responde a 10 la pregunta consultada de la tabala preguntas con un checbox de Si o No, y eso es lo que se guarda en la tabla examen...

entonces lo que yo quiero hacer, es saber si ha respondido bien o mal...

una vez que se han guardado los datos hacer una comparacion de los datos de la tabla examen con la tabla preguntas, y de esta manera sumar las respuestas y que me de un puntaje que se guaradara en la tabla examen en el campo puntaje...

se entiende,.... trate de hacerlo cuando se envian las preguntas, pero me resulto muy complicado, y pense en hacer una comparacion de las respuestas hechas del usuario con las respuestas verdaderas de la tabla preguntas...

Como puedo hacer esto a alguien se le ocurre una idea...

de esta manera yo ingreso los datos y los muestro...

Código PHP:
$valores implode"',' "$_POST['random'] );
$respuestas implode"',' "$_POST['resver'] );

$pun implode"',' "$_POST['puntaje'] );

echo 
"$valores<br /><br />";
echo 
"$respuestas<br /><br />";

echo 
"$pun<br /><br />";

 
mysql_connect("localhost","examen","examen");
  
mysql_select_db("examen"); 
  
mysql_query("insert into examen (idusuario,uno,dos,tres,cuatro,cinco,seis,siete,ocho,nueve,diez,texto,puntaje) VALUES ('$idusuario', '$valores' , '$texto','$puntaje')"); 
Hago los implode por que la consulta para las preguntas es aleatoria...

Espero una ayudita...

Gracias
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 3 personas (incluyéndote)




La zona horaria es GMT -6. Ahora son las 16:15.