Foro de elhacker.net

Programación => Desarrollo Web => Mensaje iniciado por: z3nth10n en 4 Abril 2013, 17:33 pm



Título: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 4 Abril 2013, 17:33 pm
Hola!!! Buenas a todos, pues hoy he estado haciendo pruebas (ya llevo días) xD
Y bueno, pues me he hartado, lo que quiero hacer es meter el value de un input por dentro de un codigo html con un document.write, y que se lleve el link del juego y que lo meta dentro de un textarea para que luego con un $_POST se meta en la base de datos, el problema es que no va XD

Hay varios codes que son:

El script principal que no va:

Código
  1. function hola() {
  2. var value = document.getElementById("nombre").value;
  3. document.write("<select name=\"ver\" onChange=\"OnDropDownChange(this);\"><option selected=\"selected\">Selecciona el lenguaje</option><option>-----</option><option></option><option value=\"<script type='text/javascript' src='http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js'><\/script><script type='text/javascript'><!-- function GetUnity() { if (typeof unityObject != 'undefined') { return unityObject.getObjectById('unityPlayer'); } return null; } if (typeof unityObject != 'undefined') { var params = { backgroundcolor: '000000', bordercolor: '000000', textcolor: 'FFFFFF', disableContextMenu: true }; unityObject.embedUnity('unityPlayer', '" + value + "', document.documentElement.clientWidth, document.documentElement.clientHeight, params); } //--> --> <\/script> <div id='unityPlayer' style='width: 100%; height: 100%; visibility: visible;'><embed type='application/vnd.unity' style='display: block; width: 100%; height: 100%;' width='100%' height='100%' tabindex='0' backgroundcolor='000000' bordercolor='000000' textcolor='FFFFFF' disablecontextmenu='true' firstframecallback='unityObject.firstFrameCallback();' src='" + value + "'></div>\">Flash</option><option value=\"\">Java</option><option value=\"\">Unity3D</option><option value=\"\">iFrame</option></select>");
  4. }
  5.  
  6. document.write(hola());

Me salta un "undefined" después de la selectbox, pero además no funciona, porque no coje el value de nombre, nombre aquí esta:

Código:
  <b>Link del juego:</b>
    <input type="text" name="linkjuego" id="linkjuego" /><br>

El textarea:

Código:
<textarea id="trat" style="width: 490px; height: 60px;"></textarea>

El script del select que si va:

Código
  1. function OnDropDownChange(dropDown) {
  2.        var selectedValue = dropDown.options[dropDown.selectedIndex].value;
  3.        document.getElementById("trat").value = selectedValue;
  4.    }

Y bueno, pues eso es todo, a ver quien me hecha una mano, un saludo! :)
PD: Quien lo quiera probar que se meta aquí: http://ikillcraft.a0001.net/formulario.php


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 4 Abril 2013, 20:41 pm
A la hora de llamar la funcion hola(), el value de "nombre" esta vació, por eso te retorna "undefined".

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 4 Abril 2013, 20:49 pm
Okey, y como hago que lo detecte automaticamente, algo así que cuando lo pongas se vaya actualizando solo¿ No soy tan pro xD


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 4 Abril 2013, 21:03 pm
Para empezar, olvídate de document.write.. es algo del siglo pasado. Usa innerHTML para escribir dentro de un div. Sobre cuando añadir la lista... puedes utilizar onblur para llamar a la funcion hola(). Asi, solo cuando el campo "nombre" pierda el foco, este se cambiara.. también puedes hacerlo a lo bestia y utilizar onkeypress.

Código
  1. <input type="text" name="nombre" id="nombre" onkeypress="hola()">
Código
  1. <div id="tipo_juego"></div>
  2. function hola() {
  3. var value = document.getElementById("nombre").value;
  4. var div = document.getElementById("tipo_juego");
  5. div.innerHTML = "<select name=\"ver\" onChange=\"OnDropDownChange(this);\"><option selected=\"selected\">Selecciona el lenguaje</option><option>-----</option><option></option><option value=\"<script type='text/javascript' src='http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js'><\/script><script type='text/javascript'><!-- function GetUnity() { if (typeof unityObject != 'undefined') { return unityObject.getObjectById('unityPlayer'); } return null; } if (typeof unityObject != 'undefined') { var params = { backgroundcolor: '000000', bordercolor: '000000', textcolor: 'FFFFFF', disableContextMenu: true }; unityObject.embedUnity('unityPlayer', '" + value + "', document.documentElement.clientWidth, document.documentElement.clientHeight, params); } //--> --> <\/script> <div id='unityPlayer' style='width: 100%; height: 100%; visibility: visible;'><embed type='application/vnd.unity' style='display: block; width: 100%; height: 100%;' width='100%' height='100%' tabindex='0' backgroundcolor='000000' bordercolor='000000' textcolor='FFFFFF' disablecontextmenu='true' firstframecallback='unityObject.firstFrameCallback();' src='" + value + "'></div>\">Flash</option><option value=\"\">Java</option><option value=\"\">Unity3D</option><option value=\"\">iFrame</option></select>";
  6. }

