Foros del Web » Programando para Internet » PHP »

Problema sudoku PHP

Estas en el tema de Problema sudoku PHP en el foro de PHP en Foros del Web. Holaaa a todo@s!!! Bueno gente quería que me ayudaseís un poco con una duda que tengo, os comento, estoy realizando un sudoku en PHP, en ...
  #1 (permalink)  
Antiguo 20/04/2011, 03:34
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 0
Problema sudoku PHP

Holaaa a todo@s!!!

Bueno gente quería que me ayudaseís un poco con una duda que tengo, os comento, estoy realizando un sudoku en PHP, en el que se introduce una plantilla con el sudoku relleno, otra con los números necesarios para la realzazación del sudoku, pues tengo un problema, o más que nada una duda, porque cuando estoy rellenando el sudoku y lo almaceno en la base de datos, se me almacena 2 veces, la primera con los números que salen para resolver el sudoku y el resto se almacena 0, y una segunda que se me almacena correctamente, el problema es que no quiero que se me almacene la primera vez, creo el problema puede ser el siguiente:

if ($resultado['a1'] == 0)
{
echo '<input type="text" name="a1" size="2" maxlength="1">';
// esto es para cuando introducen el número.....
}
else
{
echo "" . $resultado['a1'] ;
$_POST['a1']= $resultado['a1'];

//el problema esta aqui porque para que me almacene el número que no
//me introducen por formulario, lo guardo en $_POST['a1'] el número que //está en otra base de datos diferente y eso no sé si esta del todo bien; =)

}

Perdonarme soy nuevo programando en PHP.
Lo que también me parece raro es que solo tengo un "insert" y me lo almacena 2 veces en la base de datos......

Espero sus respuestas.Muchas gracias de antemano.
Un saludo!!
  #2 (permalink)  
Antiguo 20/04/2011, 08:25
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problema sudoku PHP

no entiendo por wue usas bases de datos para hacer un sudoku,
yo hice uno con js en pocas lineas.

de ultima para guardar el resultado final, si gan o perdio,
cuantas veces se equivoco, etc.

pero que por cada accion del usuario envias un form????
  #3 (permalink)  
Antiguo 20/04/2011, 08:30
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problema sudoku PHP

te lo mando asi sacas lo que te sirve
Código Javascript:
Ver original
  1. <style>
  2.     .capa{
  3.       border: 1px solid black;
  4.       float: left;
  5.       width: 25px;
  6.       height: 25px;
  7.       margin: 3px;
  8.  
  9.     }
  10.     .capaPrincipal{
  11.       background:#0033FF ;
  12.       position: absolute;
  13.       top: 100px;
  14.       left: 200px;
  15.     }
  16.  
  17.  
  18. </style>
  19. <script>
  20. document.write('<div id="principal" class="capaPrincipal">');
  21.  
  22. var k=0;
  23. var plantilla = Math.floor(Math.random()*3);    //se multiplica por la cantidad de casos que voy a tenes//
  24.  
  25.  switch (plantilla){
  26.   case 1:
  27.   numero=new Array(5,8,1,6,2,7,3,4,9,
  28.                  2,1,3,4,9,6,8,7,5,
  29.                  9,4,5,7,8,1,6,3,2,
  30.                  6,3,2,8,4,9,5,1,7,
  31.                  7,9,4,3,1,5,2,6,8,
  32.                  1,5,6,9,7,8,4,2,3,
  33.                  4,7,8,1,3,2,9,5,6,
  34.                  3,2,9,5,6,4,7,8,1,
  35.                  8,6,7,2,5,3,1,9,4);
  36.   break;
  37.   case 2:
  38.  numero=new Array(5,8,1,6,2,7,3,4,9,
  39.                   4,7,8,1,3,2,9,5,6,
  40.                   1,5,6,9,7,8,4,2,3,
  41.                   9,4,5,7,8,1,6,3,2,
  42.                   3,2,9,5,6,4,7,8,1,
  43.                   6,3,2,8,4,9,5,1,7,
  44.                   7,9,4,3,1,5,2,6,8,
  45.                   2,1,3,4,9,6,8,7,5,
  46.                   8,6,7,2,5,3,1,9,4);
  47.   break;
  48.  
  49.   default:
  50.   numero=new Array(5,8,1,6,2,7,3,4,9,
  51.                  6,3,2,8,4,9,5,1,7,
  52.                  7,9,4,3,1,5,2,6,8,
  53.                  1,5,6,9,7,8,4,2,3,
  54.                  4,7,8,1,3,2,9,5,6,
  55.                  3,2,9,5,6,4,7,8,1,
  56.                  2,1,3,4,9,6,8,7,5,
  57.                  9,4,5,7,8,1,6,3,2,
  58.                  8,6,7,2,5,3,1,9,4);
  59.   break;
  60. }
  61.  
  62. for(var i=1;i<=9;i++) {
  63.     for(var j=1;j<=9;j++){
  64.  
  65.         var valor= numero[k];
  66. // esto me permite saltear la cantidad de casilleros para mostrar algunos ocultos, es decir, vacios //
  67.         valor = valor&#37;2 ? valor : "";
  68.  
  69.         document.write('<div class="capa" id="capa_'+j+'_'+i+'">');
  70.         document.write('<input onchange="return validar('+j+','+i+','+k+');" type="text" id="nro_'+j+'_'+i+'" size="1" maxlength="1" value="'+ valor + '" class="capa"  />');
  71.         document.write('</div>');
  72.  
  73.         k++;
  74.  
  75.     }
  76.     document.write('<div style="clear:both;"></div>');
  77. }
  78. document.write('</div>');
  79.  
  80. /*
  81. k es la posicion del array
  82. i son las filas
  83. j son las columnas
  84. */
  85. var cont=0;
  86. function validar(j,i,k){
  87. var input=document.getElementById("nro_"+j+"_"+i).value; //campo donde ingreso el valor y accedo//
  88.  
  89. if( input>0 && input<=9) {
  90.   if(input==numero[k]){
  91.     //alert(numero[k]);
  92.     cont++;
  93.     //alert(cont);
  94.     document.getElementById("nro_"+j+"_"+i).disabled=true;//una vez acertado el numero correcto, el disabled=true, desabilita el campo, es decir, no deja cambiarlo//
  95.     document.getElementById("capa_"+j+"_"+i).style.background="yellow";
  96.     if(cont==36)
  97.         alert("Sos un Genio Ganaste, preciona F5 para jugar de nuevo");
  98.  
  99.   }
  100.   else{
  101.     alert("ingrese otro valor");
  102.     document.getElementById("nro_"+j+"_"+i).value="";//asigna valo vacio al campo//
  103.     document.getElementById("nro_"+j+"_"+i).focus();//en caso que se ingrese algo no deseable, me asigna la misma celda//
  104.   }
  105. }
  106. else{
  107.     alert("Ingrese un numero del 1 al 9")
  108.     document.getElementById("nro_"+j+"_"+i).value="";//asigna valor vacio al campo//
  109.     document.getElementById("nro_"+j+"_"+i).focus();//en caso que se ingrese algo no deseable, me asigna la misma celda//
  110. }
  111. //alert(input);
  112.  
  113. }
  114.  
  115.  
  116.  
  117.  
  118. </script>
  #4 (permalink)  
Antiguo 21/04/2011, 05:08
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema sudoku PHP

Muchas gracias por contestar!!!!
Verá ahora mismo si puedo conseguir algo con tu código.Muchisimas gracias.
Lo que tengo hecho es que cada cuadricula del sudoku es un formulario, y al darle a enviar se guarda cada casilla en un registro en la base de datos, sé que no haría falta guardar los números pero los necesito tener almacenados en la base de datos.

Principalmente mi problema esta en que al abrir el sudoku, sin darle al boton guardar se me almacena en la base de datos vacio, posteriormente le doy a guardar cuando ya lo tengo relleno y se me almacena correctamente, me parece raro porque solo tengo un insert, pero claro dentro de un for.......
  #5 (permalink)  
Antiguo 21/04/2011, 07:24
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problema sudoku PHP

vos tenes el insert en la misma pagina donde esta el sudoku??
  #6 (permalink)  
Antiguo 21/04/2011, 08:44
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema sudoku PHP

Muchas gracias por tu atención!!
Si tengo el insert justo antes de acabar el for.Te adjunto el código un poco recortado, sé que es demasiado largo pero lo hice así por cuestión visual. A ver que te parece, tengo los 2 principales problemas comentados en el código.
Código PHP:
<?PHP

      $conexion 
mysql_connect ("localhost""root""")

      
mysql_select_db ("alvaro")
 
      
$instruccion "select * from plantillasudoku";
      
$consulta mysql_query ($instruccion$conexion)

      
$nfilas mysql_num_rows ($consulta);

      if (
$nfilas 0)
      {

         for (
$i=0$i<$nfilas$i++)
         {
          
//si la consulta devuelve mas de una fila....me muestra todo en la misma pantalla, quiero que me salga
          //primero una consulta, le doy a enviar, y luego la siguiente consulta, este es uno de los problemas.

            
$resultado mysql_fetch_array ($consulta);

            echo 
'<form method="POST">';// action="insercionalumno.php">';
            
echo '<table border="1" BORDERCOLOR="red" cellpadding="2"  cellspacing="0" align="center">';

                echo 
'<tr  BORDERCOLOR="black">';
                     echo 
'<td bgcolor="#A4A4A4" align="center">';

                         if (
$resultado['a1'] == 0)
                         {
                            echo 
'<input type="text" name="a1" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a1'];
                             echo 
'<input type="text" name="a1" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';

                         }

                     echo 
'</td>';
                     echo 
'<td bgcolor="#A4A4A4" align="center">';
                         if (
$resultado['a2'] == 0)
                         {
                            echo 
'<input type="text" name="a2" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a2'];
                             echo 
'<input type="text" name="a2" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';

                         }
                     echo 
'</td>';
                     echo 
'<td bgcolor="#A4A4A4" align="center">';
                         if (
$resultado['a3'] == 0)
                         {
                            echo 
'<input type="text" name="a3" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a3'];
                             echo 
'<input type="text" name="a3" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';
                            
                         }
                     echo 
'</td>';
                     echo 
'<td align="center">';
                         if (
$resultado['a4'] == 0)
                         {
                            echo 
'<input type="text" name="a4" size="2" maxlength="1">';
                         }
                         else
                         {
                         
$res$resultado['a4'];
                         echo 
'<input type="text" name="a4" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';



                         }
                     echo 
'</td>';
                     echo 
'<td align="center">';
                         if (
$resultado['a5'] == 0)
                         {
                            echo 
'<input type="text" name="a5" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a5'];
                             echo 
'<input type="text" name="a5" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';

                         }
                     echo 
'</td>';
                     echo 
'<td align="center">';
                         if (
$resultado['a6'] == 0)
                         {
                            echo 
'<input type="text" name="a6" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a6'];
                             echo 
'<input type="text" name="a6" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';
                         }
                     echo 
'</td>';
                     echo 
'<td bgcolor="#A4A4A4" align="center">';
                         if (
$resultado['a7'] == 0)
                         {
                            echo 
'<input type="text" name="a7" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a7'];
                             echo 
'<input type="text" name="a7" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';
                         }
                     echo 
'</td>';
                     echo 
'<td bgcolor="#A4A4A4" align="center">';
                          if (
$resultado['a8'] == 0)
                         {
                            echo 
'<input type="text" name="a8" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a8'];
                             echo 
'<input type="text" name="a8" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';
                         }
                     echo 
'</td>';
                     echo 
'<td bgcolor="#A4A4A4" align="center">';
                         if (
$resultado['a9'] == 0)
                         {
                            echo 
'<input type="text" name="a9" size="2" maxlength="1">';
                         }
                         else
                         {
                             
$res$resultado['a9'];
                             echo 
'<input type="text" name="a9" size="2" maxlength="1" value="' htmlspecialchars($res) . '" READONLY>';
                         }
                     echo 
