Foros del Web » Programando para Internet » PHP »

Recoger variable de un Select

Estas en el tema de Recoger variable de un Select en el foro de PHP en Foros del Web. Buenas noches, Os pongo en antecedentes, estoy creando un sistema para almacenar clasificaciones de carreras en la base de datos, comprobando los corredores si existen ...
  #1 (permalink)  
Antiguo 03/06/2014, 16:07
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 7 años, 5 meses
Puntos: 1
Recoger variable de un Select

Buenas noches,

Os pongo en antecedentes, estoy creando un sistema para almacenar clasificaciones de carreras en la base de datos, comprobando los corredores si existen o no, el problema viene con los corredores con nombres iguales (pero de distintos equipos, por ejemplo).

Partiendo de un textarea donde se introduce la clasificación, se divide línea a línea y toma los nombres y apellidos de los corredores, además de el tiempo y la posición.

Una vez ahí comprueba si existe el corredor en la base de datos y si es así almacena su id en un array $corredores[$posicion] igual que el tiempo y la posición. Y luego lo escribe pasando al siguiente, si hay error en la comprobación pide introducir al corredor en la db.

Cuando encuentra varios corredores que coinciden escribe un < select > con todos los nombres iguales para que se seleccione el que sea correcto, ¿como hago para que ese se almacene en su posición del array?

El tema es quiero que primero compruebe todos, almacenandolos en los arrays y una vez no haya ningun error se pueda dar al botón pasando los datos a la db.

Os adjunto el código hasta donde he llegado (ya lo sé, uso mysql_query cuando debería pasar a mysqli, pero aún no me he puesto con ello )

Código PHP:
if (!isset($_GET['accion'])){
    
    echo 
"<center><font class=\"title\"><b>Anadir Resultados</b> </font></center><br>
       <form method=\"post\" action=\"admin.php?page=resultados-amateur&accion=testresult\">
       Carrera: <input type=\"text\" name=\"carrera\" ><br>
       Resultados: <br>
       <textarea cols=100 rows=20 name=\"clasificacion\"></textarea> <br>
       * El texto debera tener la siguiente estructura: Posicion, Apellidos coma Nombre gui&oacute;n Tiempo<br>
       Ejemplo: <br>
       1 238 IRISARRI,JON SUB23 EDP 02:40:37<br>
       2 280 HERNANDEZ,MIKEL ELITE DEBABARRENA 02:40:37<br>
       3 182 DIAZ,IMANOL SUB23 IBAIGANE OPEL ARRATIA 02:40:37<br>
       <input name=\"Enviar\" type=\"submit\" value=\"Agregar\"></form>"
;
    
    }
    
    elseif(
$_GET['accion']=="testresult"){
    
    
$contador=0;
    
$errores=0;
    
    
$carrera $_POST['carrera'];
    
$clasi $_POST['clasificacion'];
    
$clasi2 utf8_decode($clasi);
    
$linea strtok ($clasi,"\n");

    
$sqlcarr "SELECT nombre FROM nuke_calendario WHERE id = $carrera";
    
$resultcarr mysql_query ($sqlcarr);
    list(
$nomcarr) = mysql_fetch_row ($resultcarr);

    echo
"<b>Carrera: $nomcarr </b><br><br>";
    echo
"<table border='0'>";
    
        while (
$linea != false) {
        
        list( 
$pos$datos ) = explode" "$linea2);
        list( 
$dorsal$datos2 ) = explode" " $datos 2);
        list( 
$apellidos$datos3 ) = explode", " $datos2);
        list( 
$nombre$datos4 ) = explode" " $datos32);
        
$datos5 array_reverse(explode(' ',$datos4));

        
$time $datos5[0];
        
$formato 'h';
        
$formato2 "\'";
        
$formato3 't';

        
$mt strpos($datos5[0],$formato3);

        if (
$mt != false) { $time '00:00:00'; }

        
$lug strpos($datos5[0],$formato); // para formato 2h30'21''

        
if ($lug != false) {
        
        
$time str_replace ($formato':'$time);
        
$time str_replace ("\'"':'$time);
        
$time trim($time);
        
$time substr($time,0,-2);
        
        }

        
$lug2 strpos($time,$formato2);
        
        if (
$lug2 != false) {
        
        
$time str_replace ("\'"':'$time);
        
$time trim($time);
        
$time substr($time,0,-2);
        
        }

        
$longitud_time strlen ($time);

        if (
$longitud_time == 1$time "00:00:0" $time;
        if (
$longitud_time == 2$time "00:00" $time;
        if (
$longitud_time == 4$time "00:0" $time;
        if (
$longitud_time == 5$time "00:" $time;
        if (
$longitud_time == 7$time "0" $time;

        
$sqlciclista "SELECT id FROM amateur_corredores WHERE nombre LIKE '".$nombre."%' AND apellidos LIKE '".$apellidos."%'";
        
$resultciclista mysql_query($sqlciclista);

        if(list(
$cid) = mysql_fetch_row($resultciclista)) $nex=0;
        else 
$nex=1;

        if (
$nex == 0) {
        
$contador++;

        
$posiciones[$contador] = $pos;
        
$ciclistas[$contador] = $cid;
        
$tiempos[$contador] = $time;

        
//echo "$pos - $nombre - $apellidos - $dorsal - $time ($longitud_time)<br>";

        
if (mysql_num_rows($resultciclista) >= 2) {

        echo 
"<tr bgcolor='yellow'><td width='5%' align='center'><font size='2'>$pos</font></td><td width='10%' align='center'><font size='2'>$dorsal</font></td><td width='65%'><select>";

        
$sqlciclistasnom "SELECT id,nombre,apellidos FROM amateur_corredores WHERE nombre LIKE '".$nombre."%' AND apellidos LIKE '".$apellidos."%'";
        
$resultciclistasnom mysql_query($sqlciclistasnom);
        while ( list(
$id,$nom,$ape) = mysql_fetch_row($resultciclistasnom) ) {
            echo
"<option value='$id'>$nom $ape</option>";
        }

        echo 
"</select></td><td width='20%'><font size='2'>$time</font></td></tr>";

        }

        else echo 
"<tr><td width='5%' align='center'><font size='2'>$pos</font></td><td width='10%' align='center'><font size='2'>$dorsal</font></td><td width='65%'><font size='2'>$nombre $apellidos</font></td><td width='20%'><font size='2'>$time</font></td></tr>";

        }
        else {
        
$errores++;
        echo 
"<tr bgcolor='red'><td width='5%' align='center'><font size='2'>$pos</font></td><td width='10%' align='center'><font size='2'>$dorsal</font></td><td width='65%'><font size='2'>$nombre $apellidos</font></td><td width='20%'><font size='2'>$time</font></td></tr>";
        
//echo "MAL $pos - $nombre - $apellidos - $dorsal - $time ($longitud_time)<br>";
        
}
        
        if (
$pos == 1$tiempoganador $time;
        
//echo"$nombre<br>";
        
        
        
$linea strtok("\n");
        }
    echo
"</table><br><br>Bien: $contador <br>Errores: $errores"
    
    } 
  #2 (permalink)  
Antiguo 04/06/2014, 05:11
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.122
Antigüedad: 9 años, 1 mes
Puntos: 66
Respuesta: Recoger variable de un Select

¿y que pasará cuando dos personas del mismo nombre estén en el mismo equipo? es muy dificil que eso ocurra pero hay una "ley" que dice que toda posibilidad por muy remota que sea siempre sucederá mientras esperes lo suficiente.

utiliza los dorsales para identificar a los corredores, por lo que veo es ciclismo, ahí no es como el fútbol por ejemplo, que dos números de dorsal pueden ser usados por dos personas distintas tienes un campo único perfecto ;)

además los dorsales se inventaron para que fuese posible que los organizadores pudiesen identificar a los corredores sin conocer nombre y apellidos de todos los corredores, eso sería una locura.
  #3 (permalink)  
Antiguo 04/06/2014, 09:04
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 7 años, 5 meses
Puntos: 1
Respuesta: Recoger variable de un Select

Lo que comentas del dorsal es una buena posibilidad, pero no deja de ser un campo único solo por cada carrera, es decir varía de una carrera a otra el dorsal de cada corredor.

En cuanto a los corredores con el mismo nombre en el mismo equipo, la posibilidad estaría contemplada también, al existir un campo por cada corredor independiente del equipo.

Gracias por tu respuesta :)
  #4 (permalink)  
Antiguo 05/06/2014, 12:14
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 7 años, 5 meses
Puntos: 1
Respuesta: Recoger variable de un Select

Nadie me echa un cable? siento ser pesado, pero me estoy volviendo loco y veo como solucionarlo. He agregado una nueva acción agregarresultado en la que recorre los arrays que he creado, pero no consigo asignar el valor seleccionado en el select a la posición del array.
  #5 (permalink)  
Antiguo 06/06/2014, 03:35
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.122
Antigüedad: 9 años, 1 mes
Puntos: 66
Respuesta: Recoger variable de un Select

en el select veo esto

Código PHP:
echo"<option value='$id'>$nom $ape</option>"
supongo que esa variable "$id" será un campo auto numérico ademas de indice y único, con eso ya estás identificando inequívocamente a 1 corredor

y obtener el valor de id... es un $_REQUEST['nombre_del_select']
  #6 (permalink)  
Antiguo 08/06/2014, 11:24
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 7 años, 5 meses
Puntos: 1
Respuesta: Recoger variable de un Select

He avanzado ya mucho, el problema sigue siendo recoger las variables de los select, utilizo este for pero no funciona, el problema está en el nombre del POST con el ".$i".

Código PHP:
    if ($coincidencias >= 1) {

        for (
$i 1$i <= $coincidencias$i++) {

            
$pos_tmp $_POST['pos.$i'];
            
$ciclistas[$pos_tmp] = $_REQUEST['iguales.$i'];

        }

    } 
Los select se generan de la siguiente forma, con los nombres correctamente .1, .2, etc...

Código PHP:
        if (mysql_num_rows($resultciclista) >= 2) {

        
$coincidencias++;

        echo 
"<tr bgcolor='yellow'><td width='5%' align='center'><font size='2'>$pos</font></td><td width='10%' align='center'><font size='2'>$dorsal</font></td><td width='65%'><select name='iguales.$coincidencias'>"
  #7 (permalink)  
Antiguo 09/06/2014, 10:41
Avatar de juanito1712  
Fecha de Ingreso: mayo-2010
Ubicación: Valencia
Mensajes: 1.122
Antigüedad: 9 años, 1 mes
Puntos: 66
Respuesta: Recoger variable de un Select

para concatenar en la variable

$pos_tmp = $_POST['pos.'$i];



y una pregunta, cuando guardas el resultado, que guardas?
  #8 (permalink)  
Antiguo 09/06/2014, 12:43
 
Fecha de Ingreso: enero-2012
Mensajes: 87
Antigüedad: 7 años, 5 meses
Puntos: 1
Respuesta: Recoger variable de un Select

En pos_tmp se guarda la posición del corredor, que es la misma que la del array, para modificar el id del corredor en esa posición. De todos modos sigue sin funcionarme el POST, no coge el valor de los inputs pos.1, pos.2, etc

Etiquetas: mysql, recoger, select, sql, variable
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 22:25.