Foros del Web » Programando para Internet » PHP »

Inserción en varias tablas desde formulario mysql/php

Estas en el tema de Inserción en varias tablas desde formulario mysql/php en el foro de PHP en Foros del Web. Hola! buenas noches, solo para consultar algo que llevo rato intentando y no puedo: Tengo una base de datos en mysql en la que inserto ...
  #1 (permalink)  
Antiguo 07/06/2012, 22:36
Avatar de magc  
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
Exclamación Inserción en varias tablas desde formulario mysql/php

Hola! buenas noches, solo para consultar algo que llevo rato intentando y no puedo:

Tengo una base de datos en mysql en la que inserto datos desde un combobox php y logro hacer la inserción cuando es a una sola tabla, pero al momento de insertar a otra que tiene llave foranea es donde me atoro:

tabla categorias
id_categoria (llave primaria)
nombre_categoria

tabla marcas
id_marca (llave primaria)
nombre_marca

tabla artículo
codigo (llave primaria)
descripcion
id_categoria (llave foranea)
id_marca (llave foranea)
foto


Ahora, el formulario para dar de alta un nuevo artículo es:


codigo |____________| (caja texto)
clave |____________| (caja texto)
desc.. |____________| (caja texto)
catego >elige una..< (select, que obtiene las opciones de mi tabla "categorias")
marca >elige una..< (select, que obtiene las opciones de mi tabla "marcas")



Este es el problema: en la pantalla del formulario, sí se rellenan los dos select con los datos de la tabla, solo que al elegir no puedo hacer la inserción correctamente, pues se supone que debe insertar el id (llave primaria) de cada tabla en cuestion, para no redundar toda la palabra por cada artículo, pero no logro hacerlo, mi código es el siguiente:

alta_articulo.php
Código:
<?php

require ("conexion.php");
$status = "";

$status = "";											
	if (isset($_POST["codigo"])) {									
	    $codigo = $_POST['codigo'];						
	    $descripcion = $_POST['descripcion'];
		$categoria = $_POST['categoria'];
		$marca = $_POST['marca'];
		   
	    $sql = "INSERT INTO articulos (codigo, descripcion, id_categoria, id_marca)"
		. "values ('$codigo', '$descripcion', '$categoria', '$marca')";	
   
	    mysql_query($sql, $conexion);						
	    $status = "ok";										
	}
	
	$sql0 = "SELECT * FROM categorias";
    $result0 = mysql_query($sql0);
    $idcategoria = "";
    while ($row = mysql_fetch_assoc($result0)) {
    	 $idcategoria .= "<option value='$row[id_categoria]'>$row[categoria]</option>\n";
    } 
	
	$sql1 = "SELECT * FROM marcas";
    $result1 = mysql_query($sql1);
    $marcas = "";
    while ($row = mysql_fetch_assoc($result1)) {
    	 $marcas .= "<option value='$row[id_marca]'>$row[marca]</option>\n";
    }
														
?>

<html>	
<head><title>alta_articulo</title>
</head>
	  
<blockquote>	
 	<form method="post" action="alta_articulo.php">
	<table cellpadding="3" cellspacing="3">
		<tr>
           <td>Codigo</td>
           <td><input type="text" id="codigo" name="codigo" size="13" maxlength="13" /></td>
         </tr>
		 <tr>
           <td>Descripcion</td>
           <td><input type="text" id="descripcion" name="descripcion" size="20" maxlength="50" /></td>
           </tr>
		 <tr>
           <td>Categoria</td>
           <td><select name="categoria" id="categoria"><?php echo $idcategoria ?></select></td>
         </tr>
		 <tr>
           <td>Marca</td>
           <td><select name="marca" id="marca"><?php echo $marcas ?></select></td>
         </tr>
		 <tr>
           <td><button type="submit">Registrar</button><button type="reset">Borrar</button></td>
         </tr>       
	</table>                                                                 
	</form>
</blockquote>	
	</body>															
</html>
Ojalá me haya explicado, y si alguien pudiera ayudarme se los agradecería bastante, he leido varios artículos que me han ayudado a construir lo que llevo pero ya me estanqué aqui.

por su tiempo, mil gracias!

  #2 (permalink)  
Antiguo 08/06/2012, 02:19
Avatar de oscartt67  
Fecha de Ingreso: abril-2012
Ubicación: fonollosa
Mensajes: 481
Antigüedad: 12 años
Puntos: 97
Respuesta: Inserción en varias tablas desde formulario mysql/php

Ese código, a simple vista se ve correcto.
Te dá algun error?
Prueba de hacer un echo $sql; (el del insert) y verás como que pinta tiene: si parece correcto, copia y pega en phpmyadmin y ejecutalo ahí. Eso te dará pistas...

Saludos.
  #3 (permalink)  
Antiguo 08/06/2012, 06:20
Avatar de loncho_rojas
Colaborador
 
Fecha de Ingreso: octubre-2008
Ubicación: En el mejor lugar del mundo
Mensajes: 2.704
Antigüedad: 15 años, 6 meses
Puntos: 175
Respuesta: Inserción en varias tablas desde formulario mysql/php

es dificil saber cual es el error, debido a que solo tú conoces tu BD y la estructura de lo que estas haciendo... te pediria un favor... que declares los errores si no esta funcionando.. para ello usa el mysql_error luego de tu query

ALGO ASI:

Código PHP:
$result0 mysql_query($sql0) or die("ERROR 0: ".mysql_error());

$result1 mysql_query($sql1) or die("ERROR 1: ".mysql_error()); 
esto ayudara a saber cual es el error... en cada query puedes reemplazar la cadena "ERROR 1: " por una palabra personalizada para saber a que query corresponde el error.

Pruebalo y dinos que te dice
__________________
Ayudo con lo que puedo en el foro, y solo en el foro.. NO MENSAJES PRIVADOS.. NO EMAILS NI SKYPE u OTROS.

Antes de hacer un TOPICO piensa si puedes hallarlo en Google o en el Buscador del Foro...
  #4 (permalink)  
Antiguo 11/06/2012, 22:24
Avatar de magc  
Fecha de Ingreso: febrero-2012
Mensajes: 2
Antigüedad: 12 años, 2 meses
Puntos: 0
De acuerdo Respuesta: Inserción en varias tablas desde formulario mysql/php

Hola!!! buenas noches, perdon por tardar tanto en responder, estuve batallando un buen rato pero al fin pude hacer la inserción correctamente, me ayudó bastante el declarar los errores...

Después de tanto que le estuve corrigiendo, cambiando, agregando y quitando por fin me quedó el código adecuado, agradezco muchísimo a ambos que se tomaron el tiempo de responder, de verdad GRACIASSS

igual pongo el código como me quedó, por si sirve para algo. (he tomado bastante de este foro, así que pongo mi granito de arena)

otra vez G R A C I A S ! !


Código:
<?php

require ("conexion.php");
$status = "";

$status = "";											
	if (isset($_POST["codigo"])) {									
	    $codigo = $_POST['codigo'];				
	    $clave = $_POST['clave'];		
	    $descripcion = $_POST['descripcion'];
		$categoria = $_POST['categoria'];
		$marca = $_POST['marca'];
		$precio = $_POST['precio'];
		   
	    $sql = "INSERT INTO articulos (codigo, clave, descripcion, id_categoria, id_marca, costo)"
		. "values ('$codigo', '$clave', '$descripcion', '$categoria', '$marca', '$precio')";	
   

		$resultI = mysql_query($sql) or die("Fallo al hacer la insercion: ".mysql_error());
		
	}
	
	$sql0 = "SELECT * FROM categorias";
    $result0 = mysql_query($sql0);
    $idcategoria = "";
    while ($row = mysql_fetch_assoc($result0)) {
    	 $idcategoria .= "<option value='$row[id_categoria]'>$row[categoria]</option>\n";
	$resultII = mysql_query($sql0) or die("Fallo al seleccionar categorias: ".mysql_error());
    } 
	

	$sql1 = "SELECT * FROM marcas";
    $result1 = mysql_query($sql1);
    $marcas = "";
    while ($row = mysql_fetch_assoc($result1)) {
    	 $marcas .= "<option value='$row[id_marca]'>$row[marca]</option>\n";
	$resultIII = mysql_query($sql1) or die("Fallo al seleccionar marcas: ".mysql_error());
    }
	

?>

Etiquetas: formulario, html, inserción, mysql, mysql-php, sql, tabla, 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 14:47.