'</td>';
                echo 
'</tr>';

            echo 
' <form method="post">';// action="insercionalumno.php">';
                 
echo '<input type="submit" value="Guardar">';
             echo 
'</form>';

                     
//el otro problema esta aqui, que al iniciar sin darle al boton guardar me lo guarda directamente en la base de datos 
                     //con todo 0, pero a partir de la segunda vez me lo hace bien.
                    
                         
$ssql =  "insert into alumnosudoku (a1,a2,a3,a4,a5,a6,a7,a8,a9)
                        values ('"
$_POST["a1"]."','"$_POST["a2"]."','"$_POST["a3"]."','"$_POST["a4"]."','"$_POST["a5"]."','"$_POST["a6"]."',
                        '"
$_POST["a7"]."','"$_POST["a8"]."','"$_POST["a9"]."')";


                                     if(
mysql_query($ssql,$conexion)){
                                        echo 
"Insercion correcta";
                                    }
                                    else{
                                        echo 
"Insercion incorrecta";

                                      }

         }
         echo 
'</TABLE>';
         echo 
'</form>';

    }
      else{
         print (
"La tabla esta vacia");
         }

   
mysql_close ($conexion);

?>

Un Saludo!
  #7 (permalink)  
Antiguo 21/04/2011, 10:23
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problema sudoku PHP

primero vemos el insert:

como se setean con (0) antes de empezar ??

valida que ninguno de esos post sean cero
  #8 (permalink)  
Antiguo 26/04/2011, 04:29
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema sudoku PHP

Se meten 0 antes de darle al boton guardar, luego cuando lo relleno le doy a guardar y me lo hace bien, lo que quiero es que solo me haga el insert cuando le doy a guardar.
Un saludo.
  #9 (permalink)  
Antiguo 26/04/2011, 06:39
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problema sudoku PHP

y bueno inventa algun filtro
  #10 (permalink)  
Antiguo 26/04/2011, 06:42
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Problema sudoku PHP

Buena respuesta Patriarka

Saludos
  #11 (permalink)  
Antiguo 26/04/2011, 09:47
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema sudoku PHP

Muchas gracias Patriarka por tu ayuda, pero tu sirdaiz te podias ahorrar el comentario, muchas gracias de todas formas.
Un saludo
  #12 (permalink)  
Antiguo 26/04/2011, 09:52
Avatar de Patriarka  
Fecha de Ingreso: enero-2011
Ubicación: Moreno, Buenos Aires, Argentina
Mensajes: 2.851
Antigüedad: 13 años, 3 meses
Puntos: 288
Respuesta: Problema sudoku PHP

aca es todo con buena onda Alvaroz,
  #13 (permalink)  
Antiguo 26/04/2011, 11:37
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Problema sudoku PHP

Cita:
Iniciado por Alvaros Ver Mensaje
pero tu sirdaiz te podias ahorrar el comentario
Me parece q t confundes, este es un foro para resolver dudas y comentar, si me sale felicitar a patriarka por la respuesta no veo de malo q sobre el comentario, lo q sobra es tu opinion...
  #14 (permalink)  
Antiguo 26/04/2011, 14:58
 
Fecha de Ingreso: abril-2011
Mensajes: 37
Antigüedad: 13 años
Puntos: 0
Respuesta: Problema sudoku PHP

Lo siento, no quería mal royo, no lo he dicho en ese sentido de verdad, al revés me parece perfecto este foro, veo que todo el mundo aporta lo que puedo e intenta ayudarte, y encima rápido.De verdad pido disculpas si os ha sentando mal,no era mi intención.
Un saludo!
  #15 (permalink)  
Antiguo 26/04/2011, 15:00
 
Fecha de Ingreso: diciembre-2010
Mensajes: 459
Antigüedad: 13 años, 4 meses
Puntos: 21
Respuesta: Problema sudoku PHP

No problem, solo q con el sentido q lo dijiste no me parecio el correcto, pero de todas formas lo importante de este hilo era tu solución que creo q la az encontrado

Saludos

Etiquetas: Ninguno
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:00.