Foros del Web » Programando para Internet » PHP »

Problema con Combos y tablas

Estas en el tema de Problema con Combos y tablas en el foro de PHP en Foros del Web. Hola amigos les paso a detallar mi problema a ver si alguien puede ayudarme. Tengo una tabla en donde cargo el Producto Raiz (Ejemplo= Nokia) ...
  #1 (permalink)  
Antiguo 02/06/2011, 16:12
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 1
Problema con Combos y tablas

Hola amigos les paso a detallar mi problema a ver si alguien puede ayudarme.

Tengo una tabla en donde cargo el Producto Raiz (Ejemplo= Nokia)

Código PHP:
-- Estructura de tabla para la tabla `tbl_praiz`
-- 

CREATE TABLE `tbl_praiz` (
  `
idint(10NOT NULL auto_increment,
  `
nombrevarchar(1000NOT NULL,
  
PRIMARY KEY  (`id`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=

Luego tengo otra tabla donde grabo el producto del Producto Raiz (ejemplo= 5230 con sus caracteristicas y una foto)

Código PHP:
-- Estructura de tabla para la tabla `tb_fotos`
-- 

CREATE TABLE `tb_fotos` (
  `
Idint(10NOT NULL auto_increment,
  `
Fotovarchar(255NOT NULL,
  `
praizvarchar(1000NOT NULL,
  `
tipoproductobinary(1NOT NULL default '0',
  `
nproductovarchar(1000NOT NULL,
  `
Descripcionvarchar(1000NOT NULL,
  
PRIMARY KEY  (`Id`)
ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=36 
Ahora bien, tengo este otro php que es el que se encarga de cargar el producto que esta por dehbajo del Producto Raiz:


Código PHP:
<style type="text/css">
<!--
.Estilo1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
}
.Estilo4 {font-family: Verdana, Arial, Helvetica, sans-serif; font-weight: bold; }
-->
</style>
<body bgcolor="#EAEAEA">
<style type="text/css">
<!--
.Estilo1 {
    font-family: Verdana, Arial, Helvetica, sans-serif;
    font-size: 12px;
    font-weight: bold;
}
-->
</style>

<div>
    <form action="upload.php" method="POST" enctype="multipart/form-data">
        <p class="Estilo1"><span class="Estilo4">Producto Ra&iacute;z:</span> 
          <select name="praiz" id="praiz">
            <option>Seleccione Producto Raíz</option>
            <?php
$link 
mysql_connect('localhost''user''pass');
mysql_select_db('base_de_datos'$link);
$query=("SELECT DISTINCT nombre FROM tbl_praiz GROUP BY nombre");
$resultado mysql_query($query);
if (
$resultado);
while(
$renglon mysql_fetch_array($resultado))
{
echo
'<OPTION VALUE="'.$renglon['id'].'">'.$renglon['nombre'].'</OPTION>';
}
mysql_close($link);
?>
          </select> 
      </p>
        <p class="Estilo1"><span class="Estilo4">Nombre del Producto: 
          </span>
          <input name="nproducto" type="text" id="nproducto" value="" size="40" />
        </p>
        <p class="Estilo1"><strong>Tipo de Producto:</strong> 
          <label></label>
          <input name="tipoproducto" type="radio" value=0 checked >
Com&uacute;n 

<input type="radio" name="tipoproducto" value=1> 
Destacado
<br>
</p>
        <p>
          <input type="file" name="file"/>
        </p>
        <p>
          <textarea name="descripcion" cols="60" rows="10"></textarea>
        </p>
        <p>
          <input type="submit" value="Cagar" onClick="cargar();"/>
      </p>
    </form>
</div>
En donde el Select me trae en el combo de una tabla los Productos Raices que dieron de alta.

El problema radica en este otro php creeria yo que es el que realiza el insert a la tabla de los productos que estan por debajo del Producto Raiz.

Código PHP:
<?php
include("config.inc.php");

// directorio donde se guardan las fotos
 
$target "fotos/"
                        
// valida si existe la carpeta, sino la crea
                        
if (!is_dir($target)){
                        
                        
mkdir($target,0777);
                        
                        }
 
//toma el nombre del archivo pasado por POST   
 
$target $target basename$_FILES['file']['name']) ;
 
 
// variables el nombre del archivo y la descripcion para guardar en la DB 
 
$nombre $_FILES['file']['name'];
 
$praiz =  $_POST['praiz'];
 
$nproducto =  $_POST['nproducto'];
 
$tipoproducto =  $_POST['tipoproducto'];
 
$descripcion =  $_POST['descripcion'];
 
$res mysql_query("select id from tbl_praiz where nombre like = '$praiz'");
 
$resmysql_fetch_array($res);
 echo 
$res['id'];

 
$ok=1
 
 if(
move_uploaded_file($_FILES['file']['tmp_name'], $target)) 
 {
    
Conectar_DB();
    
$sql "INSERT INTO `keepers_com_ar_-_noticias`.`tb_fotos` ( `Foto`, `praiz`, `nproducto`, `tipoproducto`, `Descripcion`) VALUES ( '$nombre', '$praiz', '$nproducto', '$tipoproducto', '$de$descripcion');";
   
mysql_query($sql);
    
    echo 
"<META HTTP-EQUIV='Refresh' CONTENT='0; url=abm_fotos.php'>";
 } 
 else {
 echo 
"Sorry, there was a problem uploading your file.";
 
}
?>
Aca deberia grabarme en la DB tb_fotos en el campo praiz el ID del Producto Raiz y no el nombre como me lo lista en el combo.

Perdon por tanto codigo pero necesitaria ver si alguien puede darme una mano para poder solucionar esto.

Desde ya muy agradecido a quien pueda y sino se agradece de igual manera.

Salu2
  #2 (permalink)  
Antiguo 02/06/2011, 16:24
Avatar de Nano_  
Fecha de Ingreso: febrero-2006
Ubicación: Bogotá, Colombia
Mensajes: 1.866
Antigüedad: 18 años, 2 meses
Puntos: 96
Respuesta: Problema con Combos y tablas

Saludos

Posiblemente la corrección sea la siguiente:

Donde realizas tu query donde muestras el combobox , selecciona tambien el id ya que solamente seleccionas el nombre.


Código PHP:
$query=("SELECT DISTINCT nombre,id FROM tbl_praiz GROUP BY nombre");
$resultado mysql_query($query);
if (
$resultado);
while(
$renglon mysql_fetch_array($resultado))
{
echo
'<OPTION VALUE="'.$renglon['id'].'">'.$renglon['nombre'].'</OPTION>'
Por otro lado en el php donde realizas en insert esta consulta te sobraria.

Código PHP:
 $res mysql_query("select id from tbl_praiz where nombre like = '$praiz'");
 
$resmysql_fetch_array($res);
 echo 
$res['id']; 
Seria que lo probaras
__________________
:.:Nano.:: @nano_hard - Retornando al foro
  #3 (permalink)  
Antiguo 02/06/2011, 16:29
 
Fecha de Ingreso: enero-2009
Mensajes: 246
Antigüedad: 15 años, 3 meses
Puntos: 1
Respuesta: Problema con Combos y tablas

Me quito el sombrero amigo por usted, me soluciono el problema en menos de lo que canta un gallo.

Se lo agradezco infinitamente, Tema Solucionado
  #4 (permalink)  
Antiguo 02/06/2011, 16:33
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Problema con Combos y tablas

Edicion: Parece que tarde mucho con la respuesta.

Se supone que con esto: $praiz = $_POST['praiz']; ya tienes la ID de categoria (producto raiz), despues haces una consulta adicional medio rara porque:

Código PHP:
Ver original
  1. // Estas buscando por nombre, cuando se supone que ya tienes la ID
  2. $res = mysql_query("select id from tbl_praiz where nombre like = '$praiz'");
  3.  
  4. // Que pasa si la consulta no devuelve resultados?
  5. // ... Sera error del usuario por no seleccionar una categoria, pero
  6. $res= mysql_fetch_array($res);
  7.  
  8. // ... aparecera error de PHP con la siguiente linea
  9. echo $res['id'];
  10.  
  11. // Luego, se supone que tienes la id en $res['id'], pero...
  12. // ... usas $praiz en la consulta:
  13. $sql = "INSERT INTO `keepers_com_ar_-_noticias`.`tb_fotos` ( `Foto`, `praiz`, `nproducto`, `tipoproducto`, `Descripcion`) VALUES ( '$nombre', '$praiz', '$nproducto', '$tipoproducto', '$descripcion');";

La respuesta facil:
Despues de ejecutar la consulta para buscar la categoria bastaria con agregar esta linea
$praiz = $res['id'];

La respuesta dificil:
Tienes varios problemas con la logica, comenzando por como armas el select y el supuesto valor de ID que ya debiera darte; si no se selecciono una categoria no deberias permitir que se inserte el registro; no escapas los datos alfanumericos antes de incluirlos en una consulta; etc.
__________________
- León, Guanajuato
- GV-Foto

Etiquetas: combos, tablas
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 10:36.