Creazione di 2 o più record

lucign0l0

Utente Attivo
9 Ott 2006
47
0
6
Ciao a tutti

Sto cercando di creare un programmino in php e mysql che mi permetta di creare dei record relativi ad un prodotto cliente, cosi:


In una pagina form ho questi campi


Cliente

Campo 1

Camoo 2

Campo 3

Etc


Se riempio solo il campo 1, cliccando su inserisci mi deve creare 2 record con i seguenti codice articolo (AA00001 e BB00001, che dovranno sempre essere progressivi in base alle prime due lettere iniziali); questo perché una volta trovato il modo di mettere i recodor aggiungerò altri dati per completare le info.

In pratica BB è il prodotto finale, AA quello che serve per crearlo.

Se invece compilo Campo 1 e Campo 2, allora i codico da creare sono 3 ( AA00001, AA00002, BB00001) e così via BB dovrà sempre esserci.

L'unica cosa è che il sistema deve tener conto dell'ultimo AA e BB inserito per continuità di incrementale.
Mi potete aiutare?
Ho iniziato con delle prove di If se il campo è vuoto e pieno, ed il codice iniziale l'ho inserito ma non so come farlo a fare incrementale ed univoco...

Grazie mille
 

lucign0l0

Utente Attivo
9 Ott 2006
47
0
6
questo il codice per ora creato

<?php
include ('include.php');
if(isset($_POST['submit']))
{
$codice = $_POST['codice'];

if (empty($codice)) {
//echo "vuoto";
echo "vuoto";

} else {

$tt=1;
$te=1;

$order_num=sprintf("tt%06d",$tt++);
$order_num2=sprintf("te%06d",$te++);

$sql = "INSERT INTO telai (codice)
VALUES ('$order_num'),
('$order_num2')";

}


if (mysqli_query($conn, $sql)) {
echo "New record has been added successfully !";
} else {
echo "Error: " . $sql . ":-" . mysqli_error($conn);
}
mysqli_close($conn);
}

?>
 

Max 1

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
29 Feb 2012
4.233
321
83
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strumenti
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!

Grazie

Correggi i tuoi post
mi raccomando altrimenti sarò costretto a cancellare le discussioni
 

lucign0l0

Utente Attivo
9 Ott 2006
47
0
6
Da regolamento del forum, come tutti noi sei tenuto ad usare il tag
PHP (2).png
quando posti del codice php, oppure la funzione codice dalla barra degli strumenti
box inserisci.png

Inoltre IMPORTANTE: Prima di creare una nuova discussione o di rispondere alle discussioni esistenti ricordati di leggere attentamente il Regolamento del Forum e l'eventuale regolamento specifico della sezione!

Grazie

Correggi i tuoi post
mi raccomando altrimenti sarò costretto a cancellare le discussioni
Si scusami hai perfettamente ragione ed ho letto il regolamento.. Se puoi e vuoi gentilmente puoi cancellare questo post..dalla mia pagina non riesco.
Grazie mille
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
Ipotizzando che i "campi" in post siano chiamati rispettivamente "codice1,codice2,codice3" vedi questa classettina.
Segue codice
PHP:
<?php
/**
* Created by phpS
* User: macus_adi
* Project Name: _zutils
* File: CreateCodex.php
* Path: CreateCodex
* Date: 30/05/2020
* Time: 08:49
*/

namespace Libraries;


class CreateCodex {
   public $fields_=['codice1','codice2','codice3'];
   public $data=[];
   private $config=
      [
         'codice1'=>['prefix_'=>'AA','n_len'=>6,'t_len'=>8,'init'=>0],
         'codice2'=>['prefix_'=>'AA','n_len'=>6,'t_len'=>8,'init'=>1],
         'codice3'=>['prefix_'=>'BB','n_len'=>6,'t_len'=>8,'init'=>0],
      ];
   public $result=[];

