PHP - Guardat tabla html en bd

 
Vista:
Imágen de perfil de Bladimir

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 13/05/2015 12:39:10
Hola a todos. Desde hace cierto tiempo vengo lidiando con un problema con tabla html. Tengo una tabla html que se llena en forma dinamica. Yo quiero a traves de un boton tipo submit guardar esos datos, fila por fila, y columna por columna en una base de datos msql usando php obviamente. El codigo que estoy usando me guarda solo la primer fila y no las restantes y la tercera columna, donde hay un input tipo texto tampoco la guarda. El codigo que estoy usando es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$numero = isset($_POST['number']) ? $_POST['number'] : null;
$evoact = isset($_POST['histclin']) ? $_POST['histclin'] : null;
$hoy = isset($_POST['fechaact']) ? $_POST['fechaact'] : null;
$tempo4 = isset($_POST['nfilas']) ? $_POST['nfilas'] : null;
$dx = isset($_POST['dxs']) ? $_POST['dxs'] : null;
$num2 = isset($_POST['nfilas']) ? $_POST['nfilas'] : null;
if ((strlen($evoact)>1) && (strlen($tempo4)>0)) {
	for ($i=0; $i < count($num2); $i++){
		$link = mysqli_connect("localhost", "root", "", "Consulta") or die ('Error de conexion: ' . mysqli_error());
		mysqli_query($link, "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$numero', '$hoy', '$dx')");
		mysqli_close($link);
	}
}
?>

Mucho agradecería si alguien sabe como mejorar el codigo y que el problema se resuelva.
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardat tabla html en bd

Publicado por Mauricio (30 intervenciones) el 13/05/2015 16:24:01
los datos que muestras en la tabla vienen dentro de inputs ?

como se genera la tabla dinamica que muestra los datos?
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

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 13/05/2015 17:27:12
La tabla se genera dinamicamente a partir de una tabla de la base de datos. En relación al código php mostrado, los dos primeros values no pertenecen a esa tabla html. Solo el último. El asunto es que yo quiero recorrer la tabla html fila por fila y guardarla en la base de datos. Todos los valores están dentro de input. ¿No se si me expliqué?.
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardat tabla html en bd

Publicado por Mauricio (30 intervenciones) el 13/05/2015 18:54:52
no se como generes los inputs, no pusiste el codigo .-. asi que voy a suponer

1
2
3
4
5
6
7
8
9
ciclo {
	$tabla .= '<tr><td><input name="txtvalor" value="'.$valor'.'" /></td></tr>'
}

//podrias usar un for y que el indice lo incluyeras en el nombre del input

for($i=0; $i<=count($rows); $i++){
	$tabla .= '<tr><td><input name="txt_'.$i.'" value="'.$valor'.'" /></td></tr>'
}

al final en el html se veria asi suponiendo que son 3 registros

<input name="txt_0"
<input name="txt_1"
<input name="txt_2"

ahora cuando vas a guardar
for ($i=0; $i < count($num2); $i++){
$link = mysqli_connect("localhost", "root", "", "Consulta") or die ('Error de conexion: ' . mysqli_error());
mysqli_query($link, "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$numero', '$hoy', '".$_POST["txt_".$i]."')");
mysqli_close($link);
}
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

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 13/05/2015 22:47:34
Hola Mauricio. El codigo que me propones no funciona. Cuando verifico en la tabla mysql solo se insertan los dos primeros value es decir numero y fecha. El campo DIAG aparece vacio en la tabla msql. La tabla html se llena a partir de un select. Con javascript paso los item que yo desee a la tabla html. Hasta aqui todo bien. El asunto es cuando voy a guardar la tabla html que parece que ell no es tomada en cuenta. En concreto el codigo de la tabla html es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
<table border = 1 cellspacing = 1 cellpadding = 1 id="dxprevi"> <tr><th>Diagnosticos1</th> <th></th></tr>
	<?php
	$dx = isset($_POST['dxs']) ? $_POST['dxs'] : null;
	$link = mysqli_connect("localhost", "root", "", "Consulta") or die ('Error de conexion: ' . mysqli_error());
	$result= mysqli_query($link,"SELECT DIAG FROM DIAGNOSTICOS");
		while($row = mysqli_fetch_array($result)){
		echo "<tr class='alt'> <td> <input type='text' id='dxs' value='$row[0]' /></td><td><input type='button'  value='Eliminar' onclick='Eliminar(this.parentNode.parentNode.rowIndex)'</td></tr>";
	}
 
