complicaciones con el 'isset' y el 'empty'

Hola a tod@s, a vueltas por aqui.
A ver, estoy intentando hacer un pequeño 'form' en el que el visitante introduzca dos palabras, con el encabezado
"Pon dos palabras que rimen". Y quiero que cuando introduzca la 1ª palabra y envie, aparezca en el encabezado la frase "Bien, ahora otra que rime con"$la_1ª_palabra_introducida.
Y si introduce las dos palabras y envia usar algo que compruebe que riman.
Pero si introduce la 2ª palabra en primer lugar, y envia, pues que aparezca en el encabezado la frase "Te falta poner la 1ª palabra".
Tengo hecho esto pero no va bien, ¿que me falta? ¿donde me equivoco? A ver si me podeis ayudar.
Gracias
Aqui os dejo el code
<?php

if (isset ($_POST ['primera']['segunda'] ) && !empty ($_POST ['primera']['segunda'] ) )
{
$primera_p= $_POST ['primera'];
echo "Bien, ahora otra que rime con ".$primera_p;
}
else
{
if (isset ($_POST ['segunda'] ) && !empty ($_POST ['segunda'] ) )
{
$segunda_p= $_POST ['segunda'];
echo "la 2ª es bonita";
//algoritmo de comparacion
}
else {
echo "pon dos palabras que rimen";
}
}

<form action="interactuando2.php" method="post">
1ª palabra: <input type="text" name="primera" id="<?$nombre?>" size="25"><br/>
2ª palabra : <input type="text" name="segunda" id="<?$edad?>" size="10"><br/>
<input name="submit" type="submit" value="Enviar">
</form>
Lo mejor de caerse al tropezar, es volverse a levantar.
Y porque no pones un if dentro de otro if sin el empty:

if ($_POST ['primera'] == "")
{
//AQUI EN LA PRIMERA LLEVAS ALGO
if ($_POST ['segunda'] == ""){
//AQUI EN LA SEGUNDA LLEVAS ALGO
}
else
{
//NO LELVAS NADA EN LA 2º PERO ALGO EN LA 1º
}
}
else
{
//NO LLEVAS NADA NI EN LA 1º NI EN LA 2º
}


Con eso que te he puesto y añadiendo lo que quieras hacer en cada sitio seguro que no te falla, un saludo.
NO ME SALE:
<?
$primera_p= $_POST ["primera"];
$segunda_p= $_POST ["segunda"];
if ($_POST ["primera"] == "")
{
echo "intoduce la 1ª";

if ($_POST ["segunda"] == ""){

echo "introduce la 2ª que rime con ".$primera_p;

}
else
{
echo "te falta la 2ª";
}
}
else
{
echo "introduce dos palabras que rimen";
}

?>
Lo mejor de caerse al tropezar, es volverse a levantar.
Intentalo asi:

<?
$primera_p= $_POST['primera'];
$segunda_p= $_POST['segunda'];
if ($primera_p == "")
{
echo "intoduce la 1ª";

if ($segunda_p == ""){

echo "introduce la 2ª que rime con ".$primera_p;

}
else
{
echo "te falta la 2ª";
}
}
else
{
echo "introduce dos palabras que rimen";
}

?>
Me dando error:
Notice: Undefined index: primera in C:\wamp\www\PHP\intro4.php on line 9

Notice: Undefined index: segunda in C:\wamp\www\PHP\intro4.php on line 10
Lo mejor de caerse al tropezar, es volverse a levantar.
Pues el codigo que yo te he dado no contiene errores; si te parece, copia TODO el codigo PHP de intro4.php aqui y te digo cual es error.

Si quieres, lo colgamos en mi pagina y lo comprobamos, porque como lo haces todo en local....

Saludos.
La he subido a mi web y tienes razon NO se comporta igual que en local ¿porque?
Pero de todas formas no sale el aviso cuando falta la 2ª palabra o la 1º
Lo mejor de caerse al tropezar, es volverse a levantar.
Porque para que funcione en local necesitas hacer un monton de cosas, montar una especie de "servidor" en tu PC para que funcione PHP, etc.

Si algo no te funciona, pega todo el codigo, y te lo edito para que funcione como tu quieres (con avisos de que faltan palabras).

