Foros del Web » Programando para Internet » PHP »

Algun experto que me de una mano en php

Estas en el tema de Algun experto que me de una mano en php en el foro de PHP en Foros del Web. Tengo el primer formulario: llamado index.html Código HTML: <html> <body> <title> Ahorcado </title> <form action= "enviar.php" method= "Post" > Ingrese palabra a adivinar : <input ...
  #1 (permalink)  
Antiguo 03/10/2012, 20:21
 
Fecha de Ingreso: octubre-2012
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 0
Pregunta Ayuda urgente en php

Tengo el primer formulario: llamado index.html

Código HTML:
<html>
<body>

<title> Ahorcado </title>
<form action="enviar.php" method="Post">
Ingrese palabra a adivinar :<input type="text" name="jugador1" />
<input type="submit" value="enviar formulario" />
</form>

</body>
</html> 
Tengo el segundo formulario: llamado enviar.php



Código PHP:
<?php

$jugador1
$_POST['jugador1'];

$jugador2$_POST['jugador2'];     

?>



<?

echo "Jugador 2 intente adivinar";

?> 

<br><br>



       <form action="enviar.php" method="Post">
        Ingrese Una Letra :<input type="text" name="jugador2" size="1" />
        <input type="submit" value="enviar formulario" />
        </form>

        <br><br>

<?php 


if (isset($_POST['jugador2'])){

    for (
$s=0$s<=count($jugador1); $s++) {

     if (
$jugador1[$s]==$jugador2[0]){echo "la letra.$jugador2.coincide";} else {echo "la letra.$jugador2.no coincide";}


         }

       }
?>

Mi priblema es: yo ingreso una primer palabra: por ejemplo "pepe" y despues tengo que ingresar una letra por ejemplo: "a" si la letra coincide con alguna letra de la palabra pepe, tiene que imprimir esa letra, y si no coincide tiene que poner "la letra no coincide o algo asi", seria como un ahorcado mas o menos ...

cuando pongo una letra igual me pone que no coincide y si pongo otra letra diferente me sigue poniendo lo mismo, nose si esta mal el bucle o la comparacion de la pregunta, desde a gracias de antemano

Última edición por netstat89; 03/10/2012 a las 20:45 Razón: Cambio de titulo
  #2 (permalink)  
Antiguo 03/10/2012, 21:01
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Algun experto que me de una mano en php

demasiado sencillo...