?>
</table>

Los valores NUMERO y FECHA son tomados de 2 input que no forman parte de la tabla HTML. Estos son sus codigos respectivos:
1
2
<input type='text' name= 'number' value='$v1'/>
<input type="date" id="fechaact" name="fechaact" maxlength="10" style="width:100px;height:20px;background-color:white;color:black;font-size:12pt; font-family:Verdana;text-align:center;">

El codigo php que se ejecuta para guardar la tabla html es el siguiente:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
	$v1 = isset($_POST['number']) ? $_POST['number'] : null ;
	$v1 = $_SESSION['codigos'];
	echo "<input type='text' name= 'number' value='$v1'/>";
	?>
	<?php
	$numero = isset($_POST['number']) ? $_POST['number'] : null;
	$evoact = isset($_POST['histclin']) ? $_POST['histclin'] : null;
	$hoy = isset($_POST['fechaact']) ? $_POST['fechaact'] : null;
	$tempo4 = isset($_POST['nfilas']) ? $_POST['nfilas'] : null;
	$dx = isset($_POST['dxs']) ? $_POST['dxs'] : null;
	$num2 = isset($_POST['nfilas']) ? $_POST['nfilas'] : null;
         if ((strlen($evoact)>1) && (strlen($tempo4)>0)) {
                 for ($i=0; $i < count($num2); $i++){
                 	$link = mysqli_connect("localhost", "root", "", "Consulta") or die ('Error de conexion: ' . mysqli_error());
                 	mysqli_query($link, "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$numero', '$hoy', '".$_POST['dxs']."')");
                 	mysqli_close($link);
              }
         }
?>

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

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 13/05/2015 23:12:15
En la pagina hay varias tablas. El asunto es que como se hacer para que el recorrido de la sentencia for sea para la tabla de se desea y no otra.
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardat tabla html en bd

Publicado por Mauricio (30 intervenciones) el 15/05/2015 05:18:29
1......en tu codigo donde generas la tabla html con los inputs le pones el id
pero el metodo post los identifica con el atributo name ponle el id y el name con el mismo nombre

2... el el for que usas para insertar quitale la funcion count($num2) dejalo solo asi --> $i < $num2

te adjunto el codigo que probe y adjunto la base de datos que cree para que lo purebes espero te sirva..

saludos.
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
<?php
 
if(isset($_POST["guardar"])){
    	//$v1 = isset($_POST['number']) ? $_POST['number'] : null ;
 
	//$v1 = $_SESSION['codigos'];
 
	//echo "<input type='text' name= 'number' value='$v1'/>";
 
//	echo '<pre>';print_r($_POST); echo '</pre>';die;
 
 
 
	$numero = isset($_POST['number']) ? $_POST['number'] : null;
 
	//$evoact = isset($_POST['histclin']) ? $_POST['histclin'] : null;
 
	$hoy = isset($_POST['fechaact']) ? $_POST['fechaact'] : null;
 
	//$tempo4 = isset($_POST['nfilas']) ? $_POST['nfilas'] : null;
 
	//$dx = isset($_POST['dxs']) ? $_POST['dxs'] : null;
 
	$num2 = isset($_POST['nfilas']) ? $_POST['nfilas'] : null;
 
        // if ((strlen($evoact)>1) && (strlen($tempo4)>0)) {
 
                 for ($i=0; $i < $num2; $i++){
 
                 	$link = mysqli_connect("localhost", "root", "", "mydb") or die ('Error de conexion: ' . mysqli_error());
                    //echo "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$numero', '$hoy', '".$_POST['dxs_'.$i]."')";
                 	mysqli_query($link, "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$numero', '$hoy', '".$_POST['dxs_'.$i]."')");
 
                 	mysqli_close($link);
 
              }
 
        // }
 
}
?>
<form name="guardardiag" action="" method="post">
numero:<input type='text' name= 'number'/>
 