Un saludo.
No si ya tengo instalao el WampServer. No se si será por las distintas versiones de php. Yo tengo el 5.2 lo mismo los host tienen el 4 y ahí está la diferencia ¿no?
Ya casi lo tengo mira:
<?php
if (isset ($_POST ['primera']['segunda'] ) && !empty ($_POST ['primera'])&&($_POST ['segunda'] ) )
{
echo "PERFECTO";//Aqui iría el algoritmo
}
elseif (isset ($_POST ['primera'] ) && !empty ($_POST ['primera'] ) )
{
$primera_p= $_POST ['primera'];
echo "Vuelve e introduce la segunda que rime con ".$primera_p;
}
elseif (isset ($_POST ['segunda'] ) && !empty ($_POST ['segunda'] ) )
{
$segunda_p= $_POST ['segunda'];
echo "Vuelve, te falta la 1ª";
}
else {
echo "Pon 2 palabras que rimen";
}


?><br>
<form action="tema04_Ej1.php" method="post">
1ª palabra: <input type="text" name="primera" size="25"><br/>
2ª palabra : <input type="text" name="segunda" size="25"><br/>
<input name="submit" type="submit" value="Enviar">
<input type=button value=Volver onclick="history.go(-1)"></center>

<script language="JavaScript" type="text/javascript"/>
</form>
Lo mejor de caerse al tropezar, es volverse a levantar.
utiliza mejor negacion al isset algo asi:

if(!isset($_POST['primera']) && !isset($_POST['segunda']))
{
}

asi, pase de rapido espero que este bien!
Es facil programar "Solo interesate en aprender"
no el lo intentaba diferente revisa bien el codigo xD
Es facil programar "Solo interesate en aprender"
Te deja el input vacio, xk lo tienes k poner asi:

<form action="tema04_Ej1.php" method="post">
1ª palabra: <input type="text" name="primera" size="25" value="<?php echo $primera_p; ?>" ><br/>
2ª palabra : <input type="text" name="segunda" size="25" value="<?php echo $segunda_p; ?>" ><br/>
<input name="submit" type="submit" value="Enviar">

El value sirve para decir que contenido tiene esa caja de texto; x lo k si alguien ya a rellenado alguna, te la colocar, y sino pues estara vacia.

Un saludo.
Si pongo: value="<?php echo $segunda_p; ?>", eso es lo que aparece en el input
Lo mejor de caerse al tropezar, es volverse a levantar.
Ok, pues ponlo asi:

<?php
echo "<input type='text' name='primera' size='25' value='$primera_p' ><br/>";
?>

Saludos.
No es ese el efecto que digo. Ese efecto lo realiza solo al volver.
Yo lo que digo es que si se ha rellenado el primer input y se envia, cuando aparece el 2º mensaje diciendo "ahora rellena el 2º input" que aparezca el primer input relleno.
No se si me explico.
Lo mejor de caerse al tropezar, es volverse a levantar.
Si que te entiendo lo que quieres decir. Tu me planteas el formulario y yo relleno la primera palabra, le doy a enviar y me dice "Falta la 2" pero la primera ya esta rellenada y no tienes que volver a hacerlo.

Si lo haces como te he comentado, funciona asi; es como decir en PHP: ¿Como te llamas? y cuando le das a enviar le dices....tu nombre es "perico" pues esto es lo mismo (si te he entendido claro).
Ojala, eso es lo que yo quiero, pero no sale. Mira aqui te dejo el codigo, copialo y comprueba que no se queda relleno. A ver porque.
Gracias victor5atodogas
<?php

if (isset ($_POST ["primera"]["segunda"] ) && !empty ($_POST ["primera"])&&($_POST ["segunda"] ) )
{
$primera_p= $_POST ["primera"];
$segunda_p= $_POST ["segunda"];
echo "PERFECTO ".$primera_p." rima con ".$segunda_p;//Aqui iría el algoritmo
}
elseif (isset ($_POST ["primera"] ) && !empty ($_POST ["primera"] ) )
{
$primera_p= $_POST ["primera"];
echo "Vuelve e introduce la 2ª que rime con ".$primera_p;
}
elseif (isset ($_POST ["segunda"] ) && !empty ($_POST ["segunda"] ) )
{
$segunda_p= $_POST ["segunda"];
echo "Vuelve, te falta la 1ª y que rime con ".$segunda_p;
}
else {
echo "Pon 2 palabras que rimen";
}

?>
<br/>
<form action="tema04_Ej1.php" method="post">
1ª palabra: <input type="text" name="primera" value="<? $primera_p ?>" size="25"><br/>
2ª palabra : <input type="text" name="segunda" value="<? $segunda_p ?>" size="25"><br/>
<input name="submit" type="submit" value="Enviar">
<input type=button value=Volver onclick="history.go(-1)"></center>

