confundido con la llamada a la función php/javascript

Tengo una función para generar 13 enteros aleatorios entre un cierto rango sin duplicados.

No estoy seguro de que la siguiente parte sea correcta, pero tengo un botón que en $_POST se enviará a mi script php que genera 1 imagen de la base de datos a la vez. Lo necesito para enviar los números aleatorios de mi función generate_numbers, los 13 de ellos., porque al final quiero mostrar 13 imágenes diferentes con 1 clic del botón. ¿Cómo abordo este problema? ¿Necesito una cola?

**Button to submit to PHP form named display.php**
<input type="submit" name"display" value=generate_numbers()>

  var generate_numbers = function()
     {

        var i, j;
        var array=[];
        for(i=0; i < 13; i++)
        {
            array[i] = Math.floor(Math.random()*14)+16);
                for(j=0;j<i;j++)
                {
                    while(array[i]==array[j])
                    {
                        array[i]= Math.floor(Math.random()*14)+16);
                    }

                }

        return array[i]; 
     }

preguntado el 29 de julio de 12 a las 08:07

2 Respuestas

La página con el formulario.

<!DOCTYPE html>
<html>
<head>
    <title></title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    <script type="text/javascript">

        var rndNums = new Array(16,17,18,19,20,21,22,23,24,25,26,27,28);
        var generate_numbers = function()
        {
            for(var i=0; i < 13; i++)
            {
                var idx = Math.floor(Math.random()*rndNums.length);
                var rndNum = rndNums[idx];
                rndNums[idx] = rndNums[rndNums.length - 1];
                rndNums.pop();
                document.getElementsByName("nums[]").item(i).value=rndNum;
            }
        }

    </script>
</head>
<body>
    <form id="numberForm" action="display.php" method="POST">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
        <input type="hidden" name="nums[]">
    </form>
    <button onclick="generate_numbers();document.getElementById('numberForm').submit()">submit</button>
</body>
</html>

Y en el lado de php el "display.php":

<?php
    $nums = $_POST['nums']; // array
    foreach($nums as $key => $val)
        echo 'nums['.$key.']='.$val."<br>\n";
    // ...
?>

Respondido 29 Jul 12, 09:07

Muchas gracias por el excelente código, lo revisaré un poco más, pero por ahora recibo dos errores Aviso: índice indefinido: números Advertencia: argumento no válido proporcionado para foreach() - Socavar2k

Puede usar un bucle foreach de php para recorrer cada uno de los números. Algo como esto en su archivo PHP:

$images = array();

foreach ($POST['display'] as $num) {
  $img_from_number = get_image_from_number($num);
  $images[] = $img_from_number;
}

// code to display images on page
// or for JSON return $images

function get_image_from_number($num)
  // code here
}

Si está haciendo un formulario AJAX, puede simplemente recorrer la matriz devuelta para crear elementos de imagen en la página.

Respondido 29 Jul 12, 08:07

el PHP que genera la imagen está tratando con datos binarios, ¿puedo seguir usando este ciclo interno? - Socavar2k

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.