PHP - Meter datos y listarlos en un array asociativo con un formulario

   
Vista:

Meter datos y listarlos en un array asociativo con un formulario

Publicado por sam (138 intervenciones) el 30/10/2015 12:50:54
El asunto es que tengo que meter el nombre y la distancia orbital de cada asteroide mediante un formulario. y cuando meto los datos con el formulario de un nuevo asteroide solo me muestra el ultimo asteroide metido y no me muestra el listado de todos los asteroides metidos.

No debo usar bases de datos por que todavia no me las enseñado el profesor solo el array asociativo.

Ese es el problema que tengo.
este es el codigo:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
 
    $nombre = trim(($_POST['nombre']));
        $distancia_orbital = trim(($_POST['distancia_orbital']));
 
 
        $asteroides = array();
 
        array_push($asteroides, array('clave_nombre'=>$nombre, 'valor_distancia_orbital' => $distancia_orbital));
 
 
        foreach($asteroides as $valor)
        {
            echo "Nombre: " . $valor['clave_nombre'] . " | distancia orbital: " . $valor['valor_distancia_orbital'] . "<br/>";
        }
 
?>


en el formulario tengo esto:

1
2
3
4
5
6
7
<form name="formulario" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
 
    <input type="text" name="nombre" autofocus value="<?php if(isset($_POST['nombre']))?>" placeholder="Nombre"/>
 
    <input type="text" name="distancia_orbital" value="<?php if(isset($_POST['distancia_orbital']))?>" placeholder="Distancia Orbital"/>
 
</form>

gracias de antemano.
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

Meter datos y listarlos en un array asociativo con un formulario

Publicado por xve (5519 intervenciones) el 30/10/2015 15:53:28
Hola Sam, el PHP, por si solo, no guarda ningun valor, cada vez que se refresca la pagina, pierde todos sus valores, por lo que es importante guardarlos de alguna manera... si no los puedes guardar en una base de datos, otra solución es guardarlos en una variable de sesión....

Revisa este código haber si te sirve.

Coméntanos, ok?

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
session_start();
if($_POST['nombre'] && $_POST['distancia_orbital'])
{
	$_SESSION["asteroides"][$_POST['nombre']]=$_POST['distancia_orbital'];
}
?>
 
<form name="formulario" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    <input type="text" name="nombre" autofocus value="<?php if(isset($_POST['nombre']))?>" placeholder="Nombre"/>
    <input type="text" name="distancia_orbital" value="<?php if(isset($_POST['distancia_orbital']))?>" placeholder="Distancia Orbital"/>
    <input type="submit" value="Enviar">
</form>
 
<div>
	<?php
	if(isset($_SESSION["asteroides"]) && is_array($_SESSION["asteroides"]))
	{
		foreach($_SESSION["asteroides"] as $nombre=>$distancia)
		{
			echo "Nombre: " . $nombre . " | distancia orbital: " . $distancia . "<br/>";
		}
	}
	?>
</div>
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

Meter datos y listarlos en un array asociativo con un formulario

Publicado por Sam (138 intervenciones) el 31/10/2015 18:45:49
Hola xve, perfecto, imaginaba que funcionaria con sessiones pero no sabia como encararlo.

Funciona y entendido el codigo.

Una cosa, estoy intentando que compruebe el nombre del asteroide antes de ser introducido en el array y si estuviera repetido , no dejara ser insertado en el array y mostrar un mensaje diciendo que esta ya en el array dicho nombre.

la cuestion es que tengo un codigo programado que me salta el mensaje como que el nombre esta repetido en el array pero le tengo que dar 2 veces al boton del formulario para que me muestre dicho mensaje , y con un solo click deberia ser suficiente.

Ademas aun asi me sobreescribe de todas formas este repetido o no .

mira esto es lo que tengo:

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
if (in_array($_POST['nombre'], $_SESSION["asteroides"])) {
 
echo "ya existe este nombre PHA";
 
} else {
 
$_SESSION["asteroides"][$_POST['nombre']]=$_POST['distancia_orbital'];
}
 
 
 
/*
if($_POST['nombre'] && $_POST['distancia_orbital'])

	{
		$_SESSION["asteroides"][$_POST['nombre']]=$_POST['distancia_orbital'];
	}
*/
 
 
 
	echo "<table border='1'>

		<tr><td>Nombre</td><td>Distancia orbital</td></tr>

		";
 
 
		if(isset($_SESSION["asteroides"]) && is_array($_SESSION["asteroides"]))
 
		{
			foreach($_SESSION["asteroides"] as $nombre=>$distancia)
 
			{
				echo "<tr>"
 
				. "<td>" . $nombre . "</td>" . "<td>". $distancia . "</td>" .
 
				"</tr>";
			}
		}
 
	echo "</table>";
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 xve

Meter datos y listarlos en un array asociativo con un formulario

Publicado por xve (5519 intervenciones) el 01/11/2015 09:51:51
Hola Sam, aqui te adjunto el código modificado para que te indique si ya existe...
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
<?php
session_start();
if($_POST['nombre'] && $_POST['distancia_orbital'])
{
	if(isset($_SESSION["asteroides"][$_POST['nombre']]))
	{
		echo "Ya existe";
	}else{
		$_SESSION["asteroides"][$_POST['nombre']]=$_POST['distancia_orbital'];
	}
}
?>
 
<form name="formulario" action="<?php echo $_SERVER['PHP_SELF'];?>" method="post">
    <input type="text" name="nombre" autofocus value="<?php if(isset($_POST['nombre']))?>" placeholder="Nombre"/>
    <input type="text" name="distancia_orbital" value="<?php if(isset($_POST['distancia_orbital']))?>" placeholder="Distancia Orbital"/>
    <input type="submit" value="Enviar">
</form>
 
<div>
	<?php
	if(isset($_SESSION["asteroides"]) && is_array($_SESSION["asteroides"]))
	{
		foreach($_SESSION["asteroides"] as $nombre=>$distancia)
		{
			echo "Nombre: " . $nombre . " | distancia orbital: " . $distancia . "<br/>";
		}
	}
	?>
</div>
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

Meter datos y listarlos en un array asociativo con un formulario

Publicado por sam (138 intervenciones) el 01/11/2015 12:48:58
Hola xve, despues de escribir mi ultimo post en este hilo hice esto:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
foreach($_SESSION["asteroides"] as $nombre=>$distancia)
 
{
 
	if($nombre == $_POST['nombre']) {
 
		echo "ya existe este nombre PHA";
 
		die();
 
	} else {
		$_SESSION["asteroides"][$_POST['nombre']]=$_POST['distancia_orbital'];
	}
 
}

y aunque medio funciona, he de reconocer que el tuyo funciona mucho mejor , ya que el mio medio funciona mas bien.

Eres un fenomeno.
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