Foros del Web » Programando para Internet » PHP »

explode & ayuda :)

Estas en el tema de explode & ayuda :) en el foro de PHP en Foros del Web. Bueno la cuestion esque tenog unas 1400 preguntas B= respuesta A=pregunta de tipo: B*A Es decir 1980*Fecha en que nacio..? y las necesito como Fecha ...
  #1 (permalink)  
Antiguo 21/05/2004, 14:49
 
Fecha de Ingreso: junio-2003
Mensajes: 104
Antigüedad: 14 años, 5 meses
Puntos: 1
explode & ayuda :)

Bueno la cuestion esque tenog unas 1400 preguntas
B= respuesta
A=pregunta

de tipo:

B*A


Es decir
1980*Fecha en que nacio..?

y las necesito como
Fecha en que nacio..?*1980

He conseguido con el array y el explode ... una cambiar y las demas ,... se quedan como estan asi que supongo q neceistare un bucle o algo parecido ayuda porfavor.

Código PHP:
<?
$k1 
"
1980*Fecha en que nacio..?
verdadero*Verdadero o Falso
no*Si o no.
"
;
$k2=nl2br($k1);
$da explode('*',$k2);
echo 
"".$da[0]."*".$da[1]."";
?>
__________________
Ado_k2 :adios:

Última edición por Ado_k2; 21/05/2004 a las 15:07
  #2 (permalink)  
Antiguo 21/05/2004, 16:09
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Y por qué no usas un array completamente (bidimensional por ejemplo)?

preguntas.php
Código PHP:
<?
$temas
[0]['preguna']="blablabla1";
$temas[0]['respuesta']="1989";

$temas[1]['preguna']="blablabla2";
$temas[1]['respuesta']="no";

$temas[2]['preguna']="blablabla3";
$temas[2]['respuesta']="bla";

?>
examen.php
Código PHP:
<?
include("preguntas.php");
// Para "pintar" todas las preguntas con un formulario para pedir la respuesta ..:

echo "<form action=\"evaluar.php\" method=\"post\">";
for (
$x=0$x<=count($temas); $x++){
echo 
$temas[$x]['pregunta']."<br>";
echo 
"<input type=\"text\" name=\"respuesta[$x]\"><br><br>";
}
echo 
"<input type=\"submit\" name=\"submit\" value=\" Evaluar \">";
echo 
"</form>";
?>

evaluar.php
Código PHP:
<?
include ("preguntas.php");
$aciertos=0;
foreach (
$_POST['respuesta'] as $tema=>$respuesta){
    echo 
"Pregunta/tema: ".$temas[$tema]['pregunta']." -- > ";
    if (
$temas[$tema]['respuesta']==$respuesta){
        echo 
"Bien :)";
        
$aciertos++;
   } else {
       echo 
"Mal :("
   
}
    echo 
"<br>";
}

echo 
"Total aciertos: ".$aciertos." de ".count($_POST['respuesta']);

A todo esto .. si son 1400 preguntas .. Sería recomendable pensar en algún sistema que se base en base de datos. Tanto para soportar las N preguntas y sus respuestas (en el ejemplo sólo usé una sólo respuesta . .pero podría ser N respuestas a elegir por ejemplo ) Con eso conseguirías mejores estadísticas si vas guardando los resultados en la misma base de datos.

Un saludo,

PD: (lo escribí al "vuelo" .. no sé si algún fallo tendrá).
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #3 (permalink)  
Antiguo 21/05/2004, 16:14
 
Fecha de Ingreso: junio-2003
Mensajes: 104
Antigüedad: 14 años, 5 meses
Puntos: 1
Ups

Muchas gracias por tu respuesta tan rapida...

pero lo unico q necesito yo es un metodo de hacer eso..
ya que tengo esas preguntas y necesito alterar el orden...
..

Lo tengo como

Respuesta*Pregunta

y quiero convertirlo en

Pregunta*Respuesta


Y pense en php para hacer esta conversion espero que me hayas entendido esta vez mejor
Y lo siento!
__________________
Ado_k2 :adios:
  #4 (permalink)  