Código PHP:
Ver original
  1. <?php
  2.  
  3. $encontrada = false;
  4. $html = '';
  5.  
  6. if (isset($_POST['jugador'])) {
  7.      if (!isset($_SESSION['palabra'])) {
  8.           $_SESSION['palabra'] = $_POST['jugador'];
  9.      }else {
  10.           $encontrada = strpos($_SESSION['palabra'],$_POST['jugador');
  11.  
  12.           if ($encontrada !== false) {
  13.                if (!isset($_SESSION['letras']))  {
  14.                     $_SESSION['letras'] = array();
  15.                }
  16.  
  17.                $_SESSION['letras][$encontrada] = $_POST['jugador'];
  18.  
  19.               $html = '<p>Palabra encontrada</p>';
  20.               $html .= '<p>'.implode(',',$_SESSION['letras'].'</p>';
  21.          }
  22.     }
  23. }
  24.  
  25. if (!isset($_SESSION['palabra'])) {
  26.     $html .= '<p>Por favor, indica la palabra a adivinar</p>';
  27.     $html .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'"><input type="password" name="jugador" /><input type="submit" value="Enviar" /></form>';
  28. }else {
  29.     $html .= '<p>Indica una letra a buscar</p>';
  30.     $html .= '<form method="post" action="'.$_SERVER['PHP_SELF'].'"><input type="text" name="jugador" /><input type="submit" value="Enviar" /></form>';
  31. }
  32.  
  33.  
  34. echo $form;

Se puede reducir el código, pero de primeras podría ser algo así, no eh probado el código, pero debería funcionar...
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 03/10/2012 a las 21:08
  #3 (permalink)  
Antiguo 03/10/2012, 21:12
 
Fecha de Ingreso: octubre-2012
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Algun experto que me de una mano en php

Me pone esto, si me podes explicar lo que hace cada variable mejor .


Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\site\index2.php:1) in C:\site\index2.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\site\index2.php:1) in C:\site\index2.php on line 2

Warning: implode() [function.implode]: Invalid arguments passed in C:\site\index2.php on line 35
  #4 (permalink)  
Antiguo 03/10/2012, 21:17
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Algun experto que me de una mano en php

Código PHP:
Ver original
  1. <?php
  2. $jugador1= $_POST['jugador1'];
  3. $palabra='';
  4. $resultado =  '';
  5. if (isset($_POST['palabra'])){
  6.     $palabra= $_POST['palabra'];
  7. }else{
  8.     if (isset($_POST['jugador1'])){
  9.         $palabra=$_POST['jugador1'];
  10.     }
  11. }
  12.  
  13. if (isset($_POST['jugador2'])){
  14.     $jugador2= $_POST['jugador2'];
  15.    
  16.     for($i=0; $i<strlen($jugador1); $i++){
  17.         if($jugador1[$i] == $jugador2){
  18.            
  19.            
  20.             $resultado =  'La letra '.$jugador2.' coincide';
  21.             $jugador1[$i] = " ";
  22.             break;
  23.         }else{
  24.             $resultado =  'La letra '.$jugador2.' NO coincide';
  25.         }
  26.     }
  27.     $jugador1 = str_replace(" ","",$jugador1);
  28.     if($jugador1 == ""){$resultado = '<h1>GANASTE!!!</h1>La palabra secreta era: '.$palabra;}
  29.    
  30. }
  31. echo "Jugador 2 intente adivinar";
  32. ?>
  33.        <form action="enviar.php" method="Post">
  34.        <input name="palabra" type="hidden" value="<?php echo $palabra ?>" />
  35.        <input name="jugador1" type="hidden" value="<?php echo $jugador1 ?>" />
  36.         Ingrese Una Letra :<input type="text" name="jugador2" size="1" />
  37.         <input type="submit" value="enviar formulario" />
  38.         </form>
  39.         <br><br>
  40. <?php echo $resultado ?>

PERDON: yo se que no es bueno dar los codigos resueltos, pero no pude resistirme a la tentación.
__________________
la la la
  #5 (permalink)  
Antiguo 03/10/2012, 21:47
 
Fecha de Ingreso: octubre-2012
Mensajes: 8
Antigüedad: 11 años, 6 meses
Puntos: 0
Respuesta: Algun experto que me de una mano en php

Cita:
Iniciado por truman_truman Ver Mensaje
Código PHP:
Ver original
  1. <?php
  2. $jugador1= $_POST['jugador1'];
  3. $palabra='';
  4. $resultado =  '';
  5. if (isset($_POST['palabra'])){
  6.     $palabra= $_POST['palabra'];
  7. }else{
  8.     if (isset($_POST['jugador1'])){
  9.         $palabra=$_POST['jugador1'];
  10.     }
  11. }
  12.  
  13. if (isset($_POST['jugador2'])){
  14.     $jugador2= $_POST['jugador2'];
  15.    
  16.     for($i=0; $i<strlen($jugador1); $i++){
  17.         if($jugador1[$i] == $jugador2){
  18.            
  19.            
  20.             $resultado =  'La letra '.$jugador2.' coincide';
  21.             $jugador1[$i] = " ";
  22.             break;
  23.         }else{
  24.             $resultado =  'La letra '.$jugador2.' NO coincide';
  25.         }
  26.     }
  27.     $jugador1 = str_replace(" ","",$jugador1);
  28.     if($jugador1 == ""){$resultado = '<h1>GANASTE!!!</h1>La palabra secreta era: '.$palabra;}
  29.    
  30. }
  31. echo "Jugador 2 intente adivinar";
  32. ?>
  33.        <form action="enviar.php" method="Post">
  34.        <input name="palabra" type="hidden" value="<?php echo $palabra ?>" />
  35.        <input name="jugador1" type="hidden" value="<?php echo $jugador1 ?>" />
  36.         Ingrese Una Letra :<input type="text" name="jugador2" size="1" />
  37.         <input type="submit" value="enviar formulario" />
  38.         </form>
  39.         <br><br>
  40. <?php echo $resultado ?>

PERDON: yo se que no es bueno dar los codigos resueltos, pero no pude resistirme a la tentación.
Muchas gracias, esta muy bueno, lo unico que me gustaria que me expliques con // algunas partes del codigo para darme cuenta, por que esto era una trabajo para la facu, gracias!!!
  #6 (permalink)  
Antiguo 03/10/2012, 22:00
Avatar de truman_truman  
Fecha de Ingreso: febrero-2010
Ubicación: /home/user
Mensajes: 1.341
Antigüedad: 14 años, 2 meses
Puntos: 177
Respuesta: Algun experto que me de una mano en php

Código PHP:
Ver original
  1. <?php
  2. //se recibe post jugador1
  3. $jugador1= $_POST['jugador1'];
  4. //inicializamos estas dos variables
  5. $palabra='';
  6. $resultado =  '';
  7. //capturamos la palabra completa, para guardarla en el campo hidden llamado palabra
  8. //pero como cuando venimos del primer formulario no existe el hidden "palabra" hacemos el else
  9. //que captura jugador1, y guardamos en la variable $palabra
  10. if (isset($_POST['palabra'])){
  11.     $palabra= $_POST['palabra'];
  12. }else{
  13.     if (isset($_POST['jugador1'])){
  14.         $palabra=$_POST['jugador1'];
  15.     }
  16. }
  17. //si recibimos $_POST['jugador2'] significa que hemos enviado el formulario 2
  18. //entonces empieza la magia de php
  19. if (isset($_POST['jugador2'])){
  20.     $jugador2= $_POST['jugador2']; //guardamos en esta variable la letra
  21.     //hacemos el ciclo for, contando la cantidad de caracteres que posee la palabra, que está en la variable $jugador1
  22.     for($i=0; $i<strlen($jugador1); $i++){
  23.         //se recorren las letras de la palabra y si alguna es igual a la letra que ingresó el usuario ($jugador2)
  24.        
  25.         if($jugador1[$i] == $jugador2){
  26.            
  27.             //entonces $resultado tendrá este texto
  28.             $resultado =  'La letra '.$jugador2.' coincide';
  29.             //eliminamos la letra de la palabra, la reemplazamos por un espacio vacío
  30.             $jugador1[$i] = " ";
  31.             //cortamos la ejecución del ciclo for, porque ya hemos encontrado una coincidencia
  32.             //aunque ahora que lo pienso, está mal, porque debería encontrar todas las coincidencias
  33.             //y no solo la primera, bueno, tarea para el hogar, Arreglar esto jejeje
  34.             break;
  35.         }else{
  36.             //si no hay coincidencia
  37.             $resultado =  'La letra '.$jugador2.' NO coincide';
  38.         }
  39.     }
  40.     //reemplazamos los espacios por nada
  41.     $jugador1 = str_replace(" ","",$jugador1);
  42.     //si jugador es igual a nada quiere decir que no tiene lertas, por lo tanto todas fueron adivinadas
  43.     if($jugador1 == ""){$resultado = '<h1>GANASTE!!!</h1>La palabra secreta era: '.$palabra;}
  44.    
  45. }
  46. echo "Jugador 2 intente adivinar";
  47. ?>
  48.        <form action="enviar.php" method="Post">
  49.        
  50.        
  51.        <!--guardamos la palabra completa original siempre en este campo oculto (hidden)
  52.        PARA VER MEJOR EL FUNCIONAMIENTO REEMPLAZAR EL CAMPO POT UNO DEL TIPO TEXT ASI VERÁS LOS RESULTADOS AL VUELO
  53.        <input name="palabra" type="text" value="<?php echo $palabra ?>" />
  54.        -->
  55.        <input name="palabra" type="hidden" value="<?php echo $palabra ?>" />
  56.        
  57.        
  58.        
  59.        <!--guardamos la palabra que se va achicando, por que en cada coincidencia se le elimina la letra, en este campo (hidden)
  60.        PARA VER MEJOR EL FUNCIONAMIENTO REEMPLAZAR EL CAMPO POT UNO DEL TIPO TEXT ASI VERÁS LOS RESULTADOS AL VUELO
  61.        <input name="jugador1" type="text" value="<?php echo $jugador1 ?>" />
  62.        -->
  63.        <input name="jugador1" type="hidden" value="<?php echo $jugador1 ?>" />
  64.        
  65.        
  66.        
  67.         Ingrese Una Letra :<input type="text" name="jugador2" size="1" />
  68.         <input type="submit" value="enviar formulario" />
  69.         </form>
  70.         <br><br>
  71. <?php
  72. //LOS MENSAJES QUE SE VAN GENERANDO
  73. echo $resultado ?>


Si querés un contador, podrías ir guardando en otro campo hidden e ir sumandole 1 a cada enviada del formulario, o tambien con variables de session
__________________
la la la
  #7 (permalink)  
Antiguo 03/10/2012, 23:19
Avatar de Nemutagk
Colaborador
 
Fecha de Ingreso: marzo-2004
Ubicación: México
Mensajes: 2.633
Antigüedad: 20 años
Puntos: 406
Respuesta: Algun experto que me de una mano en php

Cita:
Iniciado por netstat89 Ver Mensaje
Me pone esto, si me podes explicar lo que hace cada variable mejor .


Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\site\index2.php:1) in C:\site\index2.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\site\index2.php:1) in C:\site\index2.php on line 2

Warning: implode() [function.implode]: Invalid arguments passed in C:\site\index2.php on line 35
Los dos primeros errores es por la forma que has hecho el copy/paste, y es que has puesto el "session_start()" después de una salida de datos..., sobre el implode faltaba una comilla, pero ahorita que ya tengo tiempo hice algo mucho mejor, aunque la idea es la misma...

Código PHP:
Ver original
  1. <?php
  2.  
  3. if (isset($_GET['borrar'])) {
  4.      unset($_SESSION['palabra']);
  5.      unset($_SESSION['letras']);
  6.      unset($_SESSION['numEncontradas']);
  7. }
  8.  
  9. if (isset($_POST['palabra'])) {
  10.      $_SESSION['palabra'] = $_POST['palabra'];
  11.      $_SESSION['letras'] = array();
  12.      $_SESSION['numEncontradas'] = 0;
  13.  
  14.      for($a=0; $a<strlen($_POST['palabra']); $a++) {
  15.           $_SESSION['letras'][$a] = '_';
  16.      }
  17. }
  18. ?>
  19. <!DOCTYPE HTML>
  20. <html lang="en-US">
  21. <head>
  22.      <meta charset="UTF-8">
  23.      <title>Ahorcado</title>
  24. </head>
  25. <body>
  26.      <form method="post" action="<?php echo $_SERVER['PHP_SELF']; ?>">
  27.           <?php if (!isset($_SESSION['palabra'])) { ?>
  28.           <p>Define la palabra para jugar</p>
  29.           <input type="text" name="palabra">
  30.           <?php }else { ?>
  31.           <p>Indica una letra a buscar</p>
  32.           <input type="text" name="letra">
  33.           <?php } ?>
  34.           <input type="submit" value="Enviar">
  35.      </form>
  36.  
  37.      <p><a href="<?php $_SERVER['PHP_SELF']; ?>?borrar=true">Volver a comenzar</a></p>
  38.  
  39.      <?php
  40.      if (isset($_POST['letra'])) {
  41.           $nuevaPalabra = '';
  42.           $encontrada = false;
  43.           for($i=0; $i<strlen($_SESSION['palabra']); $i++) {
  44.                if ($_SESSION['palabra'][$i] == $_POST['letra']) {
  45.                     $_SESSION['letras'][$i] = $_POST['letra'];
  46.                     $encontrada = true;
  47.                     $nuevaPalabra .= '_';
  48.                     $_SESSION['numEncontradas']++;
  49.                }else {
  50.                     $nuevaPalabra .= $_SESSION['palabra'][$i];
  51.                }
  52.           }
  53.  
  54.           if (!$encontrada) {
  55.                echo '<p>La letra '.$_POST['letra'].' no encontrada</p>';
  56.           }
  57.  
  58.           ksort($_SESSION['letras']);
  59.  
  60.           $_SESSION['palabra'] = $nuevaPalabra;
  61.      }
  62.  
  63.      if ($_SESSION['numEncontradas'] >= strlen($_SESSION['palabra']) && isset($_SESSION['palabra'])) {
  64.           echo '<p>Hecho, se ah completado la palabra!</p>';
  65.      }
  66.  
  67.      if (isset($_SESSION['letras'])) {
  68.           echo '<p>Letras encontradas</p>';
  69.           echo '<p>'.implode(' ',$_SESSION['letras']).'</p>';
  70.      }
  71.      ?>
  72. </body>
  73. </html>

Actualización: Me olvidaba algo muy importante en el juego, el que se muestre el numero de letras que posee la palabra y la posición de las letras encontradas!
__________________
Listo?, tendría que tener 60 puntos menos de IQ para considerarme listo!!!
-- Sheldon Cooper
http://twitter.com/nemutagk
PD: No contestaré temas vía mensaje personal =)

Última edición por Nemutagk; 03/10/2012 a las 23:31
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




La zona horaria es GMT -6. Ahora son las 10:26.