<script language="JavaScript" type="text/javascript"/>
</form>
Lo mejor de caerse al tropezar, es volverse a levantar.
Aqui lo tienes, funciona perfectamente:

<?php
var_dump($_POST);
if (isset ($_POST ["primera"]["segunda"] ) && !empty ($_POST ["primera"])&&($_POST ["segunda"] ) )
{
$primera_p = $_POST['primera'];
$segunda_p = $_POST ['segunda'];
echo "PERFECTO ".$primera_p." rima con ".$segunda_p;//Aqui iría el algoritmo
}
elseif (isset ($_POST ["primera"] ) && !empty ($_POST ["primera"] ) )
{
$primera_p = $_POST['primera'];
echo "Vuelve e introduce la 2ª que rime con ".$primera_p;
}
elseif (isset ($_POST ["segunda"] ) && !empty ($_POST ["segunda"] ) )
{
$segunda_p = $_POST['segunda'];
echo "Vuelve, te falta la 1ª y que rime con ".$segunda_p;
}
else {
echo "Pon 2 palabras que rimen";
}
?>
<br/>
<form action="pasar.php" method="post">
1ª palabra: <input type="text" name="primera" value="<? echo $primera_p; ?>" size="25"><br/>
2ª palabra : <input type="text" name="segunda" value="<? echo $segunda_p; ?>" size="25"><br/>
<input name="submit" type="submit" value="Enviar">
</form>


Lo puedes probar en: http://www.eluniversodelperro.com/prueba2/pasar.php

Un saludo y cualquier cosa pregunta que asi acaba,os antes!jejeje
var_dump($_POST); esto imprime el array y en php5 no se queda relleno el input.
Lo mejor de caerse al tropezar, es volverse a levantar.
Lo del var_dump sirve para saber TODO lo que pasas por POST, GET o lo que sea....y lo otro no funcionaba xk poniamos:
<?php $primera_p; ?>

Sin ningun echo, ahi estaba la cosa, si lo pruebas en la pagina que te lo he puesto funciona, que en PHP5 no funcione....eso ya son cosas bastante raras....si quieres te digo que version de PHP tengo yo en mi servidor; no obstante, no creo que ese sea el problema.
Bueno al final lo he hecho asi, si quereis rebisarlo y decirme si se puede hacer de otra menera mas facil os lo agradeceré.
<?php

if (isset ($_POST ["primera"]["segunda"] ) && !empty ($_POST ["primera"])&&($_POST ["segunda"] ) )
{
$primera_p= $_POST ["primera"];
$segunda_p= $_POST ["segunda"];
if (substr ($primera_p, -3)== substr ($segunda_p, -3))
{
echo "<h2>!!PERFECTO¡¡ ".$primera_p." rima con ".$segunda_p."</h2>";
}
else {
echo "<h3>!Oh no riman¡</h3>";
}
}
elseif (isset ($_POST ["primera"] ) && !empty ($_POST ["primera"] ) )
{
$primera_p= $_POST ["primera"];
echo "<b>Ahora introduce la 2ª y que rime con ".$primera_p."</b>";
}
elseif (isset ($_POST ["segunda"] ) && !empty ($_POST ["segunda"] ) )
{
$segunda_p= $_POST ["segunda"];
echo "<b>Sólo te falta la 1ª y que rime con ".$segunda_p."</b>";
}
else {
echo "<b>Pon 2 palabras que rimen</b>";
}

?>

<br/>
<form action="tema04_Ej1.php" method="post">
<p>1ª palabra: <input type="text" name="primera" value="<? if (isset($_POST ['primera'])){echo $_POST ['primera'];} ?>" size="25"><br/></p>
<p>2ª palabra : <input type="text" name="segunda" value="<? if (isset($_POST ['segunda'])){echo $_POST ['segunda'];} ?>" size="25"><br/></p>
<input name="submit" type="submit" value="Enviar">

</form><br/>
Lo mejor de caerse al tropezar, es volverse a levantar.
Pues yo ya te demostre en mi pagina que funcionaba....y te coloque lo que fallab...si lo tienes igual que yo a mi me funciona y a ti no...NO TENGO NI IDEA de que puede ser.
Perdon, me he confundido, pensaba que habias resnpodido algo anterior....luego revisare si se puede hacer mas corto.
Podrias hacerlo con switch si quieres escribir menos code pero asi esta bien.
Es facil programar "Solo interesate en aprender"