fecha <input type="date" id="fechaact" name="fechaact" maxlength="10" style="width:100px;height:20px;background-color:white;color:black;font-size:12pt; font-family:Verdana;text-align:center;"/>
<table border = 1 cellspacing = 1 cellpadding = 1 id="dxprevi"> <tr><th>Diagnosticos1</th> <th></th></tr>
 
	<?php
 
	$dx = isset($_POST['dxs']) ? $_POST['dxs'] : null;
 
	$link = mysqli_connect("localhost", "root", "", "mydb") or die ('Error de conexion: ' . mysqli_error());
 
	$result= mysqli_query($link,"SELECT DIAG FROM DIAGNOSTICOS");
        $i =0;
		while($row = mysqli_fetch_array($result)){
 
		echo "<tr class='alt'> <td> <input type='text' name='dxs_".$i."' value='$row[0]' /></td><td><input type='button'  value='Eliminar' onclick='Eliminar(this.parentNode.parentNode.rowIndex)'</td></tr>";
        $i++;
	}
 
 
 
?>
 
</table>
<input type="hidden" name="nfilas" value="<?php echo $i; ?>" />
<input type="submit" name="guardar" value="Guardar" />
</form>


pruebalo a ver si te sirve o te de una idea de lo que buscas
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

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 15/05/2015 21:15:48
Gracias por la respuesta. Me sale el siguiente error:
Notice: Undefined index: dxs_0 in /opt/lampp/htdocs/RHM/Consulta.php on line 543

Notice: Undefined index: dxs_1 in /opt/lampp/htdocs/RHM/Consulta.php on line 543

Notice: Undefined index: dxs_2 in /opt/lampp/htdocs/RHM/Consulta.php on line 543
La linea referenciada es esta:
mysqli_query($link, "INSERT INTO DIAGNOSTICOS (NUMERO, FECHA, DIAG) VALUES ('$numero', '$hoy', '".$_POST['dxs_'.$i]."')");
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

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 15/05/2015 23:46:58
Ya resolvi el error. Solo me faltaba comentar la linea donde se declara la variabe $dx. Pero ahora no se guarda nada en la tabla mysql.
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
sin imagen de perfil
Val: 8
Ha aumentado su posición en 16 puestos en PHP (en relación al último mes)
Gráfica de PHP

Guardat tabla html en bd

Publicado por Mauricio (30 intervenciones) el 16/05/2015 00:45:01
si cambiaste lo que te dije cuando generas la tabla ??
1
2
3
4
5
6
7
$result= mysqli_query($link,"SELECT DIAG FROM DIAGNOSTICOS");
        $i =0;
		while($row = mysqli_fetch_array($result)){
 
		echo "<tr class='alt'> <td> <input type='text' name='dxs_".$i."' value='$row[0]' /></td><td><input type='button'  value='Eliminar' onclick='Eliminar(this.parentNode.parentNode.rowIndex)'</td></tr>";
        $i++;
	}
agregarle al input el name --->name='dxs_".$i."' y obviamente declarar esa variable $i=0; y sumarle 1 que es asi -- > $i++
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

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 16/05/2015 01:22:50
Ahora se guardan en la tabla mysql solo los dos primeros campos, es decir numero y fecha. El campo DIAG aparece vacio. Se arroja el siguiente error:
Notice: Undefined index: dxs_1 in /opt/lampp/htdocs/RHM/Consulta.php on line 541
Se ha guardado con éxito

Notice: Undefined index: dxs_2 in /opt/lampp/htdocs/RHM/Consulta.php on line 541
Se ha guardado con éxito
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

Guardat tabla html en bd

Publicado por Bladimir (88 intervenciones) el 16/05/2015 02:59:08
Si. La tabla quedó tal cual lo sugeriste. También se colocó id y name iguales. Pero parece que no reconoce la variable dxs_
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