PHP - Sentencia que se repite

   
Vista:
Imágen de perfil de Bladimir

Sentencia que se repite

Publicado por Bladimir (88 intervenciones) el 15/07/2015 13:23:17
Hola a todos. Tengo una tabla cuyos datos necesito guardar en una tabla mysql usando php. El codigo que estoy usando funciona bien. El asunto es que los datos se guardan doble. Parece que el codigo se ejecuta doble y no logro corregirlo. El codigo es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
if (isset($_POST['guardar']) && $_POST['guardar']){
	$v1 = isset($_POST['number']) ? $_POST['number'] : null;
	$hoy = isset($_POST['fechaact']) ? $_POST['fechaact'] : null;
 
        if ((strlen($tempo4)>=1) && (strlen($hoy)>=1)) {
        	if(!empty($_POST['valor'])) {
        		foreach($_POST['valor'] as $dxs) {
        	       $link = mysqli_connect("localhost", "root", "1522", "Consulta") or die ('Error de conexion: ' . mysqli_error());
        	     	$result= mysqli_query($link,"SELECT DIAG FROM POOLDIAGNOSTICOS WHERE CODIGO='$dxs'");
        	    	while($row = mysqli_fetch_array($result)){
        	    	 mysqli_query($link, "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$v1', '$hoy', '$row[0]')");
                  	}
        	    }
        	}
        	echo "<h6 align='center'>El diagnostico se ha guardado con éxito</h6>";
        	 mysqli_close($link);
         }
	}
?>

Alguna ayuda se agradece. Saludos.
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

Sentencia que se repite

Publicado por xve (5520 intervenciones) el 16/07/2015 07:41:10
Hola Bladimir, en este código únicamente tienes un INSERT... o tienes un INSERT en algún otro lugar, o pasa dos veces por estas lineas de código...
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
Imágen de perfil de Vainas

Sentencia que se repite

Publicado por Vainas (254 intervenciones) el 16/07/2015 08:53:05
Buenas:

Aqui van algunos consejos para saber un poco que pasa:

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
26
27
28
29
<?php
 
if (isset($_POST['guardar']) && $_POST['guardar']){
	$v1 = isset($_POST['number']) ? $_POST['number'] : null;
	$hoy = isset($_POST['fechaact']) ? $_POST['fechaact'] : null;
 
        if ((strlen($tempo4)>=1) && (strlen($hoy)>=1)) {
        	if(!empty($_POST['valor'])) {
			//Aqui podrias imprimir el valor de $_POST['valor'] para ver si contiene lo que crees
			echo "$_POST['valor']";
                        // La conexion fuera del for para que no se repita
			$link = mysqli_connect("localhost", "root", "1522", "Consulta") or die ('Error de conexion: ' . mysqli_error());
        		foreach($_POST['valor'] as $dxs) {
        	     	$result= mysqli_query($link,"SELECT DIAG FROM POOLDIAGNOSTICOS WHERE CODIGO='$dxs'");
					// Aqui podrias imprimir cuantas filas te ha devuelto la consulta ya que
					// Segun las que sea se ejecutara x veces el insert
					echo "numero de filas del select: ". mysqli_num_rows($result);
        	    	while($row = mysqli_fetch_array($result)){
        	    	 mysqli_query($link, "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$v1', '$hoy', '$row[0]')");
                  	}
					//Una vez que realizas el/los INSERT(S) podrias colocar esta sentencia
					 mysqli_free_result($result);
        	    }
        	}
        	echo "<h6 align='center'>El diagnostico se ha guardado con éxito</h6>";
        	 mysqli_close($link);
         }
	}
?>

Ya nos diras que resultado da esto para ver que esta sucediendo.

Saludos.
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
Imágen de perfil de Bladimir

Sentencia que se repite

Publicado por Bladimir (88 intervenciones) el 17/07/2015 03:24:37
La sentencia echo "$_POST['valor']"; me arroja la palabra Array. Si en vez de esto coloco: echo '<pre>';print_r($_POST['valor']); echo '</pre>';die; me arroja un array con el codigo del diagnostico. la sentencia me arroja el codigo del diagnostico seleccionado ya que el diagnostico selecconado es un solo en la tabla POOLDIAGNOSTICOS. Sigo sin encontrar la falla
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