Foros del Web » Programando para Internet » PHP »

Qué tengo mal en este código?

Estas en el tema de Qué tengo mal en este código? en el foro de PHP en Foros del Web. Resulta que no se qué tengo mal. Me funciona, pero si quiero controlar que cuando me metan el DNI, si existe el DNI no lo ...
  #1 (permalink)  
Antiguo 06/02/2012, 16:15
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Qué tengo mal en este código?

Resulta que no se qué tengo mal. Me funciona, pero si quiero controlar que cuando me metan el DNI, si existe el DNI no lo pueda introducir, pues para eso he metido un elseif, que verifica si existe un campo DNI igual al que mete el usuario, pero meto eso y no me hace ya nada, ni me mete los valores a la tabla ni nada, no se en qué fallo, me podeis ayudar?



Cita:

<p><strong>Alta de Árbitro </strong></p>
<form method="post">
<table border="0" width="200">
<tbody>
<tr>
<td>DNI</td>
<td><input name="dni" type="text" /></td>
</tr>
<tr>
<td>Nombre</td>
<td><input name="nombre" type="text" /></td>
</tr>
<tr>
<td>Apellido</td>
<td><input name="apellido" type="text" /></td>
</tr>
<tr>
<td>Tfno</td>
<td><input name="tfno" type="text" /></td>
</tr>
<tr>
<td></td>
<td><input type="submit" value="Insertar datos" /></td>
</tr>
</tbody>
</table>
</form>

<?php

include("conexion.php");
//no permitiré que se envíen campos vacíos en el formulario
if(isset($_POST['dni'])&&!empty($_POST['dni'])&&
isset($_POST['nombre'])&&!empty($_POST['nombre'])&&
isset($_POST['apellido'])&&!empty($_POST['apellido'])&&
isset($_POST['tfno'])&&!empty($_POST['tfno']))
{

//guardo en una variable la conexión al host, para luego usarla en la conexión a la bbdd
$conexion = mysql_connect($host,$user,$pw)or die("Problemas al conectar al host");
//uso la variable conexión para conectarme a la base de datos
mysql_select_db($bd,$conexion)or die("Problemas al conectar a la base de datos");
$registro = mysql_query("SELECT * FROM ARBITRO WHERE dni = '$_POST['dni']");
$numero=mysql_num_rows($registro);
//consulta para poder insertar los datos
elseif($numero==0){
mysql_query("INSERT INTO ARBITRO (DNI,NOMBRE,APELLIDO,TFNO)
VALUES ('$_POST[dni]','$_POST[nombre]','$_POST[apellido]','$_POST[tfno]')",$conexion);
echo "Datos insertados correctamente";
}
}else{
echo "Problemas al insertar los datos";
}
mysql_close($conexion);
?>
  #2 (permalink)  
Antiguo 06/02/2012, 17:28
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Qué tengo mal en este código?

Para empezar en $registro tienes problemas de comillas.
Lee ésto
http://www.forosdelweb.com/f18/como-...1/#post2414268
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #3 (permalink)  
Antiguo 06/02/2012, 17:37
 
Fecha de Ingreso: julio-2005
Mensajes: 310
Antigüedad: 18 años, 9 meses
Puntos: 36
Respuesta: Qué tengo mal en este código?

Hola

Para empezar el flujo de datos es incorrecto. Revisa bien esos if y elseif, porque donde pone:
elseif($numero == 0) el código de ese bloque no se ejecutará nunca, o no al menos como tú quieres. Por eso no te inserta los datos. Revisa bien lo que estás haciendo. Doy por hecho que entiendes como funcionan las estructuras de control.

Te doy una pista, tu código dice:

Código:
si los campos del formulario existe y no están vacíos entonces
    comprobar que el usuario existe en la base de datos;
sino si no existe el usuario en la bd entonces
    insertar_usuario_bd;
sino
    problemas_insertando_datos;
Y eso no es lo que quieres que haga.

Saludos.

Última edición por kiko's; 06/02/2012 a las 17:43
  #4 (permalink)  
Antiguo 06/02/2012, 18:23
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Qué tengo mal en este código?

Lo logré jeje!! usé los case y facilísimo! :)

Código:
<?php   
        
include("conexion.php");
//no permitiré que se envíen campos vacíos en el formulario
	if(isset($_POST['dni'])&&!empty($_POST['dni'])&&
	isset($_POST['nombre'])&&!empty($_POST['nombre'])&&
	isset($_POST['apellido'])&&!empty($_POST['apellido'])&&
	isset($_POST['tfno'])&&!empty($_POST['tfno']))
	{    
		
		//guardo en una variable la conexión al host, para luego usarla en la conexión a la bbdd	
		$conexion = mysql_connect($host,$user,$pw)or die("Problemas al conectar al host");
		//uso la variable conexión para conectarme a la base de datos
		mysql_select_db($bd,$conexion)or die("Problemas al conectar a la base de datos");
		$registro = mysql_query("SELECT * FROM ARBITRO WHERE dni = '$_POST[dni]'");
		echo $_POST['dni'];
		$numero = mysql_num_rows($registro);
		echo $numero;
		//consulta para poder insertar los datos
		switch($numero){
			case 0:
				mysql_query("INSERT INTO ARBITRO (DNI,NOMBRE,APELLIDO,TFNO)
				VALUES ('$_POST[dni]','$_POST[nombre]','$_POST[apellido]','$_POST[tfno]')",$conexion);
				echo "Datos insertados correctamente";	
				break;
			default:
				echo "Ya existe el DNI en el sistema";
				break;
		}
	}else{
		echo  "Problemas al insertar los datos";
	}   
mysql_close($conexion);
?>
  #5 (permalink)  
Antiguo 06/02/2012, 18:28
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Qué tengo mal en este código?

Sigues teniendo problemas de código al usar $_POST[ejemplo] en lugar de $_POST['ejemplo'].

Verás, al usar la primer variable, PHP detecta a ejemplo como una constante e intenta buscar su valor. Hasta que detecta que es una constante inexistente, toma a ejemplo como un string. Ésto está mal, debe ser string desde un principio.
Entonces, una solución para adaptar todo a tu código, es encapsular el array para evitar que las comillas interfieran con la Query:

Código PHP:
Ver original
  1. $ejemplo = mysql_query("SELECT * FROM ejemplo WHERE campo_ejemplo = '{$_POST['ejemplo']}'");

Saludos!
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies
  #6 (permalink)  
Antiguo 06/02/2012, 18:34
 
Fecha de Ingreso: febrero-2012
Ubicación: Madrid
Mensajes: 48
Antigüedad: 12 años, 2 meses
Puntos: 1
Respuesta: Qué tengo mal en este código?

seguro??

hace nada vi un videotutorial en youtube que lo explicaban y tal, y decía que si pones las comillas por fuera, no hacía falta poner las comillas dentro del valor del $_POST que va entre [ ].

$registro = mysql_query("SELECT * FROM ARBITRO WHERE dni = '$_POST[dni]'");

por eso pongo dni = '$_POST[dni]'"); englobado entre las ' y cerrando con " o eso creía yo claro. de hecho me lo hace bien, pero claro porque lo fuerza como dices....... ok me lo miraré a ver pero pensaba que así estaba bien
  #7 (permalink)  
Antiguo 06/02/2012, 18:44
Avatar de Sourcegeek
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: $mex['B.C.'];
Mensajes: 1.816
Antigüedad: 14 años, 11 meses
Puntos: 322
Respuesta: Qué tengo mal en este código?

Sí, estoy seguro, no es la manera adecuada. Para eso existe la encapsulación entre llaves

Y no tiene nada que ver el que pongas o no comillas fuera. Las comillas fuera de la variable son para que MySQL tome su valor como un string, pero el índice es cosa de PHP.

Saludos
__________________
Buscas desarrollador web? Sourcegeek. Diseño web, Maquetación y Programación
¡Escribe bien! Esto es un foro, no un Facebook para que escribas con los pies

Etiquetas: formulario, mysql, registro, sql, tabla, variables, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta

SíEste tema le ha gustado a 1 personas




La zona horaria es GMT -6. Ahora son las 23:41.