PHP - Array asociativo. Formulario

   
Vista:

Array asociativo. Formulario

Publicado por david (17 intervenciones) el 02/11/2012 13:44:53
Hola, necesita una ayudita porque me he quedado en blanco.

Quiero hacer un programa que guarde un array asociativa el nombre,edad y poblacion. Y que sea introducida con un formulario.



Se guardara en una BBDD "portal_web"

El script tiene que ser el siguiente:
-usuarios -> nombre usuario, edad y id (clave primaria)

-poblacion -> nombre poblacion, id_usuario (que sera la id de la tabla anterior)

Importante: una poblacion puede ser la misma para mas de un usuario




Todo esto se guardara en un fitxero (nombre, edad, poblacion) que le llamaremos datos_usuario.
Hare un script para k me lo genere y despues para k me muestre el contenido.

Muchas gracias.
Con que me digais como comenzar me conformo, xk me e kedado en blanco y nose como empezar.
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

Array asociativo. Formulario

Publicado por Jose Manuel josema@orbisapientia.com (43 intervenciones) el 03/11/2012 11:27:27
Hola David:

En este caso yo comenzaría haciendo el formulario, con los campos input necesarios para guardar los datos que indicas y como action del formulario, un script php que recoja los datos y que ya se vería. Un campo para el nombre del usuario, (el id no hace falta, salvo que quieras algo especial), otro para la edad y otro para el nombre de la población. Finalmente un botón para enviar el formulario.

No te compliques con validaciones ni nada de momento, solamente, que el formulario recoja los datos y que un script php los reciba y los muestra tal cual. Primer paso.

Saludos,

José Manuel
=============================
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por David (17 intervenciones) el 03/11/2012 17:59:45
Muchas gracias. Estoy en ello, cuando termine lo publico
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

Array asociativo. Formulario

Publicado por david (17 intervenciones) el 03/11/2012 18:35:06
Formulario.html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Formulario</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name="generator" content="Geany 0.21" />
</head>
<body>
<!--Formulario-->
<form method="post" action="enviar.php">
<h1>Intriducir los datos:</h1>
Nombre: <input type="text" name="nombre" size="20"><br>
Edad: <input type="text" name="edad" size="20"><br>
Poblacion: <input type="text" name="poblacion" size="20"><br><br><br>
 
Reset<input name="reset" value="Borrar datos" type="reset">
Enviar datos<input name="submit" value="Enviar datos" type="submit">
</form>
</body>
</html>



enviar.php


1
2
3
4
5
<?php
print "Variable $nombre: " . $_REQUEST["nombre"] . "<br>";
print "Variable $edad: " . $_REQUEST["edad"] . "<br>";
print "Variable $poblacion: " . $_REQUEST["poblacion"] . "<br>";
?>



He hecho el formulario simple. Y lo recojo con el script
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

Array asociativo. Formulario

Publicado por Jose Manuel josema@orbisapientia.com (43 intervenciones) el 04/11/2012 08:32:01
Perfecto. Permíteme solamente un comentario y es que en vez de $_REQUEST, si el formulario envía los datos a través de $_POST, utilices $_POST. Es un poco más de seguridad.

Pero a lo que vamos, ahora lo siguiente. En este punto no me queda muy claro si vas a guardar los datos en base de datos o en un fichero. En caso de base de datos, tendría dos tablas, una para el usuario y otra para las poblaciones. El id del usuario lo puede poner automáticamente la base de datos al guardar un nuevo usuario mediante un campo id con autoincremento. Al guardar la población, primero recupera el id que ha puesto la base de datos al usuario y lo añades. Después está el "problema" de que puede haber más de una población para un usuario concreto. Pues en la tabla de las poblaciones añades un campo más, que puedes llamar id_poblacion (por ejemplo) y que sea autoincremento.

Así que el siguiente paso es crear las tablas correspondientes y añadir los datos que obtienes del formulario.

Saludos David.

José Manuel
=====================
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por david (17 intervenciones) el 05/11/2012 16:52:27
enviar.php

<?php
print "Variable $nombre: " . $_POST["nombre"] . "<br>";
print "Variable $edad: " . $_POST["edad"] . "<br>";
print "Variable $poblacion: " . $_POST["poblacion"] . "<br>";
?>
Le pongo $_POST


La BBDD quedara así:

porta_web.sql

--Base de datos: 'portal_web'

CREATE TABLE 'usuarios'(
'id_usuario' int(11) NOT NULL auto_increment,
'usuario' varchar(30) NOT NULL,
'edad' int(5) NOT NULL,PRIMARY KEY ('id_usuario')
)

CREATE TABLE 'poblaciones' (
'poblacion' varchar(30) NOT NULL,
'id_usuario' int(11) NOT NULL,
'id_poblacion' int(11) NOT NULL auto_increment,
PRIMARY KEY ('poblacion','id_usuario')
)
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

Array asociativo. Formulario

Publicado por Jose Manuel josema@orbisapientia.com (43 intervenciones) el 05/11/2012 17:14:30
Seguimos pues David:

Imagino que utilizas como motor de base de datos MySQL. En ese caso, utiliza las funciones típicas de PHP para trabajar con MySQL para guardar cada usuario que venga del formulario. Estos son más o menos los pasos:

1.- ¿Existe un usuario con el mismo nombre, edad y población en las correspondientes tablas?
Tendrás que usar un SELECT, claro.

2.- Sí. Si te encuentras con ánimos, vuelve a cargar el formulario poniendo un mensaje de que ya
existe un usuario con esos datos. Si no, deja eso de momento.

3.- No. Guardo el usuario. Si haces una consulta que busque al usuario que acabas de guardar, te
devolverá su id también. Matarás dos pájaros de un tiro: saber si se ha añadido y cuál es su id.

4.- Una vez sabes el id del usuario, guardas la población introducida en el formulario. Si se han
introducido los datos correctamente, lo normal es avisar con un mensaje al usuario. Como
siempre, si no te quieres agobiar, pasa de esto de momento. Siempre puedes ir
perfeccionando todo lo que hagas más adelante.

Ya nos cuentas David.

Saludos,
José Manuel
=================
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por david (17 intervenciones) el 05/11/2012 18:05:49
En el archivo enviar.php he realizado los siguientes cambios
enviar.php

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
<?php
print "Variable $nombre: " . $_POST["nombre"] . "<br>";
print "Variable $edad: " . $_POST["edad"] . "<br>";
print "Variable $poblacion: " . $_POST["poblacion"] . "<br>";
 
//conectamos a la BBDD
$conexion=mysql_connect("localhost", "root", "") or die ("No se ha podido establecer conexion");
//Seleccionem una base de dades
mysql_select_db("rrhh",$conexion) or die();
 
//Recollim les dades del formulari
$nombre=$_POST['nombre'];
$edad=$_POST['edad'];
$poblacion=$_POST['poblacion'];
 
//Si se envia el formulario
$query = “INSERT INTO `usuarios` values ({$_POST['usuario']},{$_POST['edad']},{$_POST['poblacion']})”;
$response = mysql_query($query);
 
//Realizamos la consulta
if (!$responde){
	echo "La consulta SQL contiene errores.".mysql_error();
	exit();
}else{
	echo "<center><font color=’RED’>DATOS INSERTADOS CORRECTAMENTE</font>"
}
 
?>


Muchas gracias por tu ayuda. Me esta sirviendo de mucho. Es de agradecer.
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

Array asociativo. Formulario

Publicado por Jose Manuel josema@orbisapientia.com (43 intervenciones) el 05/11/2012 18:35:47
Ok. Veo algunos problemas:

- asignas los $_POST de nombre, edad y poblacion a variables, pero luego no las usas al crear el insert.

- el insert que utilizas intenta guardar la población en la tabla usuario, pero no existe ese campo en esa tabla. El campo poblacion está en la tabla poblaciones.

- Antes de hacer el insert, debes comprobar si existe un usuario con esa edad y esa población. Si existe e intentas añadir uno con los mismos datos te dará error. Utiliza un select... inner join... where... Si devuelve algún registro es que ya existe, sino, puedes insertar los datos sin problemas.

David, gracias más bien a las personas que hacen posible este portal. Reconforta echar una mano.

Saludos.

José Manuel
=============
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por david davo3k@gmail.com (17 intervenciones) el 06/11/2012 18:17:10
enviar.php

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
<?php
print "Variable $nombre: " . $_POST["nombre"] . "<br>";
print "Variable $edad: " . $_POST["edad"] . "<br>";
print "Variable $poblacion: " . $_POST["poblacion"] . "<br>";
?>
 
<html>
<head>
</head>
<body>
<?php
 
if ($nombre=="" || $edad=="" || $poblacion=="") {
	echo "Error, debes rellenar todos los campos.";
}else{
	//conectamos a la BBDD
	$conexion=mysql_connect("localhost", "root", "") or die ("No se ha podido establecer conexion");
	//Seleccionamos la bbdd
	mysql_select_db("portal_web",$conexion) or die();
 
//recogemos llos datos del formulario
$nombre=$_POST['nombre'];
$edad=$_POST['edad'];
$poblacion=$_POST['poblacion'];
 
//comprobamos si ya existe el usuario
$existe = mysql_query("SELECT * FROM usuarios WHERE edad=''");
if($existe==1){
    echo "Ese usuario ya existe";
 
}else{
    //Insertando en la base de datos  
	$sql="INSERT INTO 'usuario' (Nombre, Edad','$nombre','$edad')";
	mysql_query($sql,$conexion);
	$sql2="INSERT INTO 'poblacion' (Poblacion','$poblacion')";
	mysql_query($sql2,$conexion) ;
	mysql_close($conexion);
}
 
?>


Voi pasito a pasito pero sin pausa.
1.- Compruebo que he insertado datos
2.-En el insert pongo las variables
3.-En el comprobar usuario (si existen un usuario identico, nose bien bien como ponerlo. He puesto lo d edad como ejemplo. haber si puedes echarme una mano.

gracias
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

Array asociativo. Formulario

Publicado por Jose Manuel josema@orbisapientia.com (43 intervenciones) el 07/11/2012 09:30:14
Cierto, paso a paso pero has avanzado. Veamos, hay algunos problemas.

- Estás utilizando $nombre, $edad y $poblacion antes de asignarles los respectivos $_POST. Primero recoge los datos del formulario y pásalos a estas variables. Después, utilízalos en el if. Por otro lado, creo que la mejor forma de validar, ya que te has empezado a hacerlo, es con expresiones regulares y comenzaría por realizarlas en JavaScript.

- Para comprobar si existe el usuario, debes tener en cuenta que utilizas dos tablas, la de usuarios y poblaciones. Recuerda que un mismo usuario puede tener varias poblaciones, así que no puedes dar de alta un usuario que ya exista con el mismo nombre de usuario, misma edad y misma población. Bien al utilizar el SELECT, pero el WHERE debe comprobar usuario, edad y población. Para hacer el SELECT de las dos tablas tienes que utilizar un INNER JOIN. Si no lo consigues, te indico.

- Para comprobar si el SELECT te devuelve algún registro utiliza mejor la función mysql_num_rows.

- El segundo INSERT que haces está mal porque estás intentando insertar la población sin indicar el id del usuario al que va asociada. De ahí hacer el SELECT anterior también, para recuperar el id, del usuario que acabas de insertar y tenerlo para hacer un insert correcto de la población.

Paciencia. Recuerda: divide y vencerás, es algo muy viejo pero funciona a la perfección, por eso lo de ir paso a paso. Te aseguras que funciona una cosa, por pequeña que sea y continúas con la siguiente. En realidad, es una buena parte de la filosofía empleada en programación XP. Ánimo.

Saludos,

José Manuel
================
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por david davo3k@gmail.com (17 intervenciones) el 08/11/2012 18:11:43
formulario.html



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
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Formulario</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name="generator" content="Geany 0.21" />
</head>
<body>
<!--Formulario-->
<form name="formulario" method="post" action="enviar.php">
<h1>Intriducir los datos:</h1>
Nombre: <input type="text" name="nombre" size="20"><br>
Edad: <input type="text" name="edad" size="20"><br>
Poblacion: <input type="text" name="poblacion" size="20"><br><br><br>
 
Reset<input name="reset" value="Borrar datos" type="reset">
Enviar datos<input name="submit" value="Enviar datos" type="submit" Onclick="validar_envia">
</form>
 
<?php
 
function validar_envia(){
   	//valido el nombre 
   	if (document.formulario.nombre.value.length==0){
      	 alert("Tiene que escribir su nombre")
      	 document.formulario.nombre.focus()
      	 return 0;
   	}
 
   	//valido la edad. tiene que ser entero mayor que 18 
   	edad = document.formulario.edad.value
   	edad = validarEntero(edad)
   	document.formulario.edad.value=edad
   	if (edad==""){
      	 alert("Tiene que introducir un número entero en su edad.")
      	 document.formulario.edad.focus()
      	 return 0;
   	}else{
      	 if (edad<18){
         	 alert("Debe ser mayor de 18 años.")
         	 document.formulario.edad.focus()
         	 return 0;
      	 }
   	}
 
   	//valido la poblacion
   	if (document.formulario.poblacion.value==0){
      	 alert("Debes introducir una población")
      	 document.formulario.poblacion.focus()
      	 return 0;
   	}
 
   	//el formulario se envia 
   	alert("Muchas gracias por enviar el formulario");
   	document.formulario.submit();
}
?>
 
</body>
</html>


He validado mediante javascript.
Voi al siguiente paso y te comento, voi a intentar hacer el select y que no se repitan usuarios.
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

Array asociativo. Formulario

Publicado por david davo3k@gmail.com (17 intervenciones) el 08/11/2012 19:08:30
1
2
3
4
5
//comprobamos si ya existe el usuario
$existe = mysql_num_rows"SELECT usuarios.*, poblaciones.* FROM usuarios
INNER JOIN poblaciones ON (usuarios.id=poblaciones.id_usuario))";
if($existe==1){
    echo "Ese usuario ya existe";


Creo que he hecho bien el INNER JOIN. El INSERT no se como hacerlo para que me lo relaciones con usuario y poblacion
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

Array asociativo. Formulario

Publicado por Jose Manuel josema@orbisapientia.com (43 intervenciones) el 11/11/2012 14:34:17
Hola David:

Personalmente utlizaría la función mysql_num_rows para ver si el select con el join ha devuelto algún registro (el usuario ya existía). Siempre me ha dado menos problemas cuando la usaba. Bueno en el caso de que no exista, la inserción del usuario va de esta forma:

Si en la tabla usuario ya existía el usuario no lo insertamos claro. Tenemos que tomar su id y para ello lo recuperamos mediante un select. Es decir, a estas alturas tienes que comprobar que no existe un usuario con esa edad y esa población, para que no se repita. Si no existe, tienes que comprobar si existe o no el usuario con esa edad. Si no existe lo insertas. Si existe, haces un select del usuario para recuperar su id.

Lo que une un usuario a la población es el id del usuario. Cada vez que insertas una población, tienes que insertar el id del usuario al que pertenece la población que estás insertando.

Para averiguar el id de un usuario existente, haces un select y recuperas el id.

Para averiguar el id de un usuario que se acaba de insertar, puedes hacer un select que utilice el SQL LAST_INSERT_ID() de MySQL o bien, mejor, puedes usar la función php mysql_insert_id(), que te da el último id creado con autoincremento en un insert.

La cuestión es que cuando tienes el id del usuario al que vas a asignar la población, realizas el insert de la población añadiendo el id del usuario en el lugar correspondiente.

Resumo: suponiendo que no existe ya un usuario con esa edad y población (inner join visto), ¿existe un usuario con ese nombre y edad? Si. Hago un select y guardo su id. Añado la población con el id que acabo de recoger.

No. Inserto el nuevo usuario con esa edad. Utilizo mysql_insert_id y guardo el id del usuario nuevo. Añado la población con el id de usuario que acabo de recoger.

Bueno, como ves según avanzas se va complicando poco a poco. Supongo que estarás conmigo en que es algo normal, pero si vas como hasta ahora, dividiendo, paso a paso, lo conseguirás.

Saludos David, por aquí seguimos.

José Manuel
=====================
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por david (17 intervenciones) el 12/11/2012 20:56:40
//comprobamos si ya existe el usuario
$existe = mysql_query ("SELECT usuarios.*, poblaciones.* FROM usuarios
INNER JOIN poblaciones ON (usuarios.id=poblaciones.id_usuario))";
if(mysql_num_rows($existe)==1){
echo "Ese usuario ya existe";



Ya he cambiado esto.
Este fin de semana no he tenido mucho tiempo. Mañana estaré todo el día con esto. Lo quiero terminar cuanto antes. Gracias por la ayuda.
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

Array asociativo. Formulario

Publicado por david (17 intervenciones) el 13/11/2012 19:19:05
Hola jose manuel.

He estado buscando y lo único que logro hacer es esto...


enviar.php


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
<html>
<head>
</head>
<body>
<?php
//recogemos llos datos del formulario
$nombre=$_POST['nombre'];
$edad=$_POST['edad'];
$poblacion=$_POST['poblacion'];
 
//conectamos a la BBDD
$conexion=mysql_connect("localhost", "root", "1234") or die ("No se ha podido establecer conexion");
//Seleccionamos la bbdd
mysql_select_db("portal_web",$conexion) or die();
 
 
//comprobamos si ya existe el usuario
$existe = mysql_query ("SELECT usuarios.*, poblaciones.* FROM usuarios
INNER JOIN poblaciones ON (usuarios.id=poblaciones.id_usuario)");
if(mysql_num_rows($existe)==1){
    echo "Ese usuario ya existe";
 
}else{
    //Insertando en la base de datos  
	$sql="INSERT INTO 'usuarios' (Nombre, Edad','$nombre','$edad')";
	mysql_query($sql,$conexion);
 
	$ultimo_id = mysql_insert_id($conexion);;
	$sql2="INSERT INTO 'poblaciones' (Poblacion,id_usuario' ,'$poblacion','$ultimo_id')";
	mysql_query($sql2,$conexion) ;
	mysql_close($conexion);
}
 
 
 
//lo grabamos en un fichero
$fecha=date("d m y");
$archivo= "fichero1.txt";
$fichero= "
		Fecha: $fecha------
		Nombre: $nombre------
		Edad: $edad------
		Poblacion: $poblacion <hr><hr>";
 
$file=	fopen($archivo,"a");
		fputs($file, $fichero);
		fclose($file);
 
?>



Esta última parte la he hecho para meterlo en un fichero pero no es nada. lo importante es la parte de insertar la población, he intentado hacer esto, dudo que este bien, aver si podrias exarme una mano. Gracias

Y otra cosa, en mi anunciado me dice que lo guarde en un vector asociativo. me gustaría saber a que se refiere (si tu lo sabes claro)

gracias!
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

Array asociativo. Formulario

Publicado por José Manuel josema@orbisapientia.com (43 intervenciones) el 14/11/2012 10:07:13
Hola David:

Si que has avanzado. Veamos. En el JOIN yo añadiría un where al final, puesto que se trata de ver si ya existe un usuario con el mismo usuario (valga la redundancia), misma edad y población. Dado lo que explicabas, eso sería un registro repetido. El where, sería algo como:

...... where usuarios.usuario = '". $nombre . "' and usuarios.edad = '" . $edad . "' and poblaciones.poblacion = '" . $poblacion . "'"...............

Por lo que yo vi, está casi todo hecho. Aparte del where, validaría siempre los datos que vienen del formulario, pero no sé si esto te lo exigen o no. En un trabajo para un cliente, desde luego sería de uso obligado.

Por último, un vector o array asociativo es aquel cuyos índices no son enteros, sino cadenas. Ejemplo:
$clientesAbiertos['Juan'];
$clientesAbiertos['Beatriz'];

Esta url explica bastante sobre los vectores asociativos:
http://php.net/manual/es/language.types.array.php

Ánimo que sino terminas esta vez, estoy seguro de que casi.

Saludos,
José Manuel
=====================
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por david davo3k@gmail.com (17 intervenciones) el 15/11/2012 18:09:21
Supuestamente ya e terminado.

el formulario me a quedado asi:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
	<title>Formulario</title>
	<meta http-equiv="content-type" content="text/html;charset=utf-8" />
	<meta name="generator" content="Geany 0.21" />
</head>
<body>
<!--Formulario-->
<form name="formulario" method="post" action="enviar.php">
<h1>Intriducir los datos:</h1>
Nombre: <input type="text" name="nombre" size="20"><br>
Edad: <input type="text" name="edad" size="20"><br>
Poblacion: <input type="text" name="poblacion" size="20"><br><br><br>
 
Reset<input name="reset" value="Borrar datos" type="reset">
Enviar datos<input name="submit" value="Enviar datos" type="submit" Onclick="validar_envia">
</form>
</body>
</html>





y el archivo php me a quedado así:

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
70
71
72
73
<html>
<head>
</head>
<body>
<?php
$nombre=$_POST['nombre'];
$edad=$_POST['edad'];
$poblacion=$_POST['poblacion'];
print "Variable nombre: " . $_POST["nombre"] . "<br>";
print "Variable edad: " . $_POST["edad"] . "<br>";
print "Variable poblacion: " . $_POST["poblacion"] . "<br><br><br><br><br><br>";
?>
 
 
<?php
//recogemos llos datos del formulario
$nombre=$_POST['nombre'];
$edad=$_POST['edad'];
$poblacion=$_POST['poblacion'];
 
//conectamos a la BBDD
$conexion=mysql_connect("localhost", "root", "1234") or die ("No se ha podido establecer conexion");
//Seleccionamos la bbdd
mysql_select_db("portal_web",$conexion) or die("No se ha podido establecer conexion");
 
//validamos el formulario
if ($nombre == "" or $edad == "" or $poblacion == "") {
echo("Ha habido un error durante el envío, por favor, verifique que ha rellenado todos los campos.");
}else{
 
//comprobamos si ya existe el usuario
$existe = mysql_query ("SELECT usuarios.*, poblaciones.* FROM usuarios
INNER JOIN poblaciones ON (usuarios.id=poblaciones.id_usuario)
WHERE usuarios.usuario='".$nombre. "' && usuarios.edad = '".$edad."' && poblaciones.poblacion = '".$poblacion."'");
if(mysql_num_rows($existe)==1){
    echo "Ese usuario ya existe";
 
}else{
    //Insertando en la base de datos  
	$sql="INSERT INTO 'usuarios' (nombre, edad) VALUES ('$nombre','$edad')";
	mysql_query($sql,$conexion);
 
	$ultimo_id = mysql_insert_id($conexion);;
	$sql2="INSERT INTO 'poblaciones' (poblacion,id_usuario) VALUES ('$poblacion','$ultimo_id')";
	mysql_query($sql2,$conexion) ;
	mysql_close($conexion);
 
 
echo "muestras ".$ultimo_id." del usuario";
}
}
 
 
 
//lo grabamos en un fichero
$fecha=date("d m y");
$archivo= "datos_usuario.txt";
$fichero= "
		Fecha: $fecha------
		Nombre: $nombre------
		Edad: $edad------
		Poblacion: $poblacion
		<br><br>";
 
$file=	fopen($archivo,"a");
		fputs($file, $fichero);
		fclose($file);
 
 
echo "<br><br><br><br><br><br>";
echo '<a href="formulario.html"><b>Volver a la encuesta</b></a>';
 
?>



la validacion de los datos la he hecho simple pero no hacia falta hacer más.

me da un error "Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\PHP\Ejercicios Repaso\ex array associativa\enviar.php on line 35
muestras 0 del usuario" estoy mirando y no veo el error.
bueno gracias por todo, este ejercicio lo e acabado entendiendo. Ahora me voi a poner ha hacer un buscaminas.
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 xve

Array asociativo. Formulario

Publicado por xve (5525 intervenciones) el 15/11/2012 22:06:49
David, revisa la consulta sql, ahi tienes el error.

mysql_query devuelve false si ha habido algún problema, por eso el Warning en el mysql_num_rows()
Puede ser que le falte el conector de la base de datos??
1
mysql_query("SELECT usuarios.*, pob....", $conexion);


Coméntanos, ok?
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

Array asociativo. Formulario

Publicado por José Manuel josema@orbisapientia.com (43 intervenciones) el 16/11/2012 08:41:53
Hola David:

Efectivamente, tal como señala xve, la consulta devuelve false, no el tipo de recurso que espera la función mysql_num_rows. En cualquier caso, te recomiendo un software como DBVisualizer o en tu caso, prueba con PhpMyAdmin. De esta forma podrás ejecutar la consulta allí y ver que está haciendo exactamente. Es una buena forma de controlar errores en consultas SQL.

Yo creo que, salvo el error que comentas, está todo bien, pero en cualquier caso, todo software que se desarrolla se debe someter a una batería de tests. Así que si quieres asegurarte, prueba todo lo que se te ocurra.

Enhorabuena David y suerte con el buscaminas!!

José Manuel
====================
http://www.orbisapientia.com
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

Array asociativo. Formulario

Publicado por pedrp19 (1 intervención) el 12/12/2013 22:26:04
Buenas tarde soy nuevo en php y necesito hacer un ejercicio la cual me pide lo siguiente:
Crear dos arreglos Ordenador y esos dos arreglos unirlo con un tercer arreglo.
La verdad que ni idea de como hacerlo y como me lo pidieron en formulario, lo que hice fue crear un formulario donde el usuario meta dato y se crea un arreglo la idea es que como tengo el codigo ya para que me cree uno, con ese puedo hacer que me llenen el otro, pero la GRAN PREGUNTA ES COMO HAGO PARA QUE EN UN SOLO BOTON ME MANDE LOS DATOS QUE ME INSTRODUJO EL USUARIO A UN FORMULARIO DONDE ME MUESTRE LO ARREGLO CREADO
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

Array asociativo. Formulario

Publicado por xve (5525 intervenciones) el 13/12/2013 11:23:04
Hola Pedrp19, lo suyo es que crees un nuevo hilo... ya que sera mas fácil que te contesten y no mezclamos los hilos.

Revisa sort() y array_fill()
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

Array asociativo. Formulario

Publicado por david davo3k@gmail.com (17 intervenciones) el 24/11/2012 16:00:08
todo comprobado y funcionando perfectamente. Gracias por todo
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