2012-02-17 26 views
5

Por ejemplo, supongamos que tiene un bucle que produce un botón cada vez que se repite. Entonces, si el bucle se ejecuta cinco veces, habrá 5 botones. Ahora digo que tengo una variable como $ num que cambiará cada vez que el bucle se repita. ¿Hay alguna manera de que cada botón pase su $ num individual cuando se hace clic en el botón?¿Hay alguna manera de pasar una variable php a otra página usando un botón (html/php)?

$num = 0; 
while(...){ 
    //want this to send $num via POST or GET to xyz.php 
    echo '<button type="submit" value="3" name="editId">Remove</button>'; 
    $num++;//$num changes every instance of the loop 
} 

Respuesta

1

El botón de valor de nombre & debe presentarse con el formulario.

Por ejemplo:

<?php print_r($_POST); ?> 

<form action="" method="post"> 
    <button type="submit" name="button" value="value">Button</button> 
</form> 

Cuando se hace clic en el botón "botón", se presentará la forma y

Array ([button] => value) 

se dará salida por encima de la forma.

Aplicando esto a su situación, se podría utilizar algo como:

$num = 0; 
while(...){ 
    // Set $num as the value of each button 
    echo "<button type='submit' value='{$num}' name='editId'>Remove</button>"; 
    $num++;//$num changes every instance of the loop 
} 
0

Ya casi ha terminado:

$num = 0; while(...){  //want this to send $num via POST or GET to xyz.php 
echo '<button type="submit" value="'.$num.'" name="editId">Remove</button>';  
$num++;//$num changes every instance of the loop 
} 
+0

@highway of life, ahora que es gracioso. Por un segundo, pensé que copiabas/pegabas mi respuesta. :) Supongo que realmente respondiste primero. Y creo que ambos asumimos que OP estaba poniendo estos en un

TecBrat

+0

LOL !! Eso es muy gracioso ... pensé por un momento que mi respuesta se publicó dos veces de alguna manera, ya que ambos usamos el mismo formato para concatenar. –

4

La forma más fácil es crear un <form> que rodea a cada una de las etiquetas <button> :

$num = 0; 
while(...){ 
    //want this to send $num via POST or GET to xyz.php 
    echo '<form method="post" action="xyz.php">'; 
    // Pass $num into the form value 
    echo '<button type="submit" value="' . $num. '" name="editId">Remove</button>'; 
    echo '</form>' 
    $num++; 
} 

Cualquiera que sea cliqueado se pasará a xyz.php como $_POST['editId'].

Si bien este método crea una forma diferente para cada botón, existen otras formas de hacerlo mediante JavaScript que utilizaría un único formulario y asignaría el valor a una entrada oculta en función del botón en el que se hizo clic. Si solo se envía un valor de entrada, la opción múltiple de <form> es probablemente la más fácil de codificar.

+0

El problema al hacer esto es que terminarías con 5 (o más) etiquetas '' que no son necesarias. –

+0

¡Gracias, esto es lo que estaba buscando! –

+0

No se necesitan formularios múltiples. Los formularios con múltiples elementos de 'botón' pasarán el nombre/valor de cualquier botón que se haya presionado para enviar el formulario. –

0

Estás muy cerca. Solo inserte $num en el atributo value de su botón.

$num = 0; 
while(...){ 
    //want this to send $num via POST or GET to xyz.php 
    echo '<button type="submit" value="'.$num.'" name="editId">Remove</button>'; 
    $num++;//$num changes every instance of the loop 
} 

Cuando se rodea este bloque de código en <form> etiquetas, haga clic en el botón [ Remove ] enviaría el valor de $num a: $_POST['editId'].

Cuestiones relacionadas