Foros del Web » Programando para Internet » PHP »

Llenar combo con datos de una tabla

Estas en el tema de Llenar combo con datos de una tabla en el foro de PHP en Foros del Web. Saludos a todos nuevamente. Tengo dos inquietudes la primera, tengo en mi formulario de datos un combo que quisiera llenar con los datos de una ...
  #1 (permalink)  
Antiguo 19/06/2007, 10:45
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Llenar combo con datos de una tabla

Saludos a todos nuevamente.

Tengo dos inquietudes la primera, tengo en mi formulario de datos un combo que quisiera llenar con los datos de una tabla 'Materias', en este caso con el nombre de la materia. eso como primera inquietud. como segundo quisiera saber como hacer para que el usuario al seleccionar una materia del combo, el código de la misma aparesca en una caja de texto del formulario. La tabla esta hecha con MySQL.

Les agradesco su colaboración con este asunto y de antemano muchas gracias.
  #2 (permalink)  
Antiguo 19/06/2007, 11:12
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Para llenar el combo lo que haces es seleccionar via un query, luego ciclas por todos los resultados y vas creando tu combo ej:
Código PHP:
<select name="select">
<?php
$sql 
"SELECT codigo, materia FROM Materias";
$result mysql_query$sql );
$opt '<option value="%s">%s</option>';
while( 
$row mysql_fetch_array$result ) ) {
     echo 
sprintf$opt$row[0], $row[1] );
}
?>
</select>
Para lo segundo si el codigo esta como valor puedes agregarle al select que te actualize ej:
Código HTML:
<input type="text" name="codigo" id="codigo" />
<select onchange="document.getElementById('codigo').value=this.options[this.selectedIndex].value">

</select> 
Saludos.
  #3 (permalink)  
Antiguo 19/06/2007, 11:41
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

GatorV muchas gracias por tu colaboración.
  #4 (permalink)  
Antiguo 19/06/2007, 13:45
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

GatorV tengo un problema que cuando inserto un registro de estudiante y selecciono una materia del combo en la tabla donde deberia llenarse el campo nombre de materia se llena con el código igual que el campo código segui paso a paso el ejemplo de tu código.

Te agradesco tu colaboración.
  #5 (permalink)  
Antiguo 19/06/2007, 14:13
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

No entiendo tu duda.
  #6 (permalink)  
Antiguo 19/06/2007, 14:17
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re:Ayuda Urgente . Llenar combo con datos de una tabla

Tengo un problema llene un combo con los datos de una tabla llamada'Materias', pero el problema surge cuando intento llenar un registro nuevo selecciono una materia del combo y en una caja de texto me aparece el código de diche materia hasta hay todo bien, pero cuando hago el registro selecciono una materia, en el registro nuevo en el campo nombre de materia(Donde deberia aparecer la materia que yo seleccione del combo) me aparece el código de dicha materia mas no el nombre. estaré haciendo mal la insercción? como en toda consulta paso la variable con el atributo NAME = "Nommat" y esa es la que estoy insertando $Nommat pero no me funciona les agradesco me puedan ayudar aqui esta el código que utilizo:

Código PHP:
 <TD bordercolor="#009900"><select name="Nommat" onchange="document.getElementById('Codmat').value =                            this.options[this.selectedIndex].value">
          <?php
          
            
// ESTABLECIMIENTO DE LA CONEXIÓN
              
$conex mysql_connect("localhost""xxxx""xxxx"
                     or die (
"No se pudo realizar la conexión con la base de datos");
        
              
// SELECCIÓN DE LA BASE DATOS
              
mysql_select_db("xxxx"$conex);
            
              
//OBTENER LOS VALORES DE LAS FILAS
            
$sql "SELECT codmat, nommat FROM materias";
            
$resul mysql_query($sql$conex);
            
$opt '<option value = "%s">%s</option>';
            
            
//RECORRIDO DEL CURSOR
            
while($row mysql_fetch_array($resul))
            { 
            
                echo 
sprintf($opt$row[0], $row[1]);
               
            }
          
          
?>
            </select></TD>

Este código me lo compartieron aqui mismo. la llenada del combo funciona bien pero el problema esta en la insercción, les agradesco su colaboración Gracias.
  #7 (permalink)  
Antiguo 19/06/2007, 14:21
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Por defecto en todos los <select> cuando seleccionas un valor, el atributo "value" es lo que se envia al servidor, para enviar el label tienes que cambiar a que en lugar de imprimirse el value se imprima el label:
Código PHP:
echo sprintf($opt$row[1], $row[1]); 
  #8 (permalink)  
Antiguo 19/06/2007, 14:24
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

Pero como hago para mandar en una consulta INSERT ese valor? la materia seleccionada

Disculpa mi ignorancia
  #9 (permalink)  
Antiguo 19/06/2007, 14:39
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Tu select se llama Nommat, solo debes accesar su valor dependiendo de como envias tu formulario con $_POST o $_GET asi:
Código PHP:
$materia $_POST['Nommat'];
// o
$materia $_GET['Nommat']; 
Luego es cuestion de que construyas tu INSERT

Código PHP:
$sql "INSERT INTO tabla VALUES ('$materia')";
mysql_query$sql ) or die( mysql_error() ); 
  #10 (permalink)  
Antiguo 19/06/2007, 14:46
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

No GatorV no me llena el campo nombre materia que podria ser?
  #11 (permalink)  
Antiguo 19/06/2007, 15:00
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

haz un echo a $materia antes de insertarla y ve el contenido.

Saludos.
  #12 (permalink)  
Antiguo 19/06/2007, 15:03
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

GatorV no me imprime ningun valor.
  #13 (permalink)  
Antiguo 19/06/2007, 15:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Si estas asignando correctamente? Prueba inspeccionar directo la variable de POST o GET:
Código PHP:
var_dump$_POST );
// o
var_dump$_GET ); 
  #14 (permalink)  
Antiguo 19/06/2007, 15:09
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

Si eso esta bien, otra cosa la página es Autoprocesada el HTML y el PHP a la vez el Form Action es sobre la misma página tendra esto que ver en algo?
  #15 (permalink)  
Antiguo 19/06/2007, 15:14
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Si esta bien, pero en tu arreglo donde imprimes ves el valor de 'Nommat'?
  #16 (permalink)  
Antiguo 19/06/2007, 15:20
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

No, es como si solo estuviera sacando en la consulta el codigo de la materia porque cuando deje en el INSERT '$Nommat' tambien me inserta el código en el campo nombre y en el campo código.
  #17 (permalink)  
Antiguo 19/06/2007, 15:22
Avatar de _ssx  
Fecha de Ingreso: mayo-2003
Ubicación: mX
Mensajes: 683
Antigüedad: 20 años, 11 meses
Puntos: 60
Re: Llenar combo con datos de una tabla

Hola :) sabes implemente una pequeña clase para que no tengas que lidiar con esto.. ya que a veces usamos mucho esto..

Código PHP:
<?php
class comboDb{
//variables miembro de la clase
private $sql;
private 
$db;
private 
$linked;
private 
$servidor;
private 
$usr;
private 
$pass;
private 
$valor;
private 
$nom_select;
private 
$contenido;
//creamos un constructor para conectar directamente y pasarle los datos
public function comboDb($serv,$user,$p,$base)
{
$this->db $base;
$this->usr $user;
$this->pass $p;
$this->servidor $serv;
}
public function 
setSql($consulta)
    {
    
$this->sql mysql_query($consulta,$this->getConection()) or die (mysql_error());
    }
public function 
getConection()
    {
    if(!(
$this->linked=mysql_connect($this->servidor,$this->usr,$this->pass)))
        {
        echo (
"Error: No se pudo conectar al servidor especificado");
        exit();
        }
    else
        {
            if(!
mysql_select_db($this->db,$this->linked))
                {
                echo(
"No se pudo conectar a la base de datos");
                exit();
                }
            else
                {
                return 
$this->linked;
                }
        }
    }    
public function 
setFields($val,$nom,$con)
    {
    
$this->valor $val;
    
$this->nom_select $nom;
    
$this->contenido $con;
    }
public function 
getCombo()
    {
    echo 
"<select name=\"".$this->nom_select."\">\n";
    while(
$fila mysql_fetch_array($this->sql))
        {
        
//imprimimos el select en html
        
echo "<option value=\"".$fila[$this->valor]."\">".$fila[$this->contenido]."</option>\n";
        }
    echo 
"<\select>\n";
    }

function 
getComboEdit($select)
    {
    echo 
"<select name=\"".$this->nom_select."\">\n";
    while(
$fila mysql_fetch_array($this->sql))
        {
        if(
$fila[$this->contenido]==$select)
            {
        echo 
"<option value=\"".$fila[$this->valor]."\" selected=\"selected\">".$fila[$this->contenido]."</option>\n";    
            }else {
        
//imprimimos el select en html
        
echo "<option value=\"".$fila[$this->valor]."\">".$fila[$this->contenido]."</option>\n";
        }
        }
    echo 
"<\select>\n";
    }
}
?>
guarda el codigo de arriba en un archivo llamado combodb.php

y en la pagina donde lo vayas a utilizar su uso es asi..
pones esto en tus primeras lineas de tu archivo

Código PHP:

include("combodb.php");
//aqui pones tus datos de acceso a la DB
$materias = new comboDb("localhost","usuario","password","tubasededatos");
//haces la consulta 
$materias->setSql("SELECT codmat, nommat FROM materias");
//estos tres parametros son 
//1.- el valor que tendran las opciones del combo
//2.- el nombre del select
//3.- el valor que mostrara el combo
$materias->setFields("codigo","Nommat","materia"); 
y luego donde lo vayas a imprimir para mostrar el COMBO pones..

Código PHP:
<?php $materias->getCombo() ?>
__________________
Escribe tu código de forma que refleje, y saque a relucir,lo mejor de tu carácter personal
www.oscararzola.com/blog
Principios de un programador
  #18 (permalink)  
Antiguo 19/06/2007, 15:28
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Seria cuestion de ver como se esta generando tu HTML una vez que se proceso en PHP, para ver como imprime los campos y en que lugar.

Saludos.
  #19 (permalink)  
Antiguo 19/06/2007, 15:43
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

No como te digo GatorV todos los campos se insertan bien lo unico es eso que no me guarda en la tabla registro general el valor de la selección del combo en este caso el nombre de la materia. aqui pongo todo el codigo de la pagina para que lo veas.


Código PHP:
<?php

        
    
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>PLANILLA GENERAL</title>
<script type="text/JavaScript">


function validar1 ()
{
    var i;
    for (i = 0; i < document.listado.Coddoc.value.length; i++)
    {
        if (document.listado.Coddoc.value.charCodeAt(i) < 48 || document.listado.Coddoc.value.charCodeAt(i) > 57)
        {
            document.listado.Coddoc.value = document.listado.Coddoc.value.slice(0, i);
        }
    }
}
</script> 
<!--

//-->

<script language="javascript">
function validar ()
{
    var i;
    for (i = 0; i < document.listado.Id.value.length; i++)
    {
        if (document.listado.Id.value.charCodeAt(i) < 48 || document.listado.Id.value.charCodeAt(i) > 57)
        {
            document.listado.Id.value = document.listado.Id.value.slice(0, i);
        }
    }
}
</script> 

<!--
//-->
<script language="javascript">
function validar2 ()
{
    var i;
    for (i = 0; i < document.listado.Codmat.value.length; i++)
    {
        if (document.listado.Codmat.value.charCodeAt(i) < 48 || document.listado.Codmat.value.charCodeAt(i) > 57)
        {
            document.listado.Codmat.value = document.listado.Codmat.value.slice(0, i);
        }
    }
}
</script>

<!--
//-->
<script language="javascript">
function validar3 ()
{
    var i;
    for (i = 0; i < document.listado.Codest.value.length; i++)
    {
        if (document.listado.Codest.value.charCodeAt(i) < 48 || document.listado.Codest.value.charCodeAt(i) > 57)
        {
            document.listado.Codest.value = document.listado.Codest.value.slice(0, i);
        }
    }
}
</script>

<style type="text/css">
<!--
.Estilo4 {
    color: blue;
    font-style: italic;
}
-->
</style>
</head>
<body>
<?php

    
// COMPROBAR QUE LA VARIABLE DE SESIÓN EXISTA.
    
if (session_is_registered("Docente"))
    {
        echo 
"<br><b><i><font color = #575757 >BIENVENIDO, profesor ".$_SESSION['s_nombre']." su ingreso al sistema fue ".$_SESSION        ['ultimoAcceso']."<b></i></font>";
?>    
<?php
    
    
    
if (!isset($Id))
    {
    
?>    
<CENTER>
 <CENTER>
 <H1 class="Estilo4">PLANILLA GENERAL </H1> 
 </CENTER>
    <HR>
<FORM  action="" method="post" NAME="listado" onsubmit="MM_validateForm('Id','','RisNum','Coddoc','','RisNum','Codmat','','RisNum','Codest','','RisNum','Cortep','','NisNum','Cortes','','NisNum','Cortet','','NisNum','Habilitacion','','NisNum','Definitiva','','NisNum');return document.MM_returnValue">
  <TABLE bgcolor="#FFFFFF" border="0" cellspacing="0">
          <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Id registro:</strong></div></TD>
            <TD bordercolor="#009900"><INPUT TYPE="TEXT" NAME="Id" ONKEYUP = "validar()" SIZE=38 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Código docente:</strong></div></TD>
            <TD bordercolor="#009900"><INPUT TYPE="TEXT" NAME="Coddoc" <?php echo " value = '".$_SESSION['s_codusu']."'";?>            ONKEYUP = "validar1()" SIZE=38 /></TD>
        </TR>
        
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Código materia:</strong></div></TD>
            <TD bordercolor="#009900"><INPUT TYPE="TEXT" NAME="Codmat"  ONKEYUP = "validar2()" SIZE=38 Id = "Codmat" />        </TD>
            
        </TR>
        
        <TR>
          <TD ALIGN=RIGHT><div align="left"><strong>Nombre materia: </strong></div></TD>
          <TD bordercolor="#009900"><select name="Nommat" onchange="document.getElementById('Codmat').value =                            this.options[this.selectedIndex].value">
          <?php
          
            
// ESTABLECIMIENTO DE LA CONEXIÓN
              
$conex mysql_connect("localhost""xxxx""xxxx"
                     or die (
"No se pudo realizar la conexión con la base de datos");
        
              
// SELECCIÓN DE LA BASE DATOS
              
mysql_select_db("xxxx"$conex);
            
            
$materia $_POST['Nommat'];
            
              
//OBTENER LOS VALORES DE LAS FILAS
            
$sql "SELECT codmat, nommat FROM materias";
            
$resul mysql_query($sql$conex);
            
$opt '<option value = "%s">%s</option>';
            
            
//RECORRIDO DEL CURSOR
            
while($row mysql_fetch_array($resul))
            { 
            
                echo 
sprintf($opt$row[0], $row[1]);
               
            }
          
          
?>
            </select></TD>
      </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Código estudiante:</strong></div></TD>
            <TD bordercolor="#009900"><INPUT TYPE="TEXT" NAME="Codest" ONKEYUP = "validar3()" SIZE=38 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Nombre estudiante:</strong></div></TD>
            <TD bordercolor="#009900"><INPUT TYPE="TEXT" NAME="Nomest" SIZE=38 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Grupo:</strong></div></TD>
            <TD bordercolor="#009900"><INPUT TYPE="TEXT" NAME="Grupo" size=38 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Semestre:</strong></div></TD>
            <TD bordercolor="#009900"><INPUT TYPE="TEXT" NAME="Semestre" SIZE=38 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Primer corte:</strong></div></TD>
          <TD bordercolor="#009900" bgcolor="#CCCCCC"><INPUT NAME="Cortep" TYPE="TEXT" SIZE=10 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Segundo corte:</strong></div></TD>
          <TD bordercolor="#009900" bgcolor="#CCCCCC"><INPUT NAME="Cortes" TYPE="TEXT" SIZE=10 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Tercer corte:</strong></div></TD>
          <TD bordercolor="#009900" bgcolor="#CCCCCC"><INPUT NAME="Cortet" TYPE="TEXT" SIZE=10 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Habilitación:</strong></div></TD>
          <TD bordercolor="#009900" bgcolor="#CCCCCC"><INPUT NAME="Habilitacion" TYPE="TEXT" SIZE=10 /></TD>
        </TR>
        <TR>
            <TD ALIGN=RIGHT><div align="left"><strong>Definitiva:</strong></div></TD>
          <TD bordercolor="#009900" bgcolor="#CCCCCC"><INPUT NAME="Definitiva" TYPE="TEXT" SIZE=10 /></TD>
        </TR>
        <TR bgcolor="#CCCCCC">
            <TD COLSPAN=2 ALIGN=RIGHT>
                <INPUT TYPE="SUBMIT" VALUE="Registrar" />
          <INPUT TYPE="RESET" VALUE="Limpiar" /></TD>
        </TR>
    </TABLE>
</FORM>
<?php
    
}
    else
    {
        echo 
"<hr>";
        
// ESTABLECIMIENTO DE LA CONEXIÓN
          
$conex mysql_connect("localhost""xxxx""xxxx"
                     or die (
"No se pudo realizar la conexión con la base de datos");
        
          
// SELECCIÓN DE LA BASE DATOS
          
mysql_select_db("xxxx"$conex);
         
         
$corte1 $Cortep;
         
$corte2 $Cortes;
         
$corte3 $Cortet;
         
$def $Definitiva;
         
$prom $corte1 $corte2 $corte3;
        
         
// MEDIA 
         
$def =  ($prom 3);
         
         
// REDONDEAR A UN DECIMAL
         
$fix round($def 1); 
         
         
// VALIDACIÓN DE LOS VALORES DE LAS NOTAS
         
if ($corte1 != 0  and $corte2 != and $corte3 != 0)
         {
                if ( 
$fix and $hab )  
                {    
                    
$prom1 $fix $hab;
                    
$def = ($prom1 2);
                    
$fix round($def 1);
                        
                }
                else 
                {
                    
$Habilitacion 0;
                    
                }
            }    
    
    
    
    
//VALIDACIÓN DE LOS VALORES DE LOS CORTES     
    
if (($corte1 or $corte1 5) or ($corte2 or $corte2 5) or ($corte3 or $corte3 5) or
        (
$hab or $hab 5) or ($def or $def 5))
    {
        
            echo 
"<center><font color = #575757 ><b>Solo se permiten ingresar valores comprendidos entre 0 y 5<a href =            'listado.php'><img src = 'Ir.gif' vspace = 10 border = 0  height = 50 width = 50 ></center></font></a>";
            exit();
    }
    else
    {
         
         if((empty(
$Id)) or (empty($Coddoc)) or (empty($Codmat))  or (empty($Codest)) or (empty($Nomest)) or
             (empty(
$Grupo)) or (empty($Semestre)))
         {
                 
                echo 
"<center><font color = #575757 ><b>Debe ingresar los datos necesarios para realizar el registro                <a href = 'listado.php'><img src = 'Ir.gif' vspace = 10 border = 0  height = 50 width = 50 >                </center></font></a>";
                exit();
         }
         else
         {
         
         
             
// IMPEDIR LA DUPLICIDAD DE LLAVES PRIMARIAS
            
$consulta "SELECT id, coddoc FROM listado WHERE id = $Id";
            
$result mysql_query($consulta$conex);
             
$data mysql_fetch_array($result);
            
            if (
$data['id'] == $Id)
            {
            
                echo 
"<center><font color = #575757 ><b>Ya existe un registro asociado con el código que ha introducido                <a href = 'listado.php'><img src = 'Ir.gif' vspace = 10 border = 0  height = 50 width = 50 >                </center></font></a>";
                exit();
              }
             else
            {    
                
                  
// EJECUCIÓN DE LA CONSULTA
                
$consulta "INSERT INTO listado values ($Id, $Coddoc, $Codmat, '$Nommat', $Codest, '$Nomest', '$Grupo',                            '$Semestre', $Cortep, $Cortes, $Cortet, $Habilitacion, $fix)";
      
                  
$resultado mysql_query($consulta,$conex);
            }
      
                  
// PRUEBA DE ERROR
                
$my_error mysql_error($conex);
     
    
                  if (!empty(
$my_error))
                  {
                    echo 
"Se ha producido un error al insertar los datos. <br>$my_error";
                }
                  else
                  {
                    
                    echo 
"<center><br><b><font color = #575757 >El registro ha sido insertado correctamente<a                                                                                             href = 'listado.php'><img src = 'Ir.gif' vspace = 10 border = 0  height = 50 width = 50 ></center>                    <b></font></a>";
                    exit();
                  }
          }
     }  
    
    
    
    }
?>
<?php
}
else
{
    echo 
"<center><br><b><font color = #575757 >Para ingresar a esta página primero debe registrarse.<a                                                                             href = 'ingresar.html'><img src = 'Ir.gif' vspace = 10 border = 0  height = 50 width = 50 ></center><b></font></a>";
    exit();
}
?>
</CENTER>        
</body>
</html>

Eso es mi página
  #20 (permalink)  
Antiguo 19/06/2007, 15:51
Avatar de lilith_sr  
Fecha de Ingreso: enero-2007
Ubicación: México
Mensajes: 113
Antigüedad: 17 años, 2 meses
Puntos: 2
Re: Llenar combo con datos de una tabla

espero que esto te sirva
Código PHP:
<form  action="pagina.php" method="post">
<select name="materiaid" onChange="submit(this.form)">
    <option value="">-----</option>
<?php 
  
$query
=("Select * from materias");
while(
$reg=mysql_fetch_array($query))
{
?>
  <option  value="<?=$reg['materiaid']?>"><?=$reg['nombre']?></option>
<?php                    
}
?>
 </select>

 <? $query=("Select * from subestacion where idgeografica='$materiaid'");
    
$reg=mysql_fetch_array($query)
    
?>
              <input name="campo" type="text" value="<?=$reg['campo']?>" size="50">
  #21 (permalink)  
Antiguo 19/06/2007, 16:18
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Lo que pasa es que el valor de la seleccion del combo es el codigo de la materia como te explique en un post interior cuando tu tienes un control select:
Código HTML:
<select name="nombre">
      <option value="1">Uno</option>
      <option value="2">Dos</option>
      <option value="3">Tres</option>
</select> 
Cuando tu lo recibes en PHP con la variable $_POST['nombre'] p $_GET['nombre'], recibes 1, 2 o 3, ya que ese es el VALOR de la opcion, es por eso que tu en tu registro ves el codigo y no la materia.
  #22 (permalink)  
Antiguo 19/06/2007, 16:23
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

Disculpa mi insistencia entonces como hago para que no inserte 1,2,3 sino Uno Dos o tres como en tu ejemplo yo arriba puse el código de mi pagina Gracias
  #23 (permalink)  
Antiguo 19/06/2007, 16:27
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Para que inserte Uno Dos o Tres tienes que cambiar el valor de tu select:
Código HTML:
<select name="nombre">
      <option value="Uno">Uno</option>
      <option value="Dos">Dos</option>
      <option value="Tres">Tres</option>
</select> 
  #24 (permalink)  
Antiguo 19/06/2007, 16:33
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

Entonces lo que entiendo es que seria en mi caso 'Nommat y Nommat' eso es lo que se hace cuando uno inserta un combo en el form y en valores de la lista coloca el mismo valor en etiqueta del elemento y valor, pero entonces si lo hago hasi no funcionaria lo del codigo de la materia que aparesca en una caja de texto cuando seleccione un elemento del combo porque habria los mismos datos en ela tabla Materias.
  #25 (permalink)  
Antiguo 19/06/2007, 16:40
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

Exactamente, para entonces ver el codigo de la materia en el combo podrias hacer dos cosas:
1.- Extraer el codigo de la materia una vez que se envia el formulario y ya insertarlo en el registro.
2.- Utilizar AJAX para cuando cambie la opcion del select busque el codigo del formulario y lo rellene en el campo correspondiente.
  #26 (permalink)  
Antiguo 19/06/2007, 16:50
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Re: Llenar combo con datos de una tabla

La verdad de ajax no se nada, no existira otra forma para hacer que se inserte la selección del combo? porque el código no es lo importante.
  #27 (permalink)  
Antiguo 19/06/2007, 16:59
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Re: Llenar combo con datos de una tabla

No es tan dificil AJAX te invito a que le des una leida a este tutorial:

http://www.prototypejs.org/learn/introduction-to-ajax

Saludos.
  #28 (permalink)  
Antiguo 19/06/2007, 17:17
Avatar de Carlojas  
Fecha de Ingreso: junio-2007
Ubicación: Shikasta
Mensajes: 1.272
Antigüedad: 16 años, 10 meses
Puntos: 49
Sonrisa Re: Llenar combo con datos de una tabla

Muchas gracias por tus aportes GatorV. ya pude solucionar el problema un poco tedioso el procedimiento pero resulto efectivo que eso es lo que importa

Saludos.
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 00:14.