Mostrar combo en php

Tengo 2 tablas en mysql una de alumno y otra de especialidad
Create table alumno con sus campos:
Idalumno, apealumno, nomalumno, idesp, proce
Y la tabla especialidad y sus campos: idesp, nombre
La pregunta va así tengo los registros mostrados en una page donde puedo modificar y eliminarlos uno o varios con checkbox,(te dejo el código para que veas como debe de salir) lo que tengo que hacer es que cuando aprieto el botón editar en el campo de especialidad me debe de salir un combo con los datos de las especialidades para escoger otra especialidad (el nombre) para modificar un registro su especialidad...
La eliminación ya me sale puedo actualizar también la cosa esta en esta parte .. Bueno te dejo el código
<!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=utf-8" />
<title>..::: EDICION DE HORARIOS :::..</title>
</head>
<script language="javascript">
function carga(){
document.form1.submit();
}
</script>
<body>
<form id="form1" name="form1" method="post" action="">
<?php
include("conexion.php");
$cn=conecta("bdmatricula");
?>
<table width="200" border="1">
<tr>
<td colspan="6">MANTENIMIENTO</td>
</tr>
<tr>
<td colspan="6"><label>
        <input type="submit" name="button" id="button" value="eliminar varios" />
      </label></td>
</tr>
<tr>
<td>SELECCIONE</td>
<td>CODIGO</td>
<td>APELLIDOS</td>
<td>NOMBRES</td>
<td>ESPECIALIDAD</td>
<td>PROCEDENCIA</td>
<td>EDITAR</td>
</tr>
    <?php
 $sql="select * from alumno";
 $query=mysql_query($sql);
 $codigo=$_REQUEST['cod'];
 while($rs=mysql_fetch_row($query)){
    echo "
<tr>
";
 if($rs[0]==$codigo){
  echo "
<td><input type='checkbox' name='checkbox[]' id='checkbox'  value='$rs[0]'/>";
  echo "
<td><input type='hidden' name='txtcodigo' value='$rs[0]'>'$rs[0]'</td>
";
  echo "
<td><input type='text' name='txtapellido' value='$rs[1]'></td>
";
  echo "
<td><input type='text' name='txtnombre' value='$rs[2]'></td>
";
   echo "
<td><input type='text' name='txtespecialidad' value='$rs[3]'></td>
";
    echo "
<td><input type='text' name='txtprocedencia' value='$rs[4]'></td>
";
    echo "
<td><a href='javascript:carga();'>ACTUALIZAR</a>/<a href='edicion.php'>REGRESAR</td>
";
 }else{
    echo "
<td><input type='checkbox' name='checkbox[]' id='checkbox' value='$rs[0]' />";   
    echo "
<td>$rs[0]</td>
";
    echo "
<td>$rs[1]</td>
";
    echo "
<td>$rs[2]</td>
";
 echo "
<td>$rs[3]</td>
";
 echo "
<td>$rs[4]</td>
";
    echo "
<td><a href='edicion.php?cod=$rs[0]'>editar</td>
";
   }
     echo "
</tr>
";
  }
  //cuando aprieto el actualizar
  if($_REQUEST['txtcodigo']){
  $codigo=$_REQUEST['txtcodigo'];
  $apellido=$_REQUEST['txtapellido'];
  $nombre=$_REQUEST['txtnombre'];
  $especialidad=$_REQUEST['txtespecialidad'];
  $procedencia=$_REQUEST['txtprocedencia'];
  $actualizar="update alumno set apealumno='$apellido',nomalumno='$nombre',idesp='$especialidad',PROCE='$procedencia' where idalumno='$codigo'";
  mantenimiento($actualizar);
  echo "
<script>location.href='edicion.php'</script>
";
  }
 if($_POST['button']){
 foreach($_REQUEST['checkbox'] as $valor){
 $consulta="delete from alumno where idalumno='$valor'";
 mantenimiento($consulta);
echo "
<script>location.href='edicion.php'</script>
";
 }
}
 ?> 
