Hola,
joputa (vaya nick), ¿has probado a llamar a tu script con script.php?nombre= ? Es decir sin dar valor a nombre (o valor nada).
Y sobre lo de usar variables como booleanos. PHP espera que la expresion que esta donde se ponen las condiciones en los if devuelva un valor booleano. Si no es un booleano, el implicitamente hace un casting (conversion de tipos). Asi, si una variable no esta definida (isset($nombre) igual a false), para PHP esa variable devuelve NULL (hace mas cosas, luego lo cuento). Como NULL no es booleano, hace el casting. NULL se convierte a FALSE. Por lo que la condicion falla.
¿Os acordais que os dije que PHP hace algo mas que suponer NULL cuando encuentra una variable no definida? Pues lo que hace es generar una Notice (el nivel menos grave de los mensajes de error de PHP). Mucha gente tiene configurado PHP para que no muestre los Notice.
Cluster, ¿como dices que te lian los codigos que usan las variables como booleanas cuando no lo son? Te suena este codigo:
Código PHP:
while ($row=mysql_fetch_array($result))
{
...
}
¿verdad? Pues en teoria te deberia "liar", ya que "supone" que la expresion $row=mysql_fetch_array() devuelve un booleano, cuando solo es cierto cuando no hay mas registros que leer. La forma "completa" seria:
Código PHP:
while (FALSE!==($row=mysql_fetch_array($result)))
{
...
}
si no me equivoco. Esta forma me parece un poco mas "liosa".
Saludos.