PD: Te recomiendo organizar un poco el JS.

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 4 Abril 2013, 22:00 pm
Bueno, ya lo he reorganizado y todo pero sigue sin funcionar el value de aquí:

Citar
div.innerHTML = "<select name=\"ver\" onChange=\"OnDropDownChange(this);\"><option selected=\"selected\">Selecciona el lenguaje</option><option>-----</option><option></option><option value=\"<script type='text/javascript' src='http://webplayer.unity3d.com/download_webplayer-3.x/3.0/uo/UnityObject.js'><\/script><script type='text/javascript'><!-- function GetUnity() { if (typeof unityObject != 'undefined') { return unityObject.getObjectById('unityPlayer'); } return null; } if (typeof unityObject != 'undefined') { var params = { backgroundcolor: '000000', bordercolor: '000000', textcolor: 'FFFFFF', disableContextMenu: true }; unityObject.embedUnity('unityPlayer', '" + value + "', document.documentElement.clientWidth, document.documentElement.clientHeight, params); } //--> --> <\/script> <div id='unityPlayer' style='width: 100%; height: 100%; visibility: visible;'><embed type='application/vnd.unity' style='display: block; width: 100%; height: 100%;' width='100%' height='100%' tabindex='0' backgroundcolor='000000' bordercolor='000000' textcolor='FFFFFF' disablecontextmenu='true' firstframecallback='unityObject.firstFrameCallback();' src='" + value + "'></div>\">Flash</option><option value=\"\">Java</option><option value=\"\">Unity3D</option><option value=\"\">iFrame</option></select>";

 :-\ :-\

He utilizado un body onload="hola()" eso afecta en algo?  :huh:


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 4 Abril 2013, 22:07 pm
onload es al cargar  y sigues con el mismo problema :silbar:

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 15:03 pm
Vamos a ver ya cambie el nombre, y quite el onload del body, pero entonces no carga xDDD

Y si pongo el onload tampoco va, pero si carga.  :-\


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 15:14 pm
A ver, has probado poniendo TODO tal y como te lo he puesto en el otro post ? Porque yo si.. y funciona perfectamente...

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 15:16 pm
A que soy gilipollas y en mi casa aún no lo saben, joder tio estoy apollardao xD
Estoy intentado poner el input que no es, le estaba poniendo el id de nombre, y era el de linkjuego xD
Gracias por la ayuda, coño tantos inputs y mierdas ya lian xD Ayer me paso lo mismo... Soy un poco retarded a veces sorry xD

----

Que piensas sinceramente sobre estos despistes, opina por favor, necesito que me den una ostia como una catedral xD


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 15:39 pm
Jajjaa na a mi me pasa constantemente... sobre todo cuando tengo que recoger información de quinientosmiltrescientoscincuenta inputs xD

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 15:49 pm
Una cosa, tengo que escapar unas cosillas, pero no van  :-[

Citar
<option value=\"<object type=\"application/x-shockwave-flash\" data=\"" + value + "\" width=\"550\" height=\"400\"><param name=\"movie\" value=\"" + value + "\" /><param name=\"quality\" value=\"high\" /><\/object>\">Flash</option><option value=\"<APPLET CODE=\"" + value + "\" WIDTH=\"ancho\" HEIGHT=\"alto\"></APPLET>\">Java</option>

Pero nada, que no se como, he probado con \ y separando el / del > así: / > pero nada. :(


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 16:44 pm
Supongo que todo eso lo vas a guardar en una base de datos verdad ? Puesto que lo único que necesitas de ahí, es el value, ¿ no seria mas logico que guardaras solo el value y luego ya añadir el applet ?

Osease, guardas solo el value, y luego cuando lo vayas a imprimir, imprimes todo eso y le agregas value. Créeme, te va a hacer la vida mas fácil y te vas a evitar muchos problemas de seguridad.

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 16:56 pm
Pero, a ver, lo voy a meter todo como una variable... Así que no ser como añado esa variable, como?

A ver explica xD Es que no entiendo muy bien...  :P


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 17:44 pm
A ver.. esto es complicado de explicar xD Te voy a mostrar un ejemplo que creo que te servirá mejor.

A ver, te lo planteo asi. Porque necesitas escribir guardar 3 veces el link del juego (en el input, en el select y en el textarea) cuando con 1 sola ya te vale ?. Miralo asi, tu haces que el select solo tenga el tipo de juego y luego en con PHP te encargas del resto. Te explico.

Imaginate que tienes este SIMPLE formulario:
Código
  1. <form action="envio.php" method="POST">
  2.   <input type="text" value="" name="link_juego" />
  3.   <select name="tipo_de_juego">
  4.      <!-- disabled="disabled" no permite seleccionar ese elemento -->
  5.      <option value="" selected="selected" disabled="disabled">Selecciona el lenguaje</option>
  6.      <option value="" disabled="disabled">---</option>
  7.      <!-- Agregamos el tipo de juego -->
  8.      <option value="flash">Flash</option>
  9.      <option value="java">Java</option>
  10.      <option value="unity">Unity</option>
  11.      <option value="iframe">iFrame</option>
  12.   </select>
  13.   <!-- Enviamos formulario -->
  14.   <input type="submit" value="enviar" />
  15. </form>

Bien, cuando el usuario lo rellene y lo envía, tu guardas los valores en la BD y luego cuando te toque comprobarlos, con PHP, puedes comprobar cual es el valor que ha guardado el select y a partir de ahí sacar el resto del código. Por ejemplo:

Código
  1. <?php
  2. /* Conexion a bd blablablabla */
  3. /* En la consulta coges el link del juego y el tipo de juego.. */
  4. $query = "SELECT link_juego,tipo_juego FROM juegos WHERE blablablabla";
  5. /* while($row=$result->fech_assoc())
  6.    blalbalbla
  7. */
  8.  
  9. // Comprobamos que tipo de juego es:
  10. if($tipo_juego==='unity'){
  11.   echo '<object blablalbalbalblalba src="'.$row['link_juego'].'" blablabla></object>';
  12. } elseif($tipo_juego==='flash'){
  13.   echo '<object flash blablalbalbalblalba src="'.$row['link_juego'].'" blablabla></object>';
  14. } elseif($tipo_juego==='iframe'){
  15.   echo '<iframe src="'.$row['link_juego'].'" bla blablab lba></iframe>';
  16. } else {
  17.   echo 'Tipo de juego desconocido. Link:'.$row['link_juego'];
  18. }
  19. ?>

De esta forma no te hace falta ningun javascript y yo creo que esta mucho mejor optimizado y mas seguro...

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 18:00 pm
Ostia, es mucho mejor xD

Vamos a optimizar más cosas, quiero hacer una cosa así:

(http://i.imgur.com/gtTeXjQ.png)

Tengo un código super denso que es:

Código:
<b>Controles:</b><br>

<i>Tecla: </i><input type="text" name="tecla0" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion0" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla1" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion1" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla2" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion2" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla3" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion3" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla4" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion4" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla5" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion5" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla6" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion6" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla7" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion7" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla8" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion8" id="accion" /><br>
<i>Tecla: </i><input type="text" name="tecla9" id="tecla" /> - <i>Acci&oacute;n: </i><input type="text" name="accion9" id="accion" /><br>

Código
  1. function tecla2($cadena) {
  2.  
  3. //Rememplazamos caracteres especiales latinos minusculas
  4.  
  5. $find2 = array("A", "B", "C", "D", "E", "F", "G", "H", "I", "H", "J", "K", "L", "M", "N", "Ñ", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "ñ", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "flechas", "enter", "control", "alt", "espacio", "der", "izq", "mover", "shift", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0");
  6.  
  7. $repl2 = array("<div class=\"tecla\">A</div>", "<div class=\"tecla\">B</div>", "<div class=\"tecla\">C</div>", "<div class=\"tecla\">D</div>", "<div class=\"tecla\">E</div>", "<div class=\"tecla\">F</div>", "<div class=\"tecla\">G</div>", "<div class=\"tecla\">H</div>", "<div class=\"tecla\">I</div>", "<div class=\"tecla\">H</div>", "<div class=\"tecla\">J</div>", "<div class=\"tecla\">K</div>", "<div class=\"tecla\">L</div>", "<div class=\"tecla\">M</div>", "<div class=\"tecla\">N</div>", "<div class=\"tecla\">Ñ</div>", "<div class=\"tecla\">O</div>", "<div class=\"tecla\">P</div>", "<div class=\"tecla\">Q</div>", "<div class=\"tecla\">R</div>", "<div class=\"tecla\">S</div>", "<div class=\"tecla\">T</div>", "<div class=\"tecla\">U</div>", "<div class=\"tecla\">V</div>", "<div class=\"tecla\">W</div>", "<div class=\"tecla\">X</div>", "<div class=\"tecla\">Y</div>", "<div class=\"tecla\">Z</div>", "<div class=\"tecla\">a</div>", "<div class=\"tecla\">b</div>", "<div class=\"tecla\">c</div>", "<div class=\"tecla\">d</div>", "<div class=\"tecla\">e</div>", "<div class=\"tecla\">f</div>", "<div class=\"tecla\">g</div>", "<div class=\"tecla\">h</div>", "<div class=\"tecla\">i</div>", "<div class=\"tecla\">j</div>", "<div class=\"tecla\">k</div>", "<div class=\"tecla\">l</div>", "<div class=\"tecla\">m</div>", "<div class=\"tecla\">n</div>", "<div class=\"tecla\">o</div>", "<div class=\"tecla\">p</div>", "<div class=\"tecla\">q</div>", "<div class=\"tecla\">r</div>", "<div class=\"tecla\">s</div>", "<div class=\"tecla\">t</div>", "<div class=\"tecla\">u</div>", "<div class=\"tecla\">v</div>", "<div class=\"tecla\">w</div>", "<div class=\"tecla\">x</div>", "<div class=\"tecla\">y</div>", "<div class=\"tecla\">z</div>", "<img title=\"Flechas de posicionamiento\" src=\"ico/flechas.png\" />", "<img title=\"Enter\" src=\"ico/enter.png\" />", "<img title=\"Ctrl/Control\" src=\"ico/control.png\" />", "<img title=\"Alt\" src=\"ico/alt.png\" />", "<img title=\"Espacio\" src=\"ico/space.png\" />", "<img title=\"Click derecho\" src=\"ico/mouse_click_der.png\" />", "<img title=\"Click izquierdo\" src=\"ico/mouse_click_izq.png\" />", "<img title=\"Mover el rat&oacute;n\" src=\"ico/mouse_movi.png\" />", "<img title=\"Shift\" src=\"ico/shift.png\" />", "<div class=\"tecla\">1</div>", "<div class=\"tecla\">2</div>", "<div class=\"tecla\">3</div>", "<div class=\"tecla\">4</div>", "<div class=\"tecla\">5</div>", "<div class=\"tecla\">6</div>", "<div class=\"tecla\">7</div>", "<div class=\"tecla\">8</div>", "<div class=\"tecla\">9</div>", "<div class=\"tecla\">0</div>");
  8.  
  9. $cadena = str_replace($find2, $repl2, $cadena);
  10.  
  11. return $cadena;
  12.  
  13. }

Y luego:

Código
  1. $tecla0 = tecla2($_POST['tecla0']);
  2.  
  3. $accion0 = reem($_POST['accion0']);
  4.  
  5. $tecla1 = tecla2($_POST['tecla1']);
  6.  
  7. $accion1 = reem($_POST['accion1']);
  8.  
  9. $tecla2 = tecla2($_POST['tecla2']);
  10.  
  11. $accion2 = reem($_POST['accion2']);
  12.  
  13. $tecla3 = tecla2($_POST['tecla3']);
  14.  
  15. $accion3 = reem($_POST['accion3']);
  16.  
  17. $tecla4 = tecla2($_POST['tecla4']);
  18.  
  19. $accion4 = reem($_POST['accion4']);
  20.  
  21. $tecla5 = tecla2($_POST['tecla5']);
  22.  
  23. $accion5 = reem($_POST['accion5']);
  24.  
  25. $tecla6 = tecla2($_POST['tecla6']);
  26.  
  27. $accion6 = reem($_POST['accion6']);
  28.  
  29. $tecla7 = tecla2($_POST['tecla7']);
  30.  
  31. $accion7 = reem($_POST['accion7']);
  32.  
  33. $tecla8 = tecla2($_POST['tecla8']);
  34.  
  35. $accion8 = reem($_POST['accion8']);
  36.  
  37. $tecla9 = tecla2($_POST['tecla9']);
  38.  
  39. $accion9 = reem($_POST['accion9']);
  40.  
  41. mysql_connect ($db_server, $db_user, $db_passwd) or die ('Error: ' . mysql_error());
  42.  
  43. mysql_select_db ($db_name);
  44.  
  45. $query="INSERT INTO juegos (... tecla0, accion0, tecla1, accion1, tecla2, accion2, tecla3, accion3, tecla4, accion4, tecla5, accion5, tecla6, accion6, tecla7, accion7, tecla8, accion8, tecla9, accion9) VALUES (... '$tecla0', '$accion0', '$tecla1', '$accion1', '$tecla2', '$accion2', '$tecla3', '$accion3', '$tecla4', '$accion4', '$tecla5', '$accion5', '$tecla6', '$accion6', '$tecla7', '$accion7', '$tecla8', '$accion8', '$tecla9', '$accion9')";

Cómoo tu entenderas es una bestialidad, tengo como 25 filas en la base de datos...

He estado buscando metodos para juntar todos los campos, pero nada...

Hice un mini-codigo para clonar campos, pero lo he perdido xD

Ahora la pregunta es como haría para meter por ejemplo si tengo 20 inputs con diferentes values (que serían las teclas y las acciones de respectivas teclas), meterlos todos dentro de una columna y luegos separarlos con tablas...

No tengo npi...  :-\

Un saludo.


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 19:26 pm
Para empezar, el formulario lo podrias tener asi:
Código
  1. <script type="text/javascript">
  2. var add_tecla = function(){
  3.   /* Obtener DIV de teclas */
  4.   var div = document.getElementById("teclas");
  5.   /* Agregar otra columna */
  6.   div.innerHTML += '<i>Tecla: </i><input type="text" name="tecla[]" /> - <i>Acci&oacute;n:</i><input type="text" name="accion[]" /><br>';
  7.   /* Finalizar */
  8.   return true;
  9. }
  10. <form action="envio.php" method="POST">
  11.   <input type="button" value="A&ntilde;adir tecla" onclick="add_tecla();" />
  12.   <input type="submit" value="enviar" /><br />
  13.   <b>Controles:</b><br>
  14.   <div id="teclas">
  15.      <i>Tecla: </i><input type="text" name="tecla[]" /> - <i>Acci&oacute;n:</i><input type="text" name="accion[]" /><br>
  16.   </div>
  17. </form>

Ahora bien 2 cosas:
   1. Si tienes muchos campos con el mismo nombre, puedes usar [] (tecla[]) para que HTML les asigne automáticamente el numero. Asi no tienes que escribir tecla1, tecla2 etc.. PHP lo reconocerá como un array.
   2. Solo puede haber UN elemento con EL MISMO ID. No puedes tener 2 elementos con el mismo ID.

Bien, pasamos a PHP.

La función tecla2() se podría optimizar pero debes cambiar los nombres de las imágenes... si no jodido. Ejemplo:
Código
  1. function tecla2($cadena) {
  2.   // Si es una letra o numero de 1 caracter de logitud, se le añadira <div class="tecla">
  3.   // Pero si coincide con las palabras flechas,enter etc... se le añadira <img src="" />
  4.   $buscarRegex = array('/^([A-ZñÑ0-9]{1})$/i','/^(flechas|enter|control|alt|espacio|der|izq|mover|shift)$/i');
  5.   $reemplazo = array('<div class="tecla">$1</div>','<img src="ico/$1.png" alt="tecla-$1" />');
  6.   $mag = preg_replace($buscarRegex, $reemplazo, $cadena,-1,$contador);
  7.   // Si las sustituciones son menores a 1, significa que no se ha encontrado el patrón.
  8.   if($contador >= 1){return $mag;}else{return 'desconocida';}
  9. }

El poder de regex es total :P. El caso es que las imágenes se deberán llamar flechas.png, enter.png, der.png, izq.png etc..etc..

Bien, en vez de hacer:
Código
  1. $tecla0 = tecla2($_POST['tecla0']);
  2. $accion0 = reem($_POST['accion0]);
  3. /* bla bla bla */

Haremos esto:
Código
  1. /* Por cada campo de tecla ... */
  2. foreach($_POST['tecla'] as $tecla){
  3.   /* Le pasamos tecla2 y le agregamos a un array. */
  4.   $teclas[] = tecla2($tecla);
  5. }
  6.  
  7. /* Lo mismo con las acciones.. */
  8. foreach($_POST['accion'] as $accion){
  9.   $acciones = reem($accion);
  10. }

Y ahora llega la magia. ¿ Como hacer que un array entero de teclas y acciones se guarde en la base de datos en una sola columna ? La magia esta en serialize() http://php.net/manual/es/function.serialize.php .. básicamente te permite guardar arrays y objetos y luego recuperarlos como si nada.

Código
  1. $teclas = serialize($teclas);
  2. $acciones = serialize($acciones);
  3.  
  4. $query = "INSERT INTO juegos (teclas,acciones) VALUES ('".$teclas."','".$acciones."')";

CONSEJO: Asegúrate de que los campos teclas y acciones de la tabla juegos sean de tipo TEXT, MEDIUMTEXT o LONGTEXT. La razon es que la cadena del serialize es mas larga cuantos mas campos añades.

Bien, ahora que ya lo tienes todo bien guardadito en la base de datos, te toca sacarlo de ahí y mostrarlo como los monos de la jungla mandan.

Código
  1. /* Conexion a base de datos
  2.    bla bla bla blab  */
  3. $query = "SELECT * FROM juegos";
  4. ....
  5.  
  6. /* Supongamos que la variable que tiene el resultado de la query se llama $row */
  7. // Primero toca quitar el serialize a lo que hemos sacado. Para ello unserialize().
  8. $teclas = unserialize($row['teclas']);
  9. $acciones = unserialize($row['acciones']);
  10. // Ahora ya tenemos metidos en un array las teclas y las acciones. Toca mostrarlos en una tabla
  11. echo '<table><tr><th>Tecla</th><th>Accion</th></tr>';
  12. // Queremos tener el index, para obtener la accion que corresponde a la tecla.
  13. foreach($teclas as $index=>$tecla){
  14.   echo '<tr><td>'.$tecla.'</td><td>'.$acciones[$index].'</td></tr>';
  15. }
  16. // cerramos tabla y nos vamos :P
  17. echo '</table>';

(http://i.elhacker.net/i?i=Mm9efzQ5fonmfUTwbKLFP2Vo) (http://i.elhacker.net/d?i=Mm9efzQ5fonmfUTwbKLFP2Vo)

Consejos:
   1. Busca tutoriales sobre REGEX, te va a ayudar mucho.
   2. Utiliza MYSQLI (http://php.net/manual/en/book.mysqli.php) en vez e MYSQL. Esta ultima esta marcada como obsoleta y sera eliminada.
   3. Este codigo NO ES SEGURO. Te lo he dejado como muestra.. deberas aplicar los correspondientes filtros antes de guardarlo en la bd.
   4. Si Chuck Norris existe que me de una hostia contra el tecla sdosaifjdioas fjsaofpjsaiofhsadfpsfj


Saludos espero que te sirva.


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 19:50 pm
LOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOLOL y LOL!

Tremendo, eres tremendo, joder macho, tu eres bueno eh? Voy a ver los codigos y ahora te comento es que estoy haciendo vídeos. xD

---

Y que cambios tengo que hacer? xDDDDD No entiendo, nunca entendi eso de las filtraciones e inyecciones mysql, que sesupone que algún gracioso puede ver poner un script que borre toda la body con una cookie? Que vaaa! Si solo yo tengo acceso al formulario, bueno lo voy a restringir xD



Ya le he estado hechando un vistazo a tu code, y bueno lo primero que tiene algunos bugs en lo de clonar nodos, he hice mi propia funcón que por cierto ya encontré:

Código
  1. var orden=1;
  2. function clonarNodos()
  3. {
  4.  var id=document.getElementById("teclas2");
  5.  var nuevos=id.cloneNode(true);
  6.  nuevos.style.id='enlaces'+orden;
  7.  orden++;
  8.  id=document.getElementById("teclas");
  9.  id.appendChild(nuevos);
  10. }

Código:
<b>Controles:</b><br>

<input type="button" value="A&ntilde;adir tecla" onclick="clonarNodos();" />
   <div style="display:none;"><div id="teclas2">
      <i>Tecla: </i><input type="text" name="tecla[]" /> - <i>Acci&oacute;n:</i><input type="text" name="accion[]" /><br>
   </div></div>
   <div id="teclas">
      <i>Tecla: </i><input type="text" name="tecla[]" /> - <i>Acci&oacute;n:</i><input type="text" name="accion[]" /><br>
   </div>

Luego, he estado viendo lo de la bd y mira lo que pasa:

(http://i.imgur.com/eFtmqKc.png)

Yo creo que lo alinea verticalmente el serialize en vez de meterlo horizontalmente XD Es un fail XD No he tocado nada de nada. Solo he hecho los cambios que tu dijistes.  :-\


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 21:42 pm
Citar
creo que lo alinea verticalmente el serialize en vez de meterlo horizontalmente

Eh ? A que te refieres ? Yo no veo ningún fallo ahí -.-

PD:
Citar
tiene algunos bugs en lo de clonar nodos

Si te fijas, no clona nodos. Reescribe el html agregando otra columna mas =)

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 21:49 pm
Eh ? A que te refieres ? Yo no veo ningún fallo ahí -.-

Pues a mi me carga el este verticalmente, no me lo researializa bien...  :silbar:

Sobre lo del PD: es más util si vás añadiendo xD

PD: Si quieres echarle una ojeada:

http://pastebin.com/f80EM1wn (http://pastebin.com/f80EM1wn) - Formulario.php
http://pastebin.com/xUU3DdnD (http://pastebin.com/xUU3DdnD) - Envia.php

PD: Como soy tan retarded le he cambiado los nombres xDD


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 21:51 pm
xD Sigues sin explicarte. No los carga verticalmente. Los carga según el orden en el que fueron introducidos. Y serialize y unserialize no tienen nada que ver con eso o.O

Citar
Sobre lo del PD: es más util si vás añadiendo xD

Ya te dije que era un ejemplo xD

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 21:56 pm
A ver ya te mande los links del php para que les heches un ojo, pero yo creo que están bien...

Me explico:

Cuando voy a la base de datos, solo coje un valor yel valor que coje, lo pone verticalmente por cada letra en un <tr> y <td>. Es super raro. xD


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 22:00 pm
Eso es lo que tiene que hacer  :rolleyes: Si miras bien, cuando te mostre la funcion tecla2() en un comentario he puesto:
Citar
// Si es una letra o numero de 1 caracter de logitud, se le añadira <div class="tecla">

Es como esta diseñada para funcionar la funcion  :silbar: y no tiene nada que ver con serialize... mas abajo en donde imprimo la tabla lo puedes cambiar...

PD: Solo por curiosidad.. estas estudiando el codigo o haces copy/paste ?

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 22:10 pm
A ver, ahora mismo estoy viendo los bugs mas visibles, ya después me lo aprenderé xD

Pero si estamos hablando de la accion no de la tecla, no tiene que hacer eso xDDD
Además no que le pasa a la tecla que a veces me sale desconocida XDDDDD

Lo puedes probar en: http://ikillcraft.a0001.net/formulario.php

Un saludo. xD


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 22:15 pm
Te saldra "desconocida" Si la letra es de mas de 1 carácter, no es una de las teclas (espacio|alt etc..) o no es una letra/numero de A-Z o 0-9 (las letras con acentos no son reconocidas pero las puedes agregar).

La función de la acción (reem()) no tengo ni pt idea de lo que hace porque no lo has puesto y no se como funciona asi que ahi no te puedo ayudar. Si has visto la imagen que he dejado en el post veras que funciona bien =)

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 22:20 pm
Entonces, porque a mi las acciones se me muestran así?...

Reem lo que hace es esto:

Código
  1. function reem($texto1) {
  2.  
  3. //Rememplazamos caracteres especiales latinos minusculas
  4. $find = array('á', 'é', 'í', 'ó', 'ú', 'ñ', '\"', '€', 'ü', 'Á', 'É', 'Í', 'Ó', 'Ú', 'Ñ', 'Ü', 'ç', 'Ç', '¿', '¡');
  5. $repl = array('&aacute;', '&eacute;', '&iacute;', '&oacute;', '&uacute;', '&ntilde;', '&quot;', '&euro;', '&uuml;', '&Aacute;', '&Eacute;', '&Iacute;', '&Oacute;', '&Uacute;', '&Ntilde;', '&Uuml;', '&ccedil;', '&Ccedil;', '&#38;#191;', '&#38;#161;');
  6. $texto1 = str_replace($find, $repl, $texto1);
  7.  
  8. return $texto1;
  9.  
  10. }

xD Un saludo.



Ya se porque me sale desconocida, porque como soy gilipollas integral y no leo nada, pensaba que la tecla del espacio era space XD

Un saludo.



Sisisisisisisi!!! Yo mando cojones xD Se te olvido poner un $acciones[], no se si lo hicites a posta, pero bueno xD Estos detalles nunca se me escapan xD


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 5 Abril 2013, 22:44 pm
ja, fallo tonto. Se me olvido agregarle los [] en esta linea

Código
  1. /* Lo mismo con las acciones.. */
  2. foreach($_POST['accion'] as $accion){
  3.   $acciones[] = reem($accion);
  4. }

Así debería funcionar =).


Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 5 Abril 2013, 22:50 pm
LOL! Me di cuenta antes de ver tu mensaje, te lo juro XDDDDD mira el edit



Bueno, pues, xD Te puedo preguntar más dudas que tengo?

http://www.taringa.net/posts/hazlo-tu-mismo/10701668/Sistema-de-comentarios-con-mysql.html

Eso es global para una id, o funciona con todas? Es decir, que si me meto a id?=1 me van a salir los mismos si me meto id?=2, o me van a salir, los de la id 2?



Tengo otra duda, quiero por ejemplo poder poner: 1 - 9 para indicar que ahi otros items, o por ejemplo poder poner flechas enter, que funcione como dos y que no salga desconocido :P

He estado leyendo esto: http://weblogtoolscollection.com/regex/regex.php

Pero ni idea xD Voy a probar una cosa, pero es que no se ni como separarlo...



He probado esto: ,'/^([[0-9] - [0-9]]{1})$/i', pero nada XD
Necesito ayuda de la buena XD



Citar
function tecla2($cadena) {
   // Si es una letra o numero de 1 caracter de logitud, se le añadira <div class="tecla">
   // Pero si coincide con las palabras flechas,enter etc... se le añadira <img src="" />
   $buscarRegex = array('/^([A-ZñÑ0-9]{1})$/i','/^(flechas|enter|control|alt|espacio|der|izq|mover|shift|letras)$/i','/^([0-9]{1} - [0-9]{2})$/i');
   $reemplazo = array('<div class="tecla">$1</div>','<img src="ico/$1.png" alt="tecla-$1" />', '<div class="tecla">$1</div> - <div class="tecla">$2</div>');
   $mag = preg_replace($buscarRegex, $reemplazo, $cadena,-1,$contador);
   // Si las sustituciones son menores a 1, significa que no se ha encontrado el patrón.
   if($contador <= 6){return $mag;}else{return 'desconocida';}

}
Ya lo he editado un poco y parece que funciona, pero no termina de cuadrar xD


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 6 Abril 2013, 20:39 pm
Bump, oye monkey ayudame con el code del regex plz ;)


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 29 Abril 2013, 16:11 pm
Bueno, pues como ya te he contado he estado con un problema del SSI de SMF, pero me harté y ahora estoy con el code que me distes al principio, pero se me han olvidado un montón de cosas...

Código
  1. // Games go here
  2.  
  3. $query2 = "SELECT linkjuego,tipo,ancho,alto,code FROM juegos";
  4. $result2 = mysql_query($query2) or die(mysql_error());
  5.  
  6. while($rs=mysql_fetch_assoc($result2)) {
  7. $tipo_juego=$rs['tipo_juego'];
  8.  
  9. // Comprobamos que tipo de juego es:
  10. if($tipo_juego==='unity'){
  11.   echo '<object blablalbalbalblalba src="'.$rs['link_juego'].'" blablabla></object>';
  12. } elseif($tipo_juego==='flash'){
  13.   echo '<object flash blablalbalbalblalba src="'.$rs['link_juego'].'" blablabla></object>';
  14. } elseif($tipo_juego==='iframe'){
  15.   echo '<iframe src="'.$rs['link_juego'].'" bla blablab lba></iframe>';
  16. } else {
  17.   echo 'Tipo de juego desconocido. Link:'.$rs['link_juego'];
  18. }
  19.  
  20. }
  21.  



Igualmente, necesito ayuda con el Regex...
Tengo este codigo pero no se pone bien:

Código
  1. function tecla2($cadena) {
  2.   // Si es una letra o numero de 1 caracter de logitud, se le añadira <div class="tecla">
  3.   // Pero si coincide con las palabras flechas,enter etc... se le añadira <img src="" />
  4.   $buscarRegex = array('/^([A-ZñÑ0-9]{1})$/i','/^(flechas|enter|control|alt|espacio|der|izq|mover|shift|letras|letrasflechas)$/i','/^([0-9]) - ([0-9])$/i');
  5.   $reemplazo = array('<div class="tecla">$1</div>','<img src="ico/$1.png" alt="tecla-$1" />', '<span class="tecla">$1</span> - <span class="tecla">$2</span>');
  6.   $mag = preg_replace($buscarRegex, $reemplazo, $cadena,-1,$contador);
  7.   // Si las sustituciones son menores a 1, significa que no se ha encontrado el patrón.
  8.   if($contador <= 6){return $mag;}else{return 'desconocida';}
  9. }

Un saludo.


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: #!drvy en 29 Abril 2013, 23:50 pm
Pero di lo que falla... con "no se pone bien" que quieres decir ? xD

Saludos


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 30 Abril 2013, 07:41 am
Pues que si tu pones 1 - 2

sale <span class="tecla">1</span> - <span class="tecla">2</span>

Pero los demas campos se desvarían, pruebalo en http://ikillcraft.a0001.net/formulario.php
y http://ikillcraft.a0001.net/game.php?id=x

Si es que va MySQL que desde ayer PHPMyAdmin tiene un bucle de redireccionamiento.  :silbar:


Título: Re: Problema con javascript: Document.write me tiene mania!!!!!
Publicado por: z3nth10n en 7 Mayo 2013, 23:00 pm
Hola? Dryv me puedes ayudar con el code de Regex?
Mira lo que me sale:

Citar
Notice: unserialize() [function.unserialize]: Error at offset 82 of 102 bytes in /home/vol12/eshost.es/eshos_12426320/ikillcraft.a0001.net/htdocs/game.php on line 72

Un saludo. ;)



El codigo del juego lo he arreglado, simplemente estaba llamando a una fila que no exisitia. :P