Antiguo 21/05/2004, 16:26
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Bueno .. con explode() al caracter de separador que usas tendrías un array (como veo que ya has probado) .. ese array te qudará como:

$array[0] .. la primera parte de respuesta*pregunta (respuesta)
$array[1] .. la segunda parte de respuesta*pregunta (pregunta)

así que de tu mismo ejemplo .. tan sólo tienes que dar la vuelta:

Código PHP:
echo "".$da[1]."*".$da[0].""
Y de ahí no sé que haras con eso . pero el orden ya estaría como lo requieres.

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #5 (permalink)  
Antiguo 21/05/2004, 16:30
 
Fecha de Ingreso: junio-2003
Mensajes: 104
Antigüedad: 14 años, 5 meses
Puntos: 1
Eso lo entiendo... pero lo que pasa..
que no es una preguna respuesta sino 1400
asi que no creo que tengo que ir poniendo

echo "".$da[0]."*".$da[1]."";

asi esto 1400 veces o las que sean
no se puede hacer
algun tipo de bucle..??

Con el explode ... puedo cambiar el oden ya que entre las preguntas tengo *

Pero no se como hago que me muestre... cambiado el lisato.. (Lo cambio.. pero solo me muesta ahora mismo la primera)

Espero que me hayas entendido lo he liado mas de lo que es en realidad
__________________
Ado_k2 :adios:
  #6 (permalink)  
Antiguo 21/05/2004, 16:42
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Pero .. donde almacenas tus 1400 preguntas? .. en un array? .. en variables? .. las lees de un archiv de texto plano? o de donde ..

El "explode" ese debe ser ese mismo .. pero ahora falta ver donde se ha de obtener esos datos para aplicar el bucle que corresponda según donde estén almacenadas tus par: respuesta*pregunta.

------

Ahora que lo veo bien .. parece que el separador de "respuesta*pregunta" es un salto de línea? .. si es así .. tendras que aplicar un explode() primero al código \n (o \r o \r\n según S.O. que use el servidor) para obtener un array que recorrer y seguir aplicando el otro explode() al caracter *

Código PHP:
<?
k1 
"
1980*Fecha en que nacio..?
verdadero*Verdadero o Falso
no*Si o no.
"
;

$temas=explode('\n',$k1);
foreach (
$temas as $respuesta_pregunta){
    
$da explode('*',$respuesta_pregunta);
    echo 
$da[1]."*".$da[0]."<br>";
}
?>
Si no te dá resultado con \n .. prueba con \r .. o con \r\n (o \n\r .. ahora no recuerdo bien el orden).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
  #7 (permalink)  
Antiguo 21/05/2004, 16:51
 
Fecha de Ingreso: junio-2003
Mensajes: 104
Antigüedad: 14 años, 5 meses
Puntos: 1
Bien de momento,
pero que codigo pongo..como te he dicho antes
para que no me muestre solo bien la primera liena sino todas...

Y la pregunta esa... donde estoy almacenando

$k1 = "
1980*Fecha en que nacio..?
verdadero*Verdadero o Falso
no*Si o no.
";

pensaba ponerlas todas aqui.
__________________
Ado_k2 :adios:
  #8 (permalink)  
Antiguo 21/05/2004, 17:14
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 15 años, 11 meses
Puntos: 126
Por qué no usas el ejemplo completo que te he dejado desde el principio?

Usas arrays directamete con su respuesta y pregunta asociada .. más simple: probarlo.

De todas formas .. para lo que "pretendes hacer" ya te dejé el ejemplo funcionando.

Lo importante es que sepas como funciona "explode()" .. esa función genera un array usando como separador cierto caracter o código (como el del salto de línea \n que "no ves" .. pero lo estás haciendo al dar al "intro" en esa estrucutra de tu variable. Así que .. te daría igual tener tus preguntas/respuestas en un array directo o obtenerlo de otras formas (como el "explode" a un string(cadena) o incluso leerlo desde un archivo de texto plano donde tendrías tus preguntas/respuestas com "líneas" del archivo separados por sálto de línea).

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 00:08.