Dos preguntas de php formulario

Hola primero que todo soy nuevo aqui asi que hola a todos.Gracias a esta pagina aprendi todo lo que se de html php y mysql,me a surgido un problema,si alguien envia un formulario con algunos campos en blanco se envia igual ,como podria hacer para evitarlo? contando que me dijeron que no use javascript ya que podrian hacer una injeccion sql (intento modificar una base de datos mysql desde php) y tambien si me podrian decir como enviar un mensaje al enviar el formulario correctamente(si hay forma de evitar la injeccion de sql seria genial)

Desde ya muchas gracias y si estoy faltando a alguna regla pido mil disculpas.Hasta luego.
Hola!
Para que no se envíe el formulario, puedes hacerlo comprobando si el campo está vacío, y en caso de que lo esté, que salga un mensajito.
Algo así:

if (empty($POST['campo_de_formulario']))
{
echo "Debes rellenar todos los campos.";
}

No sé si es la mejor manera, pero con lo que sé, es lo que se me ocurre.
Suerte
Hola drusk ,eh intentado como me dijiste pero obtuve como resultado que siempre sale el mensaje debes rellenar todos los campos.Es decir si yo dejo el campo vacio da ese mensaje pero si yo completo todo tambien sale el mensaje(si lo dejo en blanco se sigue insertando los datos en la tabla de la database :S)
Si claro.El html

<body background="brush1.png">
<center><h1>Por favor coloca tus datos y pulsa registrarse</h1>
<form method="POST" action="insertardatosentabla.php">
  <input type="TEXT" name="Nombre" value="Escribe tu nombre aqui" size=30 maxlength=50><br />
	<input type="TEXT" name="Password" value="Password" size=30 maxlength=50><br />
  <input type="TEXT" name="Numero" value="Ingresa un numero" size=30 maxlength=50><br />
  <select name="Sexo" size=1>
 <option value="1">Masculino</option>
 <option value="2">Femenino</option><br/>
 
  <input type="SUBMIT" value="Registrarse" name="Enviar la información al servidor"><br />
</form></center>


Y el php


<?php
// leer datos de usuario y contraseña de la base de datos
include("config.php") ;

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

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

mysql_query ("INSERT INTO `Database_Prueba`.`Usuarios` (`Nombre`, `Password`, `Numero`, `Sexo`) VALUES ('$_POST[Nombre]', '$_POST[Password]', '$_POST[Numero]', '$_POST[Sexo]') ");
?>

Saludos y gracias.
Ok...

Primero que nada, todo lo que tenga que ver con la modificación de la apariencia del sitio (el fondo del sitio, color de la letra, tamaño de la letra, tamaño de cualquier componente, etc.) debe ir en hojas de estilo CSS (no es que deba ir en estas, sino que es una recomendación para una fácil modificación del sitio).

Segundo, las inyecciones SQL se hacen con o sin Javascript, pues se envían consultas al servidor y es el servidor quién termina ejecutando el código peligroso. Las inyecciones se evitan con el lenguaje del servidor (llámese PHP, ASP, Perl, Ruby, etc.) Cuando tengas tiempo, hay una versión de Linux llamada Backtrack que, entre muchas herramientas, incluye software que intenta vulnerar tu sistema (SQL Inyection - SQLi), lo que te permitirá fortalecer los puntos débiles.

Ahora sí, a resolver el problema:

<?php

if( isset( $_POST['Nombre'] ) && // Sólo si existe la variable "Nombre" y la variable "Password" se hará lo siguiente
    isset( $_POST['Password'] ) &&  // El índice "Sexo" siempre tendrá un valor (tú lo especificaste así)
    isset( $_POST['Numero'] ) ) {

  // leer datos de usuario y contraseña de la base de datos
  include("config.php") ;

  // Conexión con el servidor
  $link = mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error()); // Siempre es útil tener el enlace en una variable ($link)

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

  mysql_query ("INSERT INTO `Database_Prueba`.`Usuarios` (`Nombre`, `Password`, `Numero`, `Sexo`) VALUES ('$_POST[Nombre]', '$_POST[Password]', '$_POST[Numero]', '$_POST[Sexo]') ");
} else {
  echo "Todos los campos son necesarios";
}
?>

1 Cuando utilizas mysql_select_db no es necesario especificar el nombre de la base de datos al insertar o hacer cualquier tipo de consulta al servidor, por ende la inserción de datos aún funcionaría así: mysql_query( "INSERT INTO `Usuarios` (`Nombre`, `Password`, `Numero`, `Sexo`) VALUES ('$_POST', '$_POST', '$_POST', '$_POST')" );

