Recuperar id de un <select><option>//php//html
Resuelto
the_jb
Mensajes publicados
731
Estado
Miembro
-
KIKOFF -
KIKOFF -
Hola, tengo un pequeño problema con la recuperación de variables, muy simple, pero me estoy rompiendo la cabeza para encontrar dónde está el problema...
Primero abro mi formulario:
echo "<form action='modif.php' method='POST'>";
Recupero datos de mi base de datos:
$requete="select * from tarif";
$resultat=mysql_query($requete)
Después hago:
echo "<select name='id_prix'>
while($rows=mysql_fetch_array($resultat))
{
echo "<option value='" . $rows['id_prix'] . "'>" . $rows['desc'] . " - " . $rows['prix'] . "</option>";
}
echo "</select>";
de forma simple. Esto funciona porque realmente me recupera todos los precios, pero me gustaría poder modificar el precio de un artículo.
Entonces añadí:
echo "<input type='text' name='prix'><input type='submit' name='modif' id='modif' value='Modificar'></form>";
Y cuando hago clic en modificar, no pasa nada... he hecho un echo $_POST['id_prix'] y $_POST['prix']... me muestra solo el precio. Y cuando hago un $rows['id_prix'] en mi <option> me los muestra...
En el evento submit realizo una consulta simple:
$sql="UPDATE 'tarif' SET prix='$_POST['prix']' WHERE id_prix='$_POST['id_prix']'";
$result=mysql_query($sql);
Estoy cerca, lo siento, pero... ¿tendrían una mejor solución para modificar el precio de un artículo?
Gracias por su ayuda.
Primero abro mi formulario:
echo "<form action='modif.php' method='POST'>";
Recupero datos de mi base de datos:
$requete="select * from tarif";
$resultat=mysql_query($requete)
Después hago:
echo "<select name='id_prix'>
while($rows=mysql_fetch_array($resultat))
{
echo "<option value='" . $rows['id_prix'] . "'>" . $rows['desc'] . " - " . $rows['prix'] . "</option>";
}
echo "</select>";
de forma simple. Esto funciona porque realmente me recupera todos los precios, pero me gustaría poder modificar el precio de un artículo.
Entonces añadí:
echo "<input type='text' name='prix'><input type='submit' name='modif' id='modif' value='Modificar'></form>";
Y cuando hago clic en modificar, no pasa nada... he hecho un echo $_POST['id_prix'] y $_POST['prix']... me muestra solo el precio. Y cuando hago un $rows['id_prix'] en mi <option> me los muestra...
En el evento submit realizo una consulta simple:
$sql="UPDATE 'tarif' SET prix='$_POST['prix']' WHERE id_prix='$_POST['id_prix']'";
$result=mysql_query($sql);
Estoy cerca, lo siento, pero... ¿tendrían una mejor solución para modificar el precio de un artículo?
Gracias por su ayuda.
11 respuestas
$_POST['id_prix'] devuelve $rows['id_prix']
$_POST['prix'] no puede devolver nada porque está fuera del bucle while y no contiene ningún valor (value).
La idea sería tal vez agregar el precio junto al id devuelto del value del bucle, realizar una recarga de la página al seleccionar la lista para mostrar el campo de modificación y validación, etc...
En resumen, no probado y solo para la idea:
--
¡Una pregunta estúpida genera una respuesta estúpida!
¡Una pregunta mal formulada genera una respuesta aleatoria!
$_POST['prix'] no puede devolver nada porque está fuera del bucle while y no contiene ningún valor (value).
La idea sería tal vez agregar el precio junto al id devuelto del value del bucle, realizar una recarga de la página al seleccionar la lista para mostrar el campo de modificación y validación, etc...
En resumen, no probado y solo para la idea:
<form action="modif.php" method="POST"> <?php $requete="select * from tarif"; $resultat=mysql_query($requete); //recarga de la página al seleccionar echo '<select name="id_prix" onchange="javascript:submit(this)">'; while($rows=mysql_fetch_array($resultat)) { //inserción del id + precio en el value separado por un guión echo '<option value="'.$rows['id_prix'].'-'.$rows['prix'].'">'.$rows['desc'].' - '.$rows['prix'].'</option>'; } echo '</select>'; //al seleccionar de la lista if(isset($_POST['id_prix'])){ //se realiza un explode del value para separar el id del precio $explore = explode('-',$_POST['id_prix']); //$explore[0] = id_prix //$explore[1] = precio //se coloca todo en campos echo '<input type="text" name="id" value="'.$explore[0].'"> <input type="text" name="prix" value="'.$explore[1].'"> <input type="submit" name="modif" id="modif" value="Modificar">'; } echo '</form>'; //si la acción es validar if(isset($_POST['modif'])){ $sql="UPDATE tarif SET prix=$_POST['prix'] WHERE id_prix=$_POST['id']"; $result=mysql_query($sql); } ?> --
¡Una pregunta estúpida genera una respuesta estúpida!
¡Una pregunta mal formulada genera una respuesta aleatoria!
La idea de la entrega del premio relacionada con el artículo ya estaba hecha, pero no la había añadido a mi publicación. De todos modos, este me hace exactamente lo mismo: al momento de la selección, siempre vuelve al primer valor, sin embargo, muestra el precio correcto del artículo seleccionado...
todavía no recupera el valor correspondiente (el id correspondiente)...
todavía no recupera el valor correspondiente (el id correspondiente)...
Increíble... su formulario en versión simplificada sobre la base de mi última publicación:
--
¡Una pregunta estúpida engendra una respuesta estúpida!
¡Una pregunta mal formulada engendra una respuesta aleatoria!
<form action="#" method="POST"> <select name="id_prix" onchange="javascript:submit(this)"> <option value="1-100" <?php if($_POST['id_prix']=='1-100'){ echo "selected='selected'";}?>>100</option> <option value="2-200" <?php if($_POST['id_prix']=='2-200'){ echo "selected='selected'";}?>>200</option> <option value="3-300" <?php if($_POST['id_prix']=='3-300'){ echo "selected='selected'";}?>>300</option> </select> <?php //a la selección de la lista if(isset($_POST['id_prix'])){ echo 'Value = '.$_POST['id_prix'].''; //realizamos un explode del valor para separar el id del precio $explore = explode('-',$_POST['id_prix']); echo '<pre>'; print_r($explore); echo '</pre>'; //colocamos todo en campos echo 'id:<input type="text" name="id" value="'.$explore[0].'" READONLY><br/> precio:<input type="text" name="precio" value="'.$explore[1].'"><br/> <input type="submit" name="modif" id="modif" value="Modificar">'; } ?> </form> <?php //si acción de validar if(isset($_POST['modif'])){ echo 'id='.$_POST['id'].'<br/>precio='.$_POST['precio'].''; /*aquí tenemos por lo tanto la actualización con redirección a la misma página para que la lista tenga en cuenta la modificación del precio*/ } ?> --
¡Una pregunta estúpida engendra una respuesta estúpida!
¡Una pregunta mal formulada engendra una respuesta aleatoria!
No entiendo, sin embargo, mi ID se muestra bien en mi input... He probado mi consulta en phpmyadmin y funciona perfectamente... Excepto que mi selección siempre vuelve por defecto a 0 después del evento submit
¿No sé cuál es el problema?
¿No sé cuál es el problema?
En sus opciones de su lista, se necesita un elemento de comparación para mantener la selección "selected='selected'"; de lo contrario, en cada envío, la lista regresará por defecto al inicio.
--
¡Una pregunta estúpida genera una respuesta estúpida!
¡Una pregunta mal formulada genera una respuesta aleatoria!
<option value="valeur" <?php if($_POST['id_prix']=='valeur'){ echo "selected='selected'";}?>>***</option> --
¡Una pregunta estúpida genera una respuesta estúpida!
¡Una pregunta mal formulada genera una respuesta aleatoria!
oww... <option value=valor ?? sí, bueno "echo '<option value="'.$rows['id_prix'].'" devuelve un valor diferente cada vez, en este caso 1,2,3,... un simple $rows['id_prix'] colocado en la opción muestra esto. así que es cierto que cada id es diferente. El asunto es por qué no quiere guardarlo. Sin embargo, en el evento submit le digo que muestre el id_prix y me lo muestra...
Voy a intentar lo que me has escrito arriba para poder mantener la opción seleccionada.
Voy a intentar lo que me has escrito arriba para poder mantener la opción seleccionada.
Debería dar algo como esto :
--
¡Una pregunta estúpida genera una respuesta estúpida!
¡Una pregunta mal formulada genera una respuesta aleatoria!
echo '<option value="'.$rows['id_prix'].'-'.$rows['prix'].'"'; if($_POST['id_prix']==''.$rows['id_prix'].'-'.$rows['prix'].''){ echo "selected='selected'";} echo '>'.$rows['desc'].' - '.$rows['prix'].'</option>'; --
¡Una pregunta estúpida genera una respuesta estúpida!
¡Una pregunta mal formulada genera una respuesta aleatoria!
Nunca he visto tal incremento y para un código simple, pero además de estar bien pensado, está óptimamente escrito. Bravo, eso es de un programador, me dejas impresionado, dominas este lenguaje
¿Pero dónde aprendiste esta sintaxis? ¿Qué formación? ¿Autodidacta?
Me gustaría ponerme en contacto contigo y mostrarte algunas líneas de código. Pagaré si lo deseas
Christophe Diebold, Alsacia 68, dirección d.christophe68@yahoo o hotmail.fr. Gracias, sería realmente genial ponerme en contacto contigo, espero.
¿Pero dónde aprendiste esta sintaxis? ¿Qué formación? ¿Autodidacta?
Me gustaría ponerme en contacto contigo y mostrarte algunas líneas de código. Pagaré si lo deseas
Christophe Diebold, Alsacia 68, dirección d.christophe68@yahoo o hotmail.fr. Gracias, sería realmente genial ponerme en contacto contigo, espero.