Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Antoniio en 20 Septiembre 2018, 02:04 am



Título: Como tener una categoría invisible donde se guarden los datos sin seleccionarla
Publicado por: Antoniio en 20 Septiembre 2018, 02:04 am
Hola, buenas. Quisiera ver cuál es la forma de tener una categoría oculta o que todos los servicios que cree se vayan a una categoría sin tener que seleccionarla.
El sistema me pide opción de "Descripción, Categoría y Precio" pero quité el de "Categoría" dejando solo el de "Descripción y Precio" pero cuando creo un servicio me arroja este error:

(https://i.imgur.com/RkGMICz.png) (https://i.imgur.com/RkGMICz.png)

Osea, hay una condición en el código que me impide crear un servicio sin categoría, por eso quiero saber cómo hago para que no me mande esa condición. La parte del código que debo modificar es esta:

Código
  1. <?php
  2. if(isset($_POST['add_product'])){
  3.   $req_fields = array('product-title','product-categorie','product-quantity','buying-price', 'saleing-price' );
  4.   validate_fields($req_fields);
  5.   if(empty($errors)){
  6.     $p_name  = remove_junk($db->escape($_POST['product-title']));
  7.     $p_cat   = remove_junk($db->escape($_POST['product-categorie']));
  8.     $p_qty   = remove_junk($db->escape($_POST['product-quantity']));
  9.     $p_buy   = remove_junk($db->escape($_POST['buying-price']));
  10.     $p_sale  = remove_junk($db->escape($_POST['saleing-price']));
  11.     if (is_null($_POST['product-photo']) || $_POST['product-photo'] === "") {
  12.       $media_id = '0';
  13.     } else {
  14.       $media_id = remove_junk($db->escape($_POST['product-photo']));
  15.     }
  16.     $date    = make_date();
  17.     $query  = "INSERT INTO products (";
  18.     $query .=" name,quantity,buy_price,sale_price,categorie_id,media_id,date";
  19.     $query .=") VALUES (";
  20.     $query .=" '{$p_name}', '{$p_qty}', '{$p_buy}', '{$p_sale}', '{$p_cat}', '{$media_id}', '{$date}'";
  21.     $query .=")";
  22.     $query .=" ON DUPLICATE KEY UPDATE name='{$p_name}'";
  23.     if($db->query($query)){
  24.       $session->msg('s',"Producto agregado exitosamente. ");
  25.       redirect('add_product.php', false);
  26.     } else {
  27.       $session->msg('d',' Lo siento, registro falló.');
  28.       redirect('product.php', false);
  29.     }
  30.  
  31.   } else{
  32.     $session->msg("d", $errors);
  33.     redirect('add_product.php',false);
  34.   }
  35.  
  36. }
  37.  
  38. ?>
  39. <?php include_once('layouts/header.php'); ?>
  40. <div class="row">
  41.  <div class="col-md-12">
  42.    <?php echo display_msg($msg); ?>
  43.  </div>
  44. </div>
  45.  <div class="row">
  46.  <div class="col-md-9">
  47.      <div class="panel panel-default">
  48.        <div class="panel-heading">
  49.          <strong>
  50.            <span class="glyphicon glyphicon-th"></span>
  51.            <span>Agregar Servicio</span>
  52.         </strong>
  53.        </div>

Y este:

Código
  1. function validate_fields($var){
  2.  global $errors;
  3.  foreach ($var as $field) {
  4.    $val = remove_junk($_POST[$field]);
  5.    if(isset($val) && $val==''){
  6.      $errors = $field ." No puede estar en blanco.";
  7.      return $errors;
  8.    }
  9.  }
  10. }


Me podrían ayudar a saber cómo quitar que sea obligatoria una categoría o cómo hacer que todos los servicios que se generen se vayan a 1 categoría que esté oculta??

Gracias de antemano, saludos !!!


Mod: Tamaño máximo de las imágenes -> 800x600px.


Título: Re: Como tener una categoría invisible donde se guarden los datos sin seleccionarla
Publicado por: #!drvy en 20 Septiembre 2018, 03:37 am
Yo más bien miraría como ocultar dicha categoría puesto que puede suponer un problema bastante gordo que ese campo no se rellene dependiendo de como este programado ese CMS.

Dicho esto, lo más fácil para evitar ese error, parece ser eliminar product-categorie del array $req_fields en la linea 3 de tu código.

Código
  1. $req_fields = array('product-title','product-quantity','buying-price', 'saleing-price' );


Saludos


Título: Re: Como tener una categoría invisible donde se guarden los datos sin seleccionarla
Publicado por: Antoniio en 20 Septiembre 2018, 08:28 am
Ya lo hice, de hecho saqué todo menos el de la descripción y precio, lo dejé así:
Código:
<?php
 if(isset($_POST['add_product'])){
   $req_fields = array('product-title', 'saleing-price' );
   validate_fields($req_fields);
   if(empty($errors)){
     $p_name  = remove_junk($db->escape($_POST['product-title']));
     $p_sale  = remove_junk($db->escape($_POST['saleing-price']));
     $date    = make_date();
     $query  = "INSERT INTO products (";
     $query .=" name,sale_price";
     $query .=") VALUES (";
     $query .=" '{$p_name}', '{$p_sale}'";
     $query .=")";
     $query .=" ON DUPLICATE KEY UPDATE name='{$p_name}'";
     if($db->query($query)){
       $session->msg('s',"Producto agregado exitosamente. ");
       redirect('add_product.php', false);
     } else {
       $session->msg('d',' Lo siento, registro falló.');
       redirect('product.php', false);
     }

   } else{
     $session->msg("d", $errors);
     redirect('add_product.php',false);
   }

Y me aparece esto:
(https://i.imgur.com/8JiYKMc.png)

incluso lo he puesto así:
Código:
$req_fields = array('product-title', 'saleing-price' );  
$p_cat = "0"; //categoria por defecto 
$p_qty = "0";
$p_buy = "0";
   validate_fields($req_fields);
   if(empty($errors)){
     $p_name  = remove_junk($db->escape($_POST['product-title']));
     $p_sale  = remove_junk($db->escape($_POST['saleing-price']));

y me sigue mandando el mismo error..


Título: Re: Como tener una categoría invisible donde se guarden los datos sin seleccionarla
Publicado por: #!drvy en 20 Septiembre 2018, 15:59 pm
Averigua cual es el error. Te da la consulta pero no el error.. haz debug.

Saludos


Título: Re: Como tener una categoría invisible donde se guarden los datos sin seleccionarla
Publicado por: Antoniio en 20 Septiembre 2018, 19:50 pm
Pero cómo puedo hacer el debug?