Foros del Web » Programando para Internet » PHP »

problema con combos relacionados

Estas en el tema de problema con combos relacionados en el foro de PHP en Foros del Web. hola amigos......paso a contarles el problema q tengo: tengo una BD en mysql q contiene 2 tablas: tabla_padre q tiene los siguientes campos: -id -marca ...
  #1 (permalink)  
Antiguo 25/10/2004, 18:09
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
problema con combos relacionados

hola amigos......paso a contarles el problema q tengo:
tengo una BD en mysql q contiene 2 tablas:
tabla_padre q tiene los siguientes campos:
-id
-marca
-tipo
tabla_hija tiene los siguientes campos:
-id
-id_padre
-modelo

resulta q tengo el siguiente scripts:

combos.php
Código PHP:
<?php
if (!empty($_POST['enviado'])) {
    
// Procesar el formulario ...
    
echo "Procesando formulario:<br>";
    echo 
"Recibido id_tabla_padre: " $_POST['id_padre'] . "<br>";
    echo 
"Recibido id_tabla_hija: " $_POST['id_hija'];
} else {
    
// Conexión a la BD
    
include("conexion_bd.php");
    
// Obtener el $id_padre del envio a si mismo del formulario ..
    
$id_padre $_POST['id_padre']; 
    
// Inicio Formulario .. PHP_SELF enviamos a si mismo (a este script).
    
echo "<form action=\"" $_SERVER['PHP_SELF'] . "\" method=\"POST\">\n\n"
    
// Formar Selec "Padre".
    
echo "<select name=\"id_padre\" onChange=\"this.form.submit()\">\n";
    echo 
"<option value=\"\"> Seleccione una Marca </option>\n";
    
$SQLconsulta_padre "SELECT * FROM tabla_padre WHERE tipo='Motherboard'";
    
$consulta_padre mysql_query($SQLconsulta_padre$conexion) or die(mysql_error());
    While (
$registro_padre mysql_fetch_assoc($consulta_padre)) {
        
// Se mira si el ID del registro es el mismo q el $id_padre q recibimos si hemos cambiado el select hijo.
        // Se selecciona en consecuencia (selected) la opción elegida.
        
if ($id_padre == $registro_padre['id']) {
            echo 
"<option value=\"" $registro_padre['id'] . "\" selected>" $registro_padre['marca'] . "</option>\n";
        } else {
            echo 
"<option value=\"" $registro_padre['id'] . "\">" $registro_padre['marca'] . "</option>\n";
        } 
    } 
    echo 
"</select>\n\n";
    
mysql_free_result($consulta_padre); // Liberar memoria usada por consulta.  
    // Formar Select "Hijo"
    
echo "<select name=\"id_hija\">\n"
    
// Si $id_padre no tiene valor (caso de que no se ha seleccionado ningua opcion del select hijo
    // se muestra el mensaje de "seleccine un item" (del select padre).
    
if (!empty($id_padre)) {
        
$SQLconsulta_hija "SELECT * FROM tabla_hija WHERE id_padre='$id_padre'";
        
$consulta_hija mysql_query($SQLconsulta_hija$conexion) or die(mysql_error()); 
        
// se mira el total de registros de la consulta .. si es 0 se muestra mensaje en el select ..
        
if (mysql_num_rows($consulta_hija) != 0) {
            While (
$registro_hija mysql_fetch_assoc($consulta_hija)) {
                echo 
"<option value=\"" $registro_hija['id'] . "\">" $registro_hija['modelo'] . "</option>\n";
            } 
        } else {
            echo 
"<option value=\"\"> No hay modelos para esta marca </option>";
        } 
    } else {
        echo 
"<option value=\"\"> <-- Seleccione un Modelo  </option>";
    } 
    
mysql_free_result($consulta_hija); // Liberar memoria usada por consulta.
    
echo "</select>\n\n";
    echo 
"<input type=\"submit\" name=\"enviado\" value=\" Enviar \" >\n\n";
    echo 
"</form>\n";

?>
conexion.php
Código PHP:
<?php
$dbhost 
'localhost';
$dbusuario '';
$dbpasswd '';
$database_name 'inticomp';
$connection mysql_pconnect("$dbhost","$dbusuario","$dbpasswd") or die ("No se puede conectar al Servidor.");
$db mysql_select_db("$database_name"$connection) or die("No se puede seleccionar la base de datos.");
?>
el problema en si es q no me genera los 2 combos con los datos correspodientes
probe con la conexion todo pero no consigo q se armen automaticamente......si alguien sabe cual es el error se lo agradeceria enormemente
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #2 (permalink)  
Antiguo 25/10/2004, 22:26
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Y qué error te da???
Algún mensaje del Parser o de Mysql???
¿qué es lo que obtienes?
Es para saber bien a dónde mirar en el código directamente...
saludos
  #3 (permalink)  
Antiguo 26/10/2004, 19:39
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
como dije no me da error de codigo, sino q no se forman los 2 combos q deseo solo 1 el combo padre pero sin datos adentro. no se q hacer alguien lo puede probar y ayudarme a encontrar el error ??? Desde ya muchas gracias
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #4 (permalink)  
Antiguo 27/10/2004, 21:26
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
por favorrrr alguien me puede ayudarrr!!!!!!!!!!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #5 (permalink)  
Antiguo 28/10/2004, 02:38
Aun
 
Fecha de Ingreso: octubre-2004
Mensajes: 4
Antigüedad: 19 años, 5 meses
Puntos: 0
Yo me base en esto.Para hacer lo que dices.

http://www.forosdelweb.com/f18/faqs-php-530600-post664999/
  #6 (permalink)  
Antiguo 28/10/2004, 20:05
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
gracias pero en ese ejemplo me base!! CLUSTER ALGUNA AYUDITA POR AQUII???
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #7 (permalink)  
Antiguo 29/10/2004, 14:28
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Pon esta línea al comienzo para que el parser te muestre los errores que se puedan estar generando:
Código PHP:
<?php error_reporting(E_ALL); ?>
Saludos
  #8 (permalink)  
Antiguo 30/10/2004, 18:01
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
gracias jpinedo, hice lo que me dijiste y me sale el siguiente error:
Cita:
Notice: Undefined index: id_padre in c:\servidor\www\inticomp\tablas_dependientes.php on line 12
la linea 12 es esta:
Código PHP:
$id_padre $_POST['id_padre']; 
si alguien sabe algo se lo agradeceria muchisimo!!!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #9 (permalink)  
Antiguo 01/11/2004, 20:41
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
alguna idea por favor de porque no llega el id_padre ???........se lo agredeceria muchisimooo, desde ya muchas gracias!!!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #10 (permalink)  
Antiguo 01/11/2004, 21:02
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno... al parecer la asignación
Código PHP:
$id_padre $_POST['id_padre']; 
generará un NOTICE de todas formas. Y aunque habría que coregirlo... no debería afectar en el funcionamiento del script.

Si dices que te sale el primer combo vacío (supongo que sólo tendrá la opción "Seleccione una Marca") y ningún error de Mysql... entonces la consulta no te devuelve ningún valor.
Verifica que el valor del campo "tipo" sea exactamente "Motherboard" (mayúsculas/minúsculas) y que hayan registros que tengan ese valor en la tabla.

Saludos
  #11 (permalink)  
Antiguo 04/11/2004, 17:08
Avatar de fmmeson  
Fecha de Ingreso: enero-2002
Ubicación: Tucuman
Mensajes: 401
Antigüedad: 22 años, 3 meses
Puntos: 2
gracias JPINEDO, ya pude solucionar el problema. continuando con este tema quisera saber si se puede agregar q cuando se eleija la marca , el modelo, AUTOMATICAMENTE se liste el registro correspondiente........como se haria eso ?? Desde ya muchas gracias!!
__________________
Lo que se hace por AMOR esta mas allá del BIEN y del MAL - Friedrich Nietzsche
http://www.hispanogeek.com.ar
Desarrollador IT -
  #12 (permalink)  
Antiguo 04/11/2004, 20:17
Avatar de jpinedo
Colaborador
 
Fecha de Ingreso: septiembre-2003
Ubicación: Lima, Perú
Mensajes: 3.120
Antigüedad: 20 años, 7 meses
Puntos: 41
Bueno... tendrías que agregar un "onchange" también al segundo select de la misma manera que lo hiciste con el primero.
Código PHP:
echo "<select name=\"id_hija\" onChange=\"this.form.submit()\">\n"
Y agregar al final de todo, el código que muestra el registro.
Código PHP:
if(!empty($_POST['id_padre']) && !empty($_POST['id_hija'])){
 
$sql "SELECT * FROM tu_tabla WHERE id='".$_POST['id_hija']."' AND id_padre='".$_POST['id_padre']."'";
 
$result mysql_query($sql) or die(mysql_error());
 if(
$row=mysql_fetch_assoc($result)){
  echo 
$row['campo'];//etc
 
}

Bueno... el código que te puse es de ejemplo... tú adecúalo a lo que tienes.
pero la idea es esa...

Saludos
  #13 (permalink)  
Antiguo 30/11/2004, 04:11
 
Fecha de Ingreso: julio-2004
Mensajes: 34
Antigüedad: 19 años, 9 meses
Puntos: 0
Tengo alguna duda sobre lo que han comentado:
¿Se supone que $_POST['id_padre'] nunca va a tomar un valor vacio?
Porque si nunca lo tomara, no hubiera que comprobar si $_POST['id_padre'] existe o no, se podria hacer directamente la asignacion $id_padre = $_POST['id_padre'];

Lo pregunto por eso que ha comentado jpinedo sobre que la asignacion $id_padre = $_POST['id_padre']; va a generar un notice de todas maneras. ¿Porque se generaria si teoricamente $_POST['id_padre'] siempre existe?
Gracias.
  #14 (permalink)  
Antiguo 30/11/2004, 06:20
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
En un primer instante no estará definido .. pero para eso se puede hacer una simple validación tipo:

Código PHP:
if (isset($_POST['id_padre'])){
   
$id_padre=$_POST['id_padre'];
} else {
   
$id_padre='';

Un saludo,
  #15 (permalink)  
Antiguo 01/12/2004, 02:40
 
Fecha de Ingreso: julio-2004
Mensajes: 34
Antigüedad: 19 años, 9 meses
Puntos: 0
Vaya chorrada que he preguntado... :). Disculpad, estaba pensando en mi propio problema.
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 06:46.