</table>
</form>
</body>
</html>
*lo que hace este codigo es lo siguiente al cargarlo me muestra los registros de la tabla alumno
*cada fila(registro) contiene un check y la palabra editar
*cuando aprieto 'editar' los campos apellidos,nombre,especialida,proce se vuelven modificables para modificarlos ademas aparecen en la fila escogida las palabras ACTUALIZAR   (que al apretar actualiza),REGRESAR(que al apretar regresa sin modificar)
Bueno esta aquí la cosa... Cuando aprieto 'editar' me debe salir un combo EN LA ZONA DE especialidad de la tabla con los registros de la tabla especialidad para escoger otro para ACTUALIZAR.. Como debería de hacerlo
*los check sirven para escoger lo que quiero eliminar en esta parte no tengo problemas
Nota :en el combo me debe salir los nombres de los registros no el codigo
Espero que me hayas entendido la explicación gracias por la atención
Respuesta
1
Lo que tienes que hacer es cargar todos los datos que necesites para el combo con los datos obtenidos en la primera query (supongo que como mínimo "ID" y "Nombre" (o similar)), y generar un combobox con un bucle for escribiendo las diferentes OPTION con los datos de la BBDD.
Hay un ejemplo bastante bueno en el foro de webdeveloper.com

1 respuesta más de otro experto

Respuesta
1
Utiliza una ventana flotante, para no liar más el formulario. Es más sencillo y puedes enviarle los parámetros que necesites.
hola la cosa esta que me debe mostrar un combo con los registros de las especialidades cada ves que aprieto editar en una fila seleccionada , lo he intentado con esto ..pero solo me sale un registro no se porque ...cuando en esa tabla (especialidad)tengo varios registros
el codigo va entre las lineas
if($rs[0]==$codigo){
  echo "
<td><input type='checkbox' name='checkbox[]' id='checkbox'  value='$rs[0]'/>";
  echo "
<td><input type='hidden' name='txtcodigo' value='$rs[0]'>'$rs[0]'</td>
";
  echo "
<td><input type='text' name='txtapellido' value='$rs[1]'></td>
";
  echo "
<td><input type='text' name='txtnombre' value='$rs[2]'></td>
";
//-----------------------------------------------------aquí va el código que me muestra un combo
$result=mysql_query("select idesp,nomesp from especialidad", $cn);
if ($row=mysql_fetch_row($result)){
     echo "
<td><select name='combo1'>
   do {
  echo '<option value=$row[0] selected>$row[1]</option>'; 
  } while ($row = mysql_fetch_row($result));   
  echo  </select></td>
";
   } 
//-----------------------------------solo me sale un solo registro
 echo "
<td><input type='text' name='txtprocedencia' value='$rs[4]'></td>
";
    echo "
<td><a href='javascript:carga();'>ACTUALIZAR</a>/<a href='edicion.php'>REGRESAR</td>
";
 }else{
    echo "
<td><input type='checkbox' name='checkbox[]' id='checkbox' value='$rs[0]' />";   
    echo "
<td>$rs[0]</td>
";
    echo "
<td>$rs[1]</td>
";
    echo "
<td>$rs[2]</td>
";
 echo "
<td>$rs[3]</td>
";
 echo "
<td>$rs[4]</td>
";
    echo "
<td><a href='edicion.php?cod=$rs[0]'>editar</td>
";
   }
     echo "
</tr>
";
  }
Con el código este me muestra un combo pero con un solo registro
no se que me falta, espero que me puedas ayudar con esto, por ahí me dijeron que debo usar session, pero la verdad no tengo ni la menor idea de como hacerlo saludos
Con esto que pones:
   do {
  echo '<option value=$row[0] selected>$row[1]</option>'; 
  } while ($row = mysql_fetch_row($result));   
Está recorriendo toda la cadena del registro $row, comprueba que esa consulta te saca todos los valores, y no solo uno...
Como te digo solo me muestra un solo registro lo he cambiado así pero da lo mismo
$result=mysql_query("select idesp,nomesp from especialidad", $cn);
if ($row=mysql_fetch_row($result)){
    echo "
<td><select name='combo1'>
  do {
  echo '<option value= $row[0] >$row[1]</option>';  
  } while ($row = mysql_fetch_row($result)); 
   </select></td>
";
   }
//---Solo me arroja un registro o tal ves hay otra manera de hacerlo.. fíjate que el combo debe salir cuando aprieto el editar.. NO cuando cargo la página
Para que aparezca cuando haces click en el botón, debes utilizar AJAX, sino, compruabe la consulta que haces en $result, porque debe de hacer el bucle yy completarte el combo... ¿seguro qué tienes todos los valores puestos?
Nada de ajax la solución estaba ahí solo era cambiar las comillas
$result=mysql_query("select idesp,nomesp from especialidad", $cn);
if ($row=mysql_fetch_row($result)){
    echo '
<td><select name="combo1">';
   do {  
  echo "<option value=$row[0] selected>$row[1]</option>";
  } while ($row = mysql_fetch_row($result)); 
  echo  '</select></td>
';
   }
Para que me salga normal
Necesito preguntarte otras preguntas, cieero esto y te vuelvo a preguntar
Ok.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas