Foros del Web » Programando para Internet » PHP »

un combo con origen sql

Estas en el tema de un combo con origen sql en el foro de PHP en Foros del Web. hola, buenos días, me gustaría saber como se puede conseguir que un combo tome los valores de una consulta sql. os agradecería cualquier cometario por ...
  #1 (permalink)  
Antiguo 19/05/2005, 07:12
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años
Puntos: 0
un combo con origen sql

hola, buenos días,

me gustaría saber como se puede conseguir que un combo tome los valores de una consulta sql. os agradecería cualquier cometario por breve que sea y/o que me recomendéis algún sitio donde informarme.
__________________
Visita mi página web.Carlos Zapata Company
Visita mi blog.
Únete a mi lista de correo.
--------------------------------------------------
La identidad no es lo que fuimos, ni lo que creemos que somos; la identidad es cómo miramos la mundo.

José Luis Rodríguez Zapatero, actual presidente del Gobierno español.
  #2 (permalink)  
Antiguo 19/05/2005, 07:15
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Como es común... lee las FAQ. El funcionamiento es sencillo:
Código PHP:
// conectas, consultas.. etc
echo "<select name=\"... etc>";
while( 
$row=mysql_fetch_assoc($consulta)) {
     echo 
"<option value=\"".$row['campo']."\">".$row['campo']."</option>";
}
echo 
"</select>"
Si sabes de PHP y cómo hacer una consulta verás que resulta lógico.

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #3 (permalink)  
Antiguo 19/05/2005, 08:21
 
Fecha de Ingreso: agosto-2004
Mensajes: 95
Antigüedad: 19 años, 7 meses
Puntos: 2
En efecto, es como dice jam1138
aunque te recomiendo que trates de no pasarle código que no necesita ser interpretado al servidor. o sea, para que pasarle HTML al servidor si te lo va a devolver igual ...

conectas, consultas.. etc

Código PHP:
<select name="lista">
<?
while( $row=mysql_fetch_assoc($consulta)) { 
?>
<option value="<?=$row['campo']?>"><?=$row['campo']?></option>; 
<?}?>
</select>
Otra opción es crear la lista a partir de una array

Código PHP:
<?
$listaopciones
[1]="Opción 1";
$listaopciones[2]="Opción 2";
$listaopciones[3]="Opción 3";
?>

<select>
<option  value="NULL">Selecione</option>
<?
//Llenar lista con la opcion que tiene el value 2 seleccionada
LlenarLista($listaopciones,2)?>
</select>

<?
function LlenarLista($opciones,$seleccionado=NULL){
    foreach(
$opciones as $key => $value)
    {
        
$selected=($seleccionado == $key)?" selected ":"";
        
?>
        <option <?=$selected?> value="<?=$key?>"><?=$value?></option>
<?    
    
}
}
?>
__________________
Marco de Arica (Chile)
  #4 (permalink)  
Antiguo 31/05/2005, 06:16
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años
Puntos: 0
perdonad por tardar en contestar pero he adaptado vuestro código de esta manera

$sql2 = "select num_personal, num_personal from personal";

echo "<FORM ACTION='modi_per_confi.php' METHOD='POST'>";

echo "<TABLE BORDER=0>";

echo "<TR>";
echo "<TD>Número de personal:";
echo "<TD><INPUT TYPE='SELECT' NAME='num_personal_m' SIZE='12'>";
while( $row=mysql_fetch_assoc($sql2)) {
echo "<option value=".$row['num_personal'].">"
.$row'num_personal']."</option>";
}
echo "</select>";

echo "</TABLE>";

y me da este error

Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource in /home/public_html/base2/modificar/modieli_per.php on line 45

donde line 45 es
while( $row=mysql_fetch_assoc($sql2)) {

os agradecería cualquier comentario por breve que fuera.
__________________
Visita mi página web.Carlos Zapata Company
Visita mi blog.
Únete a mi lista de correo.
--------------------------------------------------
La identidad no es lo que fuimos, ni lo que creemos que somos; la identidad es cómo miramos la mundo.

José Luis Rodríguez Zapatero, actual presidente del Gobierno español.
  #5 (permalink)  
Antiguo 31/05/2005, 06:27
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
No estás haciendo la consulta (por favor procura iluminar el código):
Código PHP:
$query "select num_personal, num_personal from personal";

$ql2mysql_query($query) or die (mysql_error());

echo 
"<FORM ACTION='modi_per_confi.php' METHOD='POST'>";

echo 
"<TABLE BORDER=0>";

echo 
"<TR>";
echo 
"<TD>Número de personal:";
echo 
"<TD><INPUT TYPE='SELECT' NAME='num_personal_m' SIZE='12'>";
while( 
$row=mysql_fetch_assoc($sql2)) {
echo 
"<option value=".$row['num_personal'].">"
.$row'num_personal']."</option>";
}
echo 
"</select>";

echo 
"</TABLE>"
www.php.net/mysql_query Supongo antes te conectas y seleccionas Base de Datos... ... por si no :
www.php.net/mysql_connect
www.php.net/mysql_select_db
ó un connnect y www.php.net/mysql_db_query (ya no seleccionarías y ejecutarías por separado... pero por cuestión de ir identificando los procesos puede no ser recomendable).

__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"

Última edición por jam1138; 31/05/2005 a las 06:33
  #6 (permalink)  
Antiguo 01/06/2005, 03:15
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años
Puntos: 0
buenos días,
ahora me sale una lista de números, una cadena bastante larga, yo sospecho que se trata de todos los campos que pido en la consulta, se trata del campo id. no me aparece el control select en el formulario, en su lugar me aparece un control imput normal y a continuación los números.
os agradecería cualquier comentario por breve que fuera.
__________________
Visita mi página web.Carlos Zapata Company
Visita mi blog.
Únete a mi lista de correo.
--------------------------------------------------
La identidad no es lo que fuimos, ni lo que creemos que somos; la identidad es cómo miramos la mundo.

José Luis Rodríguez Zapatero, actual presidente del Gobierno español.
  #7 (permalink)  
Antiguo 01/06/2005, 09:11
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años
Puntos: 0
ya está solucionado

ya está solucionado, era solo una tontería de las mías, un equivocación en las etiquetas html.

de todas maneras no entiendo por qué tengo que poner esta línea

$query = "select num_personal, num_personal from personal";

en otras consultas no lo necesito y puedo verlas, en fin, como siempre os agradecería cualquier comentario por breve que sea o pista que pueda orientarme.
__________________
Visita mi página web.Carlos Zapata Company
Visita mi blog.
Únete a mi lista de correo.
--------------------------------------------------
La identidad no es lo que fuimos, ni lo que creemos que somos; la identidad es cómo miramos la mundo.

José Luis Rodríguez Zapatero, actual presidente del Gobierno español.
  #8 (permalink)  
Antiguo 01/06/2005, 16:22
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por navajito
no entiendo por qué tengo que poner esta línea

$query = "select num_personal, num_personal from personal";
... esa línea es tu sentencia SQL... ... ...

Sabrás que las Bases de Datos son aplicaciones INDEPENDIENTES y por lo tanto tienen su propio lenguaje (stándar) llamado SQL. El SQL se maneja a través de sentencias y a estas se les conoce como querys... son con estas sentencias/querys con las que manipularás tu Base de Datos (insetar, consultar, actualizar, borrar, crear... etc.).

Tu lo que haces con PHP es mandar a la Base de Datos esas querys (que ya se dijo su funcionamiento es independiente) gracias funciones como mysql_query() y mysql_db_query() --para MySQL, para otras Bases de Datos necesitarás otras funciones--. Si consultas esas funciones en la documentación oficial verás dónde colocar la sentencia a ser enviada...

Tu lo que haces con esa línea es asignarle como valor a la variable $query, la senetncia a ser enviada, así al ocupar tu función solo haces referencia a la variable aunque igual pudiste colocar la sentencia directamente a la función, quizá a eso te referías con que en otras consultas no necesitas esa línea...... no puedes referirte a otra cosa porque NECESARIAMENTE necesitas una query a enviar... osease, necesitas un:
SELECT campos FROM tabla [WHERE campo [= / < / > / <>/ LIKE '[%]valor[%]' ] ] [ ORDER BY campo [ ASC/DESC ] ] [ LIMIT inicio, fin]
* lo que está entre corchetes son atributos opcionales; esta query es solo para consultas

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #9 (permalink)  
Antiguo 02/06/2005, 06:38
 
Fecha de Ingreso: abril-2005
Ubicación: vivo donde puedo
Mensajes: 133
Antigüedad: 19 años
Puntos: 0
sí, creo que cuando dices

"aunque igual pudiste colocar la sentencia directamente a la función"

es lo que ha pasado.

gracias y hasta pronto.
__________________
Visita mi página web.Carlos Zapata Company
Visita mi blog.
Únete a mi lista de correo.
--------------------------------------------------
La identidad no es lo que fuimos, ni lo que creemos que somos; la identidad es cómo miramos la mundo.

José Luis Rodríguez Zapatero, actual presidente del Gobierno español.
  #10 (permalink)  
Antiguo 03/06/2005, 17:49
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
... jajaja... ya.. aprenderá a ser más breve entonces...

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
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 06:52.