   public function __construct($data=[]) {
      $this->data=$data;
      foreach ($this->fields_ as $items){
         $this->result[$items]='';
      }
   }
   public static function FactoryCodex($data=[]){
      return (new self($data))->__init__()->result;
   }
   public function __init__(){
      array_map(function($item){call_user_func([$this,$item]);},['getMaxAllItems','checkCi','createLastItems']);
      return $this;
   }
   private function getMaxAllItems(){


      // TODO creare logica per recuperare i dati dei fields per inizializzare i valori in modo corretto (inserire il numero intero in "init" di config)
   }
   protected function checkCi(){
      foreach ($this->fields_ as $items)
         (isset($this->data[$items]) &&
             !empty($this->data[$items]) &&
                 null!==$this->data[$items])?call_user_func_array([$this,'createCode'],[$items]):null;
   }
   private function createCode($items){
      $this->config[$items]['init']=$this->config[$items]['init']+=1;
      $this->result[$items]=$this->config[$items]['prefix_'].str_pad($this->config[$items]['init'], ($this->config[$items]['n_len']-strlen($this->config[$items]['init'])), '0', STR_PAD_LEFT);
   }
   private function createLastItems(){
      $this->createCode(array_reverse(array_keys($this->config))[0]);
   }
}
Per richiamarla basta semplicemente questo codice "naturalmente se il namespace non ti piace liberissimo di eliminarlo"....

PHP:
print_r(\Libraries\CreateCodex::FactoryCodex($_POST));
Il risultato:
Codice:
Array
(
    [codice1] => AA00001
    [codice2] =>
    [codice3] => BB00001
)
NB: non ho gestito la connessione e la query per recuperare i dati dal DB, se ti serve chiedi....
 
Ultima modifica:

lucign0l0

Utente Attivo
9 Ott 2006
47
0
6
Ipotizzando che i "campi" in post siano chiamati rispettivamente "codice1,codice2,codice3" vedi questa classettina.
Segue codice
PHP:
<?php
/**
* Created by phpS
* User: macus_adi
* Project Name: _zutils
* File: CreateCodex.php
* Path: CreateCodex
* Date: 30/05/2020
* Time: 08:49
*/

namespace Libraries;


class CreateCodex {
   public $fields_=['codice1','codice2','codice3'];
   public $data=[];
   private $config=
      [
         'codice1'=>['prefix_'=>'AA','n_len'=>6,'t_len'=>8,'init'=>0],
         'codice2'=>['prefix_'=>'AA','n_len'=>6,'t_len'=>8,'init'=>1],
         'codice3'=>['prefix_'=>'BB','n_len'=>6,'t_len'=>8,'init'=>0],
      ];
   public $result=[];

   public function __construct($data=[]) {
      $this->data=$data;
      foreach ($this->fields_ as $items){
         $this->result[$items]='';
      }
   }
   public static function FactoryCodex($data=[]){
      return (new self($data))->__init__()->result;
   }
   public function __init__(){
      array_map(function($item){call_user_func([$this,$item]);},['getMaxAllItems','checkCi','createLastItems']);
      return $this;
   }
   private function getMaxAllItems(){


      // TODO creare logica per recuperare i dati dei fields per inizializzare i valori in modo corretto (inserire il numero intero in "init" di config)
   }
   protected function checkCi(){
      foreach ($this->fields_ as $items)
         (isset($this->data[$items]) &&
             !empty($this->data[$items]) &&
                 null!==$this->data[$items])?call_user_func_array([$this,'createCode'],[$items]):null;
   }
   private function createCode($items){
      $this->config[$items]['init']=$this->config[$items]['init']+=1;
      $this->result[$items]=$this->config[$items]['prefix_'].str_pad($this->config[$items]['init'], ($this->config[$items]['n_len']-strlen($this->config[$items]['init'])), '0', STR_PAD_LEFT);
   }
   private function createLastItems(){
      $this->createCode(array_reverse(array_keys($this->config))[0]);
   }
}
Per richiamarla basta semplicemente questo codice "naturalmente se il namespace non ti piace liberissimo di eliminarlo"....

PHP:
print_r(\Libraries\CreateCodex::FactoryCodex($_POST));
Il risultato:
Codice:
Array
(
    [codice1] => AA00001
    [codice2] =>
    [codice3] => BB00001
)
NB: non ho gestito la connessione e la query per recuperare i dati dal DB, se ti serve chiedi....
Grazie gentilissimo proverò... Però ve bene così troppo complesso e come mi è detto sopra ci vuole un giusto ricompenso.. Scusate il disturbo
 

macus_adi

Utente Attivo
5 Dic 2017
1.265
82
48
IT/SW
Però ve bene così troppo complesso e come mi è detto sopra ci vuole un giusto ricompenso..
Dove??? In questo thread non ci sta nulla... Intendi in quello precedente?
Qui si chiede aiuto e non lo sviluppo, quindi perchè prendersela...
Rispondendo alla richiesta di:
Sto cercando di creare un programmino in php e mysql che mi permetta di creare dei record relativi ad un prodotto cliente, cosi:
il codice sopra con il necessario...
A te la palla!