Foros del Web » Programando para Internet » PHP »

PHP lista/menu

Estas en el tema de PHP lista/menu en el foro de PHP en Foros del Web. Tengo el siguiente codigo en una pagina PHP. Código: include('ConexionBD.php'); $result=mysql_query("select nombre from empresa"); //Llenado de la lista/menu. if ($row = mysql_fetch_array($result)){ echo "Empresa: "; ...
  #1 (permalink)  
Antiguo 29/06/2012, 14:01
 
Fecha de Ingreso: junio-2012
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
Pregunta PHP lista/menu

Tengo el siguiente codigo en una pagina PHP.
Código:
include('ConexionBD.php');

$result=mysql_query("select nombre from empresa");

//Llenado de la lista/menu.
if ($row = mysql_fetch_array($result)){ 
echo "Empresa: ";
echo '<select name= "nombreDelCombo">';

do 	{ 
       echo '<option value= "'.$row["id_empresa"].'">'.$row["nombre"].'</option>';
	} while ($row = mysql_fetch_array($result)); 
echo '</select>';
}
lo que hace es solamente llenar la lista/menu con el nombre de las empresas, esta lista la necesito porque cuando seleccione un nombre de empresa en mi tabla, distinta a la tabla empresa la tabla se llama pub_emplugar, tiene que guardarse el el id_empresa en la table pub_emplugar. Queria hacerlo de esta forma pero me da error:
Código:
$select_id_empresa="select id_empresa where nombre='$row["nombre"]'";
							$resu_select_id_emrpesa=mysql_query($select_id_empresa) or die(mysql_e									rror());
							
$sql="insert into pub_emplugar(id_empresa, lugar, fecha_inicio, fecha_fin) values ('$resu_select_id_emrpesa','$lugar','$fecha_inicio'									,'$fecha_fin')";
mysql_query($sql) or die									(mysql_error());
echo "Datos ingresados correctamente";
Nose si estoy haciendo bien, espero me puedan ayudar o guiar con algo que pueda hacer. Saludos[/HIGHLIGHT]
  #2 (permalink)  
Antiguo 29/06/2012, 20:25
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: PHP lista/menu

1ero que nada, se hace con un while no con un if, el if se ejecuta solo una vez, el while se ejecuta hasta que la condicion sea FALSA.
El problema es que vos no presisas mostrar 1 <select name="nombreDelCombo"> por cada nombre de empresa que tenes, presisas mostrar 1 '<option value= "'.$row["id_empresa"].'">'.$row["nombre"].'</option>'; , por eso ese select name="nombreDelCombo" no va dentro del bucle ( while ) sino por cada nombre de empresa que recuperas con la consulta SQL te crea un select con un option y vos lo que queres es un select solo con varios options que contengan los nombres.

Tenrias que sacar ese select del while y dejarlo afuera y solo dejar los options dentro del while para que eso sea lo que te genere unicamente como queres.

Código PHP:
Ver original
  1. include('ConexionBD.php');
  2.  
  3. $result=mysql_query("select nombre from empresa");
  4. echo '<select name= "nombreDelCombo">';
  5.  
  6. //Llenado de la lista/menu Y ACA SI PONES EL WHILE CON LOS OPTIONS
  7. while ($row = mysql_fetch_array($result)){
  8. echo '<option value= "'.$row["id_empresa"].'">'.$row["nombre"].'</option>';
  9. }
  10. echo "</select>

Otra cosa, veo que en el option queres que como value tengas el id de empresa, pero en tu consulta SOLO LLAMAS EL NOMBRE, tendrias que llamar el id tambien, algo asi.

Código PHP:
Ver original
  1. $result=mysql_query("select id_empresa, nombre from empresa");

El codigo de abajo no lo mire, te corregi algunas cosas del 1ero nomas.
  #3 (permalink)  
Antiguo 30/06/2012, 01:42
 
Fecha de Ingreso: junio-2012
Mensajes: 29
Antigüedad: 11 años, 10 meses
Puntos: 0
Respuesta: PHP lista/menu

Muchas gracias por la ayuda, al final si me corrio el codigo y me aclaro varias dudas que tenia, MUCHISIMAS GRACIAS rodrigo791.
Al final mi codigo quedo asi:
Código PHP:
Ver original
  1. <body>
  2. <form id="form1" name="form1" method="post" action="" autocomplete="off">
  3. <center>Empresa
  4. </center>
  5.  
  6. <p>
  7. <?php
  8. include('ConexionBD.php');
  9.  
  10. $result=mysql_query("select id_empresa, nombre from empresa");
  11. echo "Empresa: ";
  12. echo '<select name= "nombreDelCombo" id="nombreDelCombo">';
  13. [B]$var=$_POST['nombreDelCombo'];[/B]
  14. //Llenado de la lista/menu Y ACA SI PONES EL WHILE CON LOS OPTIONS
  15. while ($row = mysql_fetch_array($result)){
  16. echo '<option value= "'.$row["id_empresa"].'">'.$row["nombre"].'</option>';
  17. }
  18.  
  19. echo "</select>";
  20.  
  21. [B]$sql="insert into pub_emplugar (id_empresa) values ('$var')";
  22. mysql_query($sql) or die(mysql_error());[/B]
  23.  
  24. ?>
  25. <p>
  26.   <input type="submit" name="enviar" id="enviar" value="Enviar" />
  27. </form>
  28. </body>

Las lineas que estan con negritas yo las agregue porque luego de que la lista menu se despliga con los nombres, lo que necesito es guardas el codigo en una tabla de mi base de datos, al hacer el insert me guarda el id, pero cuando cierro la ventan y vuelvo a cargar la pagina guarda el id y un 0 extra que nose de donde sale.
Espero me puedas ayudar, otra vez :D.
Muchas gracias por responder
  #4 (permalink)  
Antiguo 30/06/2012, 13:58
Avatar de rodrigo791  
Fecha de Ingreso: noviembre-2009
Ubicación: Uruguay
Mensajes: 1.339
Antigüedad: 14 años, 5 meses
Puntos: 168
Respuesta: PHP lista/menu

De nada, para eso es esto, una comunidad.
Otra cosa, cuando pones [B] supongo que haces referencia a la etiqueta html, pues eso tiene que ir dentro de un echo, sino php no lo puede interpretar y pasarlo a html como deberia.
Si queres que salga en negrita algo desde php tenes que hacerlo asi:
Código PHP:
Ver original
  1. echo "[B]hola soy un texto en negrita[/B]";
Acordate que todo lo que se le devuelva al cliente en html tiene que estar dentro de etiquetas, nada puede estar suelto, si haces un echo "hola"; funciona bien, pero para posicionar mejor nuestra pagina no deben haber elementos sueltos sin estar dentro de etiquetas, aunque sea hacelo asi echo "<span>hola</span>";

Etiquetas: mysql, sql, tabla
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 03:38.