Lo anterior sólo valida que los campos no estén vacíos y aún se pueden hacer inyecciones de código, así que cuidado. Una manera simple de prevenir las inyecciones es limpiar los datos pasados así (después de validar que no están vacíos):

$nombre = htmlspecialchars( $_POST['Nombre'] );
$password = htmlspecialchars( $_POST['Password'] ); // Yo no limpiaría la contraseña, en su lugar usaría una expresión regular
$numero = is_numeric( $_POST['Numero'] ) ? $_POST['Numero']: 1; // is_numeric( $variable ) valida que el contenido de la variable sea un número.
$sexo = is_numeric( $_POST['Sexo'] ) ? $_POST['Sexo']: 1;

A pesar de que Sexo siempre tendrá un valor (a todo esto, te falta la etiqueta </select> después del último <option></option> en el formulario), este puede ser otra cosa que no sea un número, pues hay formas de modificar el contenido de los formularios (incluso de los campos tipo hidden) a través de las herramientas que tiene el navegador (en Google Chrome de Linux, por ejemplo, podrías hacerlo presionando Control + Shift + i).

La última expresión (por si no lo sabes) es como decir "Si es un número (is_numeric() ?), entonces asigna el contenido de la variable a $numero, de lo contrario asigna un 1 a $numero (: 1;)". Sería lo mismo que esto (solo que en una sola línea):

$numero = 0;
if( is_numeric( $_POST['Numero'] ) )
  $numero = $_POST['Numero'];
else
  $numero = 1;

En cuanto a la última pregunta de tu primer post, ¿qué tipo de mensaje? ¿Un email? ¿Un simple mensaje de "Gracias por registrarte"? Si nos respondes eso te podemos ayudar más.

Saludos :D.
Muchisimas gracias, me a sido de mucha ayuda ,mmm habria forma de hacer las dos?osea que mande un mail con los datos ya confirmados y salga el mensaje? (algo como diciendo gracias por registrarse y los datos en el mail si es posible :$)en el navegador con un "registro exitoso" ya quedaria,muchisimas gracias
Claro que se puede. En el código PHP, después de insertar los datos y sólo si se insertaron podrías poner ambas cosas:

<?php

if( isset( $_POST['Nombre'] ) && // Sólo si existe la variable "Nombre" y la variable "Password" se hará lo siguiente
    isset( $_POST['Password'] ) &&  // El índice "Sexo" siempre tendrá un valor (tú lo especificaste así)
    isset( $_POST['Numero'] ) ) {

  // leer datos de usuario y contraseña de la base de datos
  include("config.php") ;

  // Conexión con el servidor
  $link = mysql_connect($server, $db_user, $db_pass) or die ("error1".mysql_error()); // Siempre es útil tener el enlace en una variable ($link)

  // Selección de Base de Datos
  mysql_select_db($database) or die ("error2".mysql_error());
  $nombre = htmlspecialchars( $_POST['Nombre'] );
  $password = htmlspecialchars( $_POST['Password'] ); // Yo no limpiaría la contraseña, en su lugar usaría una expresión regular
  $numero = is_numeric( $_POST['Numero'] ) ? $_POST['Numero']: 1; // is_numeric( $variable ) valida que el contenido de la variable sea un número.
  $sexo = is_numeric( $_POST['Sexo'] ) ? $_POST['Sexo']: 1;
  // FALTA UN EMAIL PARA EL RECEPTOR DEL MISMO :P
  $email = $_POST['Email'];
  $result = mysql_query ("INSERT INTO `Usuarios` (`Nombre`, `Password`, `Numero`, `Sexo`) VALUES ('$nombre', '$password', '$numero', '$sexo')" );
  $aff = mysql_affected_rows( $link ); // Devuelve el número de filas afectadas (debería ser una en este caso).
  
  if( $aff > 0 ) {  // Sólo si se insertó la fila
    $eol = PHP_EOL;
    $msg = "Aquí están tus datos:$eol$eol";
    $msg .= "Nombre: $nombre$eol";
    $msg .= "Password: $password$eol";
    $msg .= "Número: $numero$eol";
    $subject = 'Registro en NOMBRE_TU_SITIO'; // Asunto

    if( mail( $email, $subject, $msg ) ) {
      echo "<p>Gracias por registrarte. Tus datos han sido enviados al email especificado.</p>";
    } else {
      echo "<p>Ocurrió un error al enviarte los datos a tu correo electrónico.</p>";
    }
  }
} else {
  echo "Todos los campos son necesarios";
}

?>

Eso es todo, aunque el envío del correo no está muy elaborado.

Saludos.
Muchisismas gracias eres un maestro!De verdad ese codigo me servira de base para aprender mas te agradezco mucho