Como usar el INSERT en dos tablas?? PHP - MYSQL

  • Autor Autor Geg1
  • Fecha de inicio Fecha de inicio
Geg1

Geg1

Kappa
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Verificado por Binance
Tengo un formulario, el cual ingreso un producto nuevo a la base de datos, en el cual también incluyo la categoría del producto ya seteada por medio de un <option ....

Pero no me relaciona bien las tablas ya que me sale solo una categoría y repetida y ademas, luego de ingresarlo me da este error:

Notice: Undefined index: producto in C:\xampp\htdocs\xxxxxx\crearproducto.php on line 13

Notice: Undefined index: descripcion_p in C:\xampp\htdocs\xxxxxx\crearproducto.php on line 13
Cannot add or update a child row: a foreign key constraint fails (`gestorpedidos`.`productos`, CONSTRAINT `productos_ibfk_1` FOREIGN KEY (`categoria_id`) REFERENCES `categorias` (`id_categoria`) ON UPDATE CASCADE)

PHP:
<?php
mysql_pconnect("localhost", "root", "");
mysql_select_db("gestorpedidos");
mysql_query("SET NAMES 'utf8'");


    $formulario = $_SERVER['PHP_SELF']; 
    if (isset($_SERVER['QUERY_STRING'])) { 
        $formulario.= "?" . htmlentities($_SERVER['QUERY_STRING']); 
    } 

    if ((isset($_POST["insertar"])) && ($_POST["insertar"] == "formularioproductos")) { 
        $insertarSQL = sprintf("INSERT INTO productos (id_producto, producto, descripcion_p, precio) VALUES (null, '%s', '%s', '%s')", $_POST['producto'], $_POST['descripcion_p'], $_POST['precio']); 

        $resultado = mysql_query($insertarSQL) or die(mysql_error()); 
        
        if ($resultado == true) {
        	$insertarSQL2 = sprintf("INSERT INTO categorias (id_categoria, categoria) VALUES (null, '%s')", $_POST['categoria']); 
        }

        $luegoir = "pedidos.php"; 

        if (isset($_SERVER['QUERY_STRING'])) { 
            $luegoir.= (strpos($luegoir, '?')) ? "&" : "?"; 
            $luegoir.= $_SERVER['QUERY_STRING']; 
        } 

        header(sprintf("Location: %s", $luegoir)); 
    } 



$query_nuevoproducto = "SELECT * FROM productos INNER JOIN categorias ON productos.categoria_id = categorias.id_categoria";
$nuevoproducto = mysql_query($query_nuevoproducto) or die(mysql_error());
$row_nuevoproducto = mysql_fetch_assoc($nuevoproducto);

?>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="estilos.css">
<link href="https://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet">
<title>Ingresar Nuevo Producto</title>
</head>

<body>
<form action="<?php echo $formulario; ?>" method="post" name="formularioproductos" id="formularioproductos">
  <table align="center">
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Categoria:</td>
      <td><select name="categoria_id" size="1">
        <option value="" >Seleccionar</option>
        <?php
do {  
?>
        <option value="<?php echo $row_nuevoproducto['categoria_id']?>"><?php echo $row_nuevoproducto['categoria']?></option>
        <?php
} while ($row_nuevoproducto = mysql_fetch_assoc($nuevoproducto));
  $rows = mysql_num_rows($nuevoproducto);
  if($rows > 0) {
      mysql_data_seek($nuevoproducto, 0);
	  $row_nuevoproducto = mysql_fetch_assoc($nuevoproducto);
  }
?>
      </select></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Producto:</td>
      <td><input type="text" name="direccion" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Descripcion:</td>
      <td><input type="text" name="descripcion" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">Precio:</td>
      <td><input type="text" name="precio" value="" size="32" /></td>
    </tr>
    <tr valign="baseline">
      <td nowrap="nowrap" align="right">&nbsp;</td>
      <td align="center"><input class="boton" type="submit" value="Ingresar nuevo Producto" /></td>
    </tr>
  </table>
  <input type="hidden" name="insertar" value="formularioproductos" />
</form>
<p>&nbsp;</p>
</body>
</html>

<?php
  mysql_free_result($nuevoproducto);
 
?>
 
Hola muy buen dia, compañero espero no me lo tomes a mal, pero empezar con lo basico te puede ayudar mucho, aqui te dejo esto que creo te va a ayudar a entender muy bien sql API C SQLite - Prólogo
 
Hola muy buen dia, compañero espero no me lo tomes a mal, pero empezar con lo basico te puede ayudar mucho, aqui te dejo esto que creo te va a ayudar a entender muy bien sql API C SQLite - Prólogo
Gracias!! Voy a estar estudiando sobre MYSQL y PHP, porque se lo básico y menos jajaja, pero ahora me urge solucionar esto porque necesito presentarlo

Enviado desde mi Moto G Play mediante Tapatalk
 
Hola

Estas metiendo cuatro filas

(id_producto, producto, descripcion_p, precio)

y solo estas enviando 3 datos

$_POST['producto'], $_POST['descripcion_p'], $_POST['precio']

falta id_producto, no se por que lo pones null?

simplemente en la tabla ponlo auto_increment

Saludos
 
Hola

Estas metiendo cuatro filas

(id_producto, producto, descripcion_p, precio)

y solo estas enviando 3 datos

$_POST['producto'], $_POST['descripcion_p'], $_POST['precio']

falta id_producto, no se por que lo pones null?

simplemente en la tabla ponlo auto_increment

Saludos
Saqué id_producto pero me sigue dando el mismo error :s

Enviado desde mi Moto G Play mediante Tapatalk
 
Tienes que revisar varias cosas, que te esta llegando por el POST?.

hacer var_dump de varias respuesta, para ver que todo este correcto

ver en la tabla si el tipo esta bien, por ejemplo que en un string tengas int.

¿existe en la tabla la linea producto?
ahi dice que no
Notice: Undefined index: producto

tambien descripcion_p ?
Notice: Undefined index: descripcion_p

Sin mas datos no te puedo decir como arreglarlo

Saludos

- - - Actualizado - - -

Mas bien el valor de producto no esta llegando, tampoco el de descripcion_p o algo asi.

Saludos
 
Tienes que revisar varias cosas, que te esta llegando por el POST?.

hacer var_dump de varias respuesta, para ver que todo este correcto

ver en la tabla si el tipo esta bien, por ejemplo que en un string tengas int.

¿existe en la tabla la linea producto?
ahi dice que no
Notice: Undefined index: producto

tambien descripcion_p ?
Notice: Undefined index: descripcion_p

Sin mas datos no te puedo decir como arreglarlo

Saludos

- - - Actualizado - - -

Mas bien el valor de producto no esta llegando, tampoco el de descripcion_p o algo asi.

Saludos
La verdad que soy bastante novato en estas cosas, no se en que le puedo estar errando... porque el campo producto y descripcion_p los envío por POST..

Enviado desde mi Moto G Play mediante Tapatalk
 
La verdad que soy bastante novato en estas cosas, no se en que le puedo estar errando... porque el campo producto y descripcion_p los envío por POST..

Enviado desde mi Moto G Play mediante Tapatalk

Y si los estas recibiendo?

Pon antes de insertarlo

PHP:
var_dump($_POST['producto']);

para ver que estas recibiendo, por queno lo hacer por mysqli?

Se me hace mas facil a la hora de hacer las sentencias

por ejemplo en esa seria algo asi como

PHP:
$sql = "INSERT INTO productos (producto, descripcion_p, precio) VALUES (";
	$sql .= "'".$_POST['producto']."'";
	$sql .= ",'".$_POST['descripcion_p']."'";
	$sql .= ",'".$_POST['precio']."'";
	$sql .= ")";

	mysqli_query($connection,$sql);
 
Y si los estas recibiendo?

Pon antes de insertarlo

PHP:
var_dump($_POST['producto']);

para ver que estas recibiendo, por queno lo hacer por mysqli?

Se me hace mas facil a la hora de hacer las sentencias

por ejemplo en esa seria algo asi como

PHP:
$sql = "INSERT INTO productos (producto, descripcion_p, precio) VALUES (";
$sql .= "'".$_POST['producto']."'";
$sql .= ",'".$_POST['descripcion_p']."'";
$sql .= ",'".$_POST['precio']."'";
$sql .= ")";

mysqli_query($connection,$sql);
Porque es para presentar un trabajo de facultad, y uso un xampp versión vieja.. se que no es un código ya recomendado pero no me interesa por el momento, ya que, presento este trabajo y a otra cosa jaja

Enviado desde mi Moto G Play mediante Tapatalk
 
Porque es para presentar un trabajo de facultad, y uso un xampp versión vieja.. se que no es un código ya recomendado pero no me interesa por el momento, ya que, presento este trabajo y a otra cosa jaja

Enviado desde mi Moto G Play mediante Tapatalk

por lo que lei es problema de la tabla no de el llamado, tiene un primary con autoincrement?

Lo que haria es hacer paso por paso y ver adonde esta la falla, ve imprimiendo lo que esta llegando las respuestas.

Saludos
 
por lo que lei es problema de la tabla no de el llamado, tiene un primary con autoincrement?

Lo que haria es hacer paso por paso y ver adonde esta la falla, ve imprimiendo lo que esta llegando las respuestas.

Saludos
Gracias por tu ayuda!!!

Si, las 2 tablas y sus relaciones son:
productos:

id_producto AUTO INCREMENT

id_categoria (FK)

producto

descripcion_p

precio

categorias:

id_categoria (PK) AUTO INCREMENT

categoria


Enviado desde mi Moto G Play mediante Tapatalk
 
Atrás
Arriba