PHP - No graba el primer registro

   
Vista:

No graba el primer registro

Publicado por Javier (46 intervenciones) el 01/02/2014 21:37:58
Buenas noches.
Tengo este procedimiento en php que deberia grabar todos los registros, generados desde una tabla origen de html.
El problema es que nunca me graba el primer regisro que recibe y si los demas y si envio uno solo no graba nada.

La tabla tiene una celda con un input checkbox que si pulso sobre el ese registro o fila debe ser grabado.
Al finalizar el proceso de seleccion tengo marcacados una serie de ellos.
Si tiene el checkbox marcado es que debe ser grabado, en caso contario no ( ¿Por que aquellos registros de la tabla que no son seleccionados no tienen el campo checkbox?

En el php lo que hago es :

1º Desglosar en filas los datos recibidos, con la siguiente instruccion:

1
2
3
4
$espa= mysql_query("SET NAMES 'utf8'");
	$nsoci = $_POST[ "modifica" ];
	$claves = preg_split("/%2B/", $nsoci); // Lleva al fina del registro un simbolo +
	foreach ($claves as $nsoci0){

2º Desglosar en campos cada fila.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
foreach (explode('&', $nsoci0) as $campo) {
	   $param = explode("=", $campo);
	    print_r($param);
	   if ($param) {
		 if ($param[0] == "alta" ){ $altas ='S'; };
	         if (substr($param[0],0,3) =="dni"){ $dni = urldecode($param[1]); };
	         if (substr($param[0],0,3) =="nom"){ $nom = urldecode($param[1]);};
...
...
};
 if ($altas =='S' and $dni != '' ){
  		$graba = "INSERT INTO inscritos.....

$resul = mysql_query($graba) or die ('Fallo en: '.mysql_error());
	};
		$altas = 'N';		
	};

Nunca me graba el priemer registo de todos los que le envio.
¿Por que puede ser?.

Los datos que le envio mediante POST son estos:

modifica:alta=on&dni11=222222f&nom12=FRANCISCO&apa13=Ao&apb14=Uge&fnc15=20%2F06%2F1964&sex16=H&pob17=Albaida&pro18=Sevilla&ema19=emilio%40yahoo.es&mod110=Liga&cat111=Master&clu=Adol&fev=Montellano+Marz-2014%2B&alta=on&dni21=1111111f&nom22=Peptio&apa23=A&apb24=Ue&fnc25=20%2F06%2F1964&sex26=H&pob27=Albaida&pro28=Sevilla&ema29=mallor%40yahoo.es&mod210=Liga&cat211=Master&clu=Adol&fev=Montellano+Marz-2014%2B

Gracias y un saludo,
Javier.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de xve

No graba el primer registro

Publicado por xve (5519 intervenciones) el 02/02/2014 20:12:58
Hola Javier, he intentado simular tu código, y parece que me funciona correctamente...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?php
$nsoci = "alta=on&dni11=222222f&nom12=FRANCISCO&apa13=Ao&apb14=Uge&fnc15=20%2F06%2F1964&sex16=H&pob17=Albaida&pro18=Sevilla&ema19=emilio%40yahoo.es&mod110=Liga&cat111=Master&clu=Adol&fev=Montellano+Marz-2014%2B&alta=on&dni21=1111111f&nom22=Peptio&apa23=A&apb24=Ue&fnc25=20%2F06%2F1964&sex26=H&pob27=Albaida&pro28=Sevilla&ema29=mallor%40yahoo.es&mod210=Liga&cat211=Master&clu=Adol&fev=Montellano+Marz-2014%2B";
 
$claves = preg_split("/%2B/", $nsoci); // Lleva al fina del registro un simbolo +
foreach ($claves as $nsoci0)
{
    echo "<br>";
    $altas="";
    foreach (explode('&', $nsoci0) as $campo) {
        $param = explode("=", $campo);
            print_r($param);
        if ($param) {
            if ($param[0] == "alta" ){ $altas ='S'; };
            if (substr($param[0],0,3) =="dni"){ $dni = urldecode($param[1]);};
            if (substr($param[0],0,3) =="nom"){ $nom = urldecode($param[1]);};
        }
    }
    $graba="";
    if ($altas =='S' and $dni != '' )
    {
        $graba = "INSERT INTO inscritos ".$dni;
    }
    echo $graba."<hr>";
}
?>

En este ejemplo, me muestra los dos inserts correctamente, por lo que puede ser que el error este en la instrucción SQL?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar