Inserción de datos en formulario

Iniciado por Arm144, 11 Noviembre 2016, 20:38 PM

0 Miembros y 1 Visitante están viendo este tema.

Arm144

Buenas, presento el siguiente problema con el que me topo, la cuestión es que tendría que hacer una agenda telefónica("en plan cutre"), en el cual me tiene que mostrar una tabla con los datos que voy introduciendo que son nombre y teléfono. Para ello me apoyo en el input type hidden para que me guarde los valores, ya que al volver a introducir un valor la pagina hace un refresh y me borra lo escrito, es decir se sobreescribe. Mi problema se presenta con esto último, todo el rato se esta sobreescribiendo y no consigo que en la tabla se muestren mas registros. Alguna sugerencia o resolución. Además se presenta el problema que no puedo utilizar JQuery ni Ajax ni javascript, solo Html y PHP. :(

Aqui dejo mi código que evidentemente está defectuoso xD.

Código (php) [Seleccionar]
<html>
<head>
<title>Agenda</title>
</head>
<body>
<h1 align="center">Agenda de Contactos</h1>
<form method="post" action="Agenda.php">
Nombre <input type="text" name="nomTf" ><br>
Telefono <input type="tel" name="telTf"><br>
<input type="submit" value="Guardar" name="Guardar">
<input type="hidden" name="datosGuardados" value=<?php $datosGuardados?>>

</form>
<?php
if($_POST){
$nombre=$_POST['nomTf'];
$telefono=$_POST['telTf'];
$datosGuardados=$_POST['datosGuardados'];

$datosGuardadosNom[]=$nombre;
$datosGuardadosTel[]=$telefono;

$contactoNom=implode(','$datosGuardadosNom);
$contactoTel=implode(','$datosGuardadosTel);

if($nombre==""){
echo "El nombre está vacio";
}
if(!is_numeric($telefono)){
echo "El teléfono tiene que ser un número";
}

echo "Tu contacto se ha guardado que es: " $contactoNom.','.$contactoTel;
echo '<table border="10" align="center" >
                <tr><td>Nombre</td><td>Teléfono</td></tr>'
;
echo '<tr>';
echo '<td align="center">'$nombre.'</td>';
echo '<td align="center">'$telefono.'</td>';
echo '</tr>';
echo '<tr>';
for ($i 1$i count($datosGuardados); $i++) {
echo '<td align="center">'$contactoNom.'</td>';
echo '<td align="center">'$contactoTel.'</td>';
}
echo '</tr>';
echo '</table>';
}
?>

</body>
</html>


Gracias de antemano por tomaros la molestia de mirarlo.


Mod: Los códigos deben ir en etiquetas GeSHi

SetzerFF

Recordá poner el código entre código GeSHi.

No podés usar tampoco base de datos (MariaDB, o PostgreSQL por ej.)?
Tampoco podes usar un archivo de tipo texto, para actuar como base de datos? o en el peor de los casos cookies?

Porque, cuando, cierres esa pagina, va a aparecer sin entradas nuevamente. Pero si eso no importa...

Lo que veo en el código es que tomas el $datosGuardados en hidden, pero no pasas ningun valor. Podrias usar serialize() y unserialize() para guardar los datos en un array. Y luego, al hacer POST de nuevo, que se deserialize el array, se agreguen los datos nuevos al array, y serializarlo para mostrarlo en el input hidden-


Salu2

Fold'em, Let'em Hit Me, Raise It, Stay with Me

Arm144

#2
Saludos. Al final tras mucho ahínco conseguí una resolución. Seguro que no es la mejor ni la más bonita, pero pude salir del paso jajajajaja actualmente le estoy añadiendo algunas comprobaciones. Gracias a todos por todo. Saludos¡¡¡

P.D: dejo el código por si a alguno le interesa.

Código (php) [Seleccionar]
<html>
<head>
<title>Agenda</title>
</head>
<body>
<?php
if($_POST){
$nombre=$_POST['nomTf'];
$telefono=$_POST['telTf'];
$nom =$_POST["nombres"];
$tel=$_POST["telefonos"];
$salidaNom$nom.",".$nombre;
$salidaTel$tel.",".$telefono;

$contactoNomExp explode(","$salidaNom);
$contactoTelExp explode(","$salidaTel);
//Comprobación de que se introdujo un nombre
if ($_POST['nomTf']==""){
//No introdujo nombre
}
//Insercción de datos
if((in_array($_POST['nomTf'], $contactoNomExp)==false) && ($_POST['telTf']!="")){
echo '<table border="10" align="center" >
                 <tr color="#c0c0c0"><td>Nombre</td><td>Telefono</td></tr>'
;
echo '<tr>';
for ($i 1$i count($contactoNomExp); $i++) {
echo '<td align="center">'$contactoNomExp[$i].'</td>';
echo '<td align="center">'$contactoTelExp[$i].'</td>';
echo '</tr>';
}
echo '</table>';
}
//Sustitución de numero telefono
if((in_array($_POST['nomTf'], $contactoNomExp)==true) && ($_POST['telTf']!="")){
for ($i 1$i count($contactoNomExp); $i++) {
echo '<td align="center">'$contactoNomExp[$i].'</td>';
echo '<td align="center">'$contactoTelExp[$i].'</td>';
echo '</tr>';
}
echo '</table>';
}
//Eliminación de registro
if((in_array($_POST['nomTf'], $contactoNomExp)==true) && ($_POST['telTf']=="")){
for ($i 1$i count($contactoNomExp); $i++) {
unset($contactoNomExp[$i]);
unset($contactoTelExp[$i]);
echo '</tr>';
}
echo '</table>';
}
}

?>

<h1 align="center">Agenda de Contactos</h1>
<form method="post" action="Agenda.php">
Nombre <input type="text" name="nomTf"><br>
Telefono <input type="text" name="telTf"><br>
<input type="submit" value="Guardar" name="Guardar">
<input type="hidden" name="nombres" value=<?php  $salidaNom?>>
<input type="hidden" name="telefonos" value=<?php  $salidaTel?>>
</form>
</body>
</html>



Mod: Los códigos deben ir en etiquetas GeSHi