Metodos de control para formularios

¿Cuales serian los metodos de control mas simples para los formularios?

Para evitar que se pueda dar a ENVIAR a un formulario con las cajas vacias
Para evitar que se envien numeros en lugar de letras, o letras en lugar de numeros.

Los mas basicos, para ir aprendiendo.

Gracias!
ok:

//para que no envien vacios

$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];

if($dato1&$dato2&$dato3){echo"datos llenos, gracias";}else{echo"Datos vacios, rellenelos...............";}

//para que solo queden las letras y se borren los numeros
$datos=ereg_replace("[^A-Za-z]", "", $datos);

//para que solo queden los numeros y se borren las letras
$datos=ereg_replace("[^0-9]", "", $datos);
Bueno, hay muchos métodos, empty(), isset()... luego puedes usar estos también:

# Guardamos los datos enviados en variables
$nombre = $_POST["nombre"];
$edad   = $_POST["edad"];

# Validación de campos
if(!$nombre || !$edad){

// Mostramos un mensaje de error
echo "Tienes que rellenar todos los campos";

} else {

// Mostramos un mensaje diciendo que se completaron los campos
echo "Has rellenado todos los campos, muy bien";

}

Luego, para saber si lo que envió es o no un número puedes usar is_numeric():
# Variables de lo que envió el usuario
# En este caso sólo vamos a permitir que en el nombre no sólo contenga números y que la edad sólo pueda contener número
$nombre = $_POST["nombre"];
$edad   = $_POST["edad"];

# Validación del nombre
if(!is_numeric($nombre)){
echo "Ok, nombre correcto";
} else {
echo "El nombre no puede estar sólo compuesto por números";
}

# Validación de la edad
if(is_numeric($edad)){
echo "Ok, edad correcta";
} else {
echo "La edad sólo puede contener números";
}
Gracias! Voy a probarlos a ver si soy capaz de insertarlos en mi codigo sin que den errores.

¿Y podria hacerse tambien un control para saber si lo que envió es o no una letra mayuscula?
spitfire2 escribió:ok:

//para que no envien vacios

$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];

if($dato1&$dato2&$dato3){echo"datos llenos, gracias";}else{echo"Datos vacios, rellenelos...............";}

//para que solo queden las letras y se borren los numeros
$datos=ereg_replace("[^A-Za-z]", "", $datos);

//para que solo queden los numeros y se borren las letras
$datos=ereg_replace("[^0-9]", "", $datos);

He probado esto

<?php
			
$host="xxxxxxx";
$database="xxxxxx";
$db_user="xxxxxxx";
$db_pass="xxxxxx";

//para que no envien vacios

$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];

if($dato1&$dato2&$dato3){echo"datos llenos, gracias";}else{echo"Datos vacios, rellenelos...............";}

// Conexión con el servidor
mysql_connect($host, $db_user, $db_pass) or die ("errorgrave".mysql_error());

// Selección de Base de Datos
mysql_select_db($database) or die ("errormuygrave".mysql_error());


?>

Pero no me ha servido. Le he dado a enviar y he podido enviar un formulario vacio
¿Es que tengo que colocar el codigo de control en otro lugar?

Tambien lo he probado aqui, pero tampoco me sirve. No hace nada, me sigue dejando enviar el formulario vacio

<?php


//para que no envien vacios

$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];

if($dato1&$dato2&$dato3){echo"datos llenos, gracias";}else{echo"Datos vacios, rellenelos...............";}

// Añadir un registro
mysql_query ("INSERT INTO `nombredatabase`.`table` (`dato1`,`dato2`,`dato3`) VALUES ('$_POST[dato1]','$_POST[dato2]','$_POST[dato3]')")

?>
en realidad seria asi:

//para que no envien vacios
if($_POST['publicar']){
//datos del form
$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];

if($dato1&$dato2&$dato3){
echo"datos llenos, gracias";
// Añadir un registro
mysql_query ("INSERT INTO `nombredatabase`.`table` (`dato1`,`dato2`,`dato3`) VALUES ('$dato1','$dato2','$dato3')")
echo"Los datos fueron agregados";
//aqui limpias las variables
$dato1="";
$dato2="";
$dato3="";
}else{echo"Datos vacios, rellenelos...............";}
}//fin if post publicar

y para que en caso de que enviaron solo unos o dos de los tres campos vacios y no sepierda lo que si relleno, tienes que mostrar la variable en el value del input y si se envian los limpis para que no se vean en el input otra vez

<form action="<?php echo $PHP_SELF;?>" method="post">
<input name="dato1" value="<?php echo"".$dato1.""; ?>">
<input name="dato2" value="<?php echo"".$dato2.""; ?>">
<input name="dato3" value="<?php echo"".$dato3.""; ?>">
<input type="submit" name="publicar" value="Publicar">
</form>

me faltaria agregar para comprobar que los datos son numeros o letras o lo que quieras que sean
spitfire2 escribió:en realidad seria asi:

//para que no envien vacios
if($_POST['publicar']){
//datos del form
$dato1=$_POST['dato1'];
$dato2=$_POST['dato2'];
$dato3=$_POST['dato3'];

if($dato1&$dato2&$dato3){
echo"datos llenos, gracias";
// Añadir un registro
mysql_query ("INSERT INTO `nombredatabase`.`table` (`dato1`,`dato2`,`dato3`) VALUES ('$dato1','$dato2','$dato3')")
echo"Los datos fueron agregados";
//aqui limpias las variables
$dato1="";
$dato2="";
$dato3="";
}else{echo"Datos vacios, rellenelos...............";}
}//fin if post publicar

y para que en caso de que enviaron solo unos o dos de los tres campos vacios y no sepierda lo que si relleno, tienes que mostrar la variable en el value del input y si se envian los limpis para que no se vean en el input otra vez

<form action="<?php echo $PHP_SELF;?>" method="post">
<input name="dato1" value="<?php echo"".$dato1.""; ?>">
<input name="dato2" value="<?php echo"".$dato2.""; ?>">
<input name="dato3" value="<?php echo"".$dato3.""; ?>">
<input type="submit" name="publicar" value="Publicar">
</form>

me faltaria agregar para comprobar que los datos son numeros o letras o lo que quieras que sean

Hola poniendo tal cual lo que me dices me da este error

Parse error: syntax error, unexpected T_ECHO in /home/bicheand/public_html/up_plataformas.php on line 38

Siendo la linea 38 esta --> echo"Los datos fueron agregados";


Y si borro esa linea y lo vuelvo a intentar me dice

Parse error: syntax error, unexpected T_VARIABLE in /home/bicheand/public_html/up_plataformas.php on line 40

Que seria esta --> $dato1="";
Para poner toda una cadena en mayúsculas puedes usar la función strtoupper():
<?php

// Cadena a poner toda en mayúsculas
$frase = "hola, me llamo doodleo";

// La ponemos en mayúsculas con strtotupper
$frase = strtoupper($frase);

// Mostramos la frase, en este caso se imprimiría HOLA, ME LLAMO DOODLEO
echo $frase;

?>

De igual modo, en tu caso tu código sería algo así:
// Variables enviadas por el usuario. Con strip_tags() eliminamos todo rastro de etiquetas HTML para evitar que ataquen tu web.
$player = strip_tags(strtoupper($_POST["player"]));
$score = strip_tags($_POST["score"]);
$fase = strip_tags($_POST["fase"]);
$fecha = date("Y-m-d");

// Si faltó algún campo
if(!$player OR !$score OR !$fase OR !$fecha){

echo "Puntuación no almacenada. Faltó indicar nombre, puntuación o fase.";

} else {

// Ingresamos los datos a la base de datos (Teniendo en cuenta que ya abriste una conexión anteriormente)
mysql_query("INSERT INTO `basedatos`.`tabla` (`player`,`score`,`fase`,`fecha`) VALUES ('$player','$score','$fase','$fecha') ");
}
ZID escribió:Hola poniendo tal cual lo que me dices me da este error

Parse error: syntax error, unexpected T_ECHO in /home/bicheand/public_html/up_plataformas.php on line 38

Siendo la linea 38 esta --> echo"Los datos fueron agregados";


Y si borro esa linea y lo vuelvo a intentar me dice

Parse error: syntax error, unexpected T_VARIABLE in /home/bicheand/public_html/up_plataformas.php on line 40

Que seria esta --> $dato1="";

falto un ; al final del insert:

mysql_query ("INSERT INTO `nombredatabase`.`table` (`dato1`,`dato2`,`dato3`) VALUES ('$dato1','$dato2','$dato3')")

seria asi:


mysql_query ("INSERT INTO `nombredatabase`.`table` (`dato1`,`dato2`,`dato3`) VALUES ('$dato1','$dato2','$dato3')");