Ricerca valore mysql e incremento

lucign0l0

Utente Attivo
9 Ott 2006
50
0
6
Ciao a tutti

Come posso trovare due valori in mysql (attraverso php) diversi e incrementarli di 1 al prossimo loro inserimento?
Tipo cercare ultimo valore che inizia per AA e ultimo valore che inizia per BB.. Trovari li uso in una INTO incrementando di 1..

Per ora arrivo a fare due query separate

Codice:
Select * from tabella where codice like 'aa%' order by id desc

Stessa cosa faccio per l'altra.. Non so se è corretto.. Però mi incastro per utilizzare il risultato per incrementarlo di uno quando inserisco altri dati.. Sigh...
Grazie per l'aiuto
 
In che senso? Non sono delle stringhe?
No nel senso sono codici che vengono inseriti mediante form ( se riempio un capo e clicco invia, questo mi genera due record, id 1 valore aa0001, id 2 valore bb0001... Vanno coppie), io vorrei richiamare questi ultimi valori e generare il progressivo al prossimo invio di form...
 
Select * from tabella where codice like 'aa%' order by id desc
Per prima cosa, dato che ti serve solo l'ultimo dato per A e B aggiungerei LIMIT 1 a questa query.
Poi per incrementarli di 1 potresti usare la funzione substr:
PHP:
$stringa=$ultimo_valore_db;
$numero=substr($stringa, 2, 4);
$num=$numero+1;
$comp=str_pad($num, 4, 0, STR_PAD_LEFT);
$increm="aa".$comp;
Con questo codice, ipotizzando ad esempio che l'ultimo valore del database ($stringa) sia "aa0002", in teoria $increm dovrebbe essere "aa0003"
 
Per prima cosa, dato che ti serve solo l'ultimo dato per A e B aggiungerei LIMIT 1 a questa query.
Poi per incrementarli di 1 potresti usare la funzione substr:
PHP:
$stringa=$ultimo_valore_db;
$numero=substr($stringa, 2, 4);
$num=$numero+1;
$comp=str_pad($num, 4, 0, STR_PAD_LEFT);
$increm="aa".$comp;
Con questo codice, ipotizzando ad esempio che l'ultimo valore del database ($stringa) sia "aa0002", in teoria $increm dovrebbe essere "aa0003"
Molto bello... Domani la provo... Come passo poi alla Insert i due valori +1? Ne cre creo due di variabili che richiamano questa strim?
Grazie di cuore
 
Si, puoi fare così:
PHP:
$aa_query=mysqli_query($conn,"Select * from tabella where codice like 'aa%' order by id desc LIMIT 1");
while($get_aa=mysqli_fetch_assoc($aa_query)){
$aa=$get_aa['nome_campo'];
}

$bb_query=mysqli_query($conn,"Select * from tabella where codice like 'bb%' order by id desc LIMIT 1");
while($get_bb=mysqli_fetch_assoc($bb_query)){
$bb=$get_bb['nome_campo'];
}

$numero_aa=substr($aa, 2, 4);
$num_aa=$numero_aa+1;
$comp_aa=str_pad($num_aa, 4, 0, STR_PAD_LEFT);
$increm_aa="aa".$comp_aa;

$numero_bb=substr($bb, 2, 4);
$num_bb=$numero_bb+1;
$comp_bb=str_pad($num_bb, 4, 0, STR_PAD_LEFT);
$increm_bb="bb".$comp_bb;

$insert_aa=mysqli_query($conn,"INSERT INTO tabella(nome_campo) VALUES('$increm_aa')");
$insert_bb=mysqli_query($conn,"INSERT INTO tabella(nome_campo) VALUES('$increm_bb')");
 
Codice:
<?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++);
                                          
                    $result = mysqli_query("INSERT INTO dati (codice) VALUES ('$order_num'), ('$order_num2')");
                }
 
if (mysqli_query($conn, $result)) {
        echo "Prodotto Inserito Correttamente";
     } else {
        echo "Error: " . $result . "
" . mysqli_error($conn);
     }
     mysqli_close($conn);
}
Ciao Tommy03

sto impalcando il tutto per poi inserire i tuoi suggerimenti....ma ora mi genera errore...giuro fino a ieri sera andava tutto

Notice: Undefined variable: result in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\telai\invia.php on line 22

Warning
: mysqli_query(): Empty query in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\telai\invia.php on line 22

Notice
: Undefined variable: result in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\telai\invia.php on line 25
 
Ci sono diversi errori, innanzitutto per risolvere gli errori generati questo blocco devi metterlo subito dopo la query $result:
if (mysqli_query($conn, $result)) { echo "Prodotto Inserito Correttamente"; } else { echo "Error: " . $result . " " . mysqli_error($conn); }
Quindi intanto devi cambiare così:
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++);
                                          
                    $result = "INSERT INTO dati (codice) VALUES ('$order_num'), ('$order_num2')";
if (mysqli_query($conn, $result)) {
        echo "Prodotto Inserito Correttamente";
     } else {
        echo "Error: " . $result . "
" . mysqli_error($conn);
     }
                }
     mysqli_close($conn);
}

Poi ci sono altri errori, ad esempio nell'insert:
PHP:
INSERT INTO dati (codice) VALUES ('$order_num'), ('$order_num2')
Hai messo dati(codice), ciò significa che l'inserimento avviene in un solo campo, ma te hai messo 2 values, quindi su due campi.
Perciò devi fare due insert separati:
PHP:
$result = "INSERT INTO dati (codice) VALUES ('$order_num')";
$result1 = "INSERT INTO dati (codice) VALUES ('$order_num2')";
Intanto fai queste modifiche, poi c'è altro che non mi convince, ossia questa parte:
PHP:
$tt='1';
                    $te='1';

                            $order_num=sprintf("tt%06d",$tt++);
                    $order_num2=sprintf("te%06d",$te++);
Per prima cosa in PHP i numeri si scrivo senza apici, quindi:
PHP:
$tt=1;
                    $te=1;
E poi questa parte:
PHP:
 $order_num=sprintf("tt%06d",$tt++);
                    $order_num2=sprintf("te%06d",$te++);
non ha molto senso, cosa significa?
 
Ci sono diversi errori, innanzitutto per risolvere gli errori generati questo blocco devi metterlo subito dopo la query $result:

Quindi intanto devi cambiare così:
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++);
                                         
                    $result = "INSERT INTO dati (codice) VALUES ('$order_num'), ('$order_num2')";
if (mysqli_query($conn, $result)) {
        echo "Prodotto Inserito Correttamente";
     } else {
        echo "Error: " . $result . "
" . mysqli_error($conn);
     }
                }
     mysqli_close($conn);
}

Poi ci sono altri errori, ad esempio nell'insert:
PHP:
INSERT INTO dati (codice) VALUES ('$order_num'), ('$order_num2')
Hai messo dati(codice), ciò significa che l'inserimento avviene in un solo campo, ma te hai messo 2 values, quindi su due campi.
Perciò devi fare due insert separati:
PHP:
$result = "INSERT INTO dati (codice) VALUES ('$order_num')";
$result1 = "INSERT INTO dati (codice) VALUES ('$order_num2')";
Intanto fai queste modifiche, poi c'è altro che non mi convince, ossia questa parte:
PHP:
$tt='1';
                    $te='1';

                            $order_num=sprintf("tt%06d",$tt++);
                    $order_num2=sprintf("te%06d",$te++);
Per prima cosa in PHP i numeri si scrivo senza apici, quindi:
PHP:
$tt=1;
                    $te=1;
E poi questa parte:
PHP:
$order_num=sprintf("tt%06d",$tt++);
                    $order_num2=sprintf("te%06d",$te++);
non ha molto senso, cosa significa?

Hai ragione su tutto...infatti sto cercando di impalcare tutto bene, se vuoi ed hai tempo ti spiego meglio ( ma tu usi skype che nel caso ti scrivo via chat che viene meglio....)
cmq, questa è la mia idea

Come ti dicevo da una Form ( ora non del tutto formata perchè sto inziando a fare il giro degli articoli) , devo creare 2 articoli appunto, TT000001 e TE000001....TE e TT vanno sempre a coppia....faccio dei controlli sul campo, se è vuoto non creo nulla altrimenti genero i due articoli ( che avranno in comune il codice inserito nella form).

Da li poi la tua mega soluzione nel fare l'incremento del numero..

Però da qualche parte devo iniziare per generare i codici....altrimenti non sapevo come inserirli, per poi cercarli e quindi incrementarli.

Non ti piace? Sono una schiappa...di solito faccio cose semplici ora sto cercando di fare una cosa molto complessa....però vorri riuscirci in qualche modo.

grazie per l'aiuto.
 
La tabella come è strutturata? Vuoi che ci siano sempre due righe (TE e TT) che cambiano i propri valori ad ogni inserimento del form?
 
La tabella come è strutturata? Vuoi che ci siano sempre due righe (TE e TT) che cambiano i propri valori ad ogni inserimento del form?

Si, di fatto si...

La tabella avrà 6 campi, quello che determina quanti codici generare è il campo CODICE, da li mi creo sempre i due record che vanno sempre in coppia ( TTxxx e TExxx), perchè il TE dipende dal TT....ed avranno tutti i campi in comune compilati nella FORM.

Però ad ogni inserimento devo incrementarli.
 
Ciao Tommy

guarda cosa ho messo in piedi, dimmi se va bene così:

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

            if (empty($codice)) {
              //echo "vuoto";
                   echo "vuoto";
            
            } else {
            
                    
                    $tt_query=mysqli_query($conn,"Select * from dati where codice like 'tt%' order by id desc LIMIT 1");
                    $te_query=mysqli_query($conn,"Select * from dati where codice like 'te%' order by id desc LIMIT 1");
                    

                        if (($tt_query > "0") and ($te_query > "0")){
                        
                                while($get_tt=mysqli_fetch_assoc($tt_query)){
                                $tt=$get_tt['codice'];
                                }                               
                                
                                while($get_te=mysqli_fetch_assoc($te_query)){
                                $te=$get_te['codice'];
                                }

                                $numero_tt=substr($tt, 2, 6);
                                $num_tt=$numero_tt+1;
                                $comp_tt=str_pad($num_tt, 6, 0, STR_PAD_LEFT);
                                $increm_tt="tt".$comp_tt;

                                $numero_te=substr($te, 2, 6);
                                $num_te=$numero_te+1;
                                $comp_te=str_pad($num_te, 6, 0, STR_PAD_LEFT);
                                $increm_te="te".$comp_te;

                                $insert_tt=mysqli_query($conn,"INSERT INTO dati (codice) VALUES('$increm_tt')");
                                $insert_te=mysqli_query($conn,"INSERT INTO dati (codice) VALUES('$increm_te')");           
                                
                                                    
                                } else {
                
                
                                        $tt=1;
                                        $te=1;

                                        $order_num=sprintf("tt%06d",$tt++);
                                        $order_num2=sprintf("te%06d",$te++);
                                            
                                        
                                        $sql = "INSERT INTO dati (codice)
                                                VALUES ('$order_num'),
                                                ('$order_num2');";
                                                                                    
                                    }               
                    
                   }
  
     if (mysqli_query($conn, $insert_tt,$insert_te, $sql)) {
        echo "New record has been added successfully !";
     } else {
        echo "Error: " . $insert_tt . ":-" . mysqli_error($conn);
    echo "<br />";
    echo "Error: " . $insert_te . ":-" . mysqli_error($conn);
    echo "<br />";
    echo "Error: " . $sql . ":-" . mysqli_error($conn);
            }
     mysqli_close($conn);
}

?>


Sul DB vedo che incrementa anche se sulla pagina web mi restituisce degli errori dovuti all'ultima IF:

Notice: Undefined variable: tt in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\telai\invia.php on line 28

Notice
: Undefined variable: sql in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\telai\invia.php on line 60

Warning
: mysqli_query() expects at most 3 parameters, 4 given in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\telai\invia.php on line 60
Error: 1:-
Error: 1:-

Notice: Undefined variable: sql in C:\Program Files (x86)\EasyPHP-Webserver-14.1b2\www\telai\invia.php on line 67
Error: :-

devo provare senza codici inseriti se me li crea da zero.

Forse siamo sulla strada giusta...non so, mi rimetto a te che sei un guro in questo.

Grazie
 
Ciao, ora purtroppo non ho tempo, cerchero di darti una mano nel pomeriggio.
Cmq vedo già parecchi errori:
if (($tt_query > "0") and ($te_query > "0")){
Questo ad esempio dovresti sostituirlo con:
PHP:
if((($mysqli_num_rows($tt_query))>0) AND (($mysqli_num_rows($te_query))>0)){

Poi questo:
if (mysqli_query($conn, $insert_tt,$insert_te, $sql)) { echo "New record has been added successfully !"; } else { echo "Error: " . $insert_tt . ":-" . mysqli_error($conn); echo "<br />"; echo "Error: " . $insert_te . ":-" . mysqli_error($conn); echo "<br />"; echo "Error: " . $sql . ":-" . mysqli_error($conn); }
Devi spostarlo tutto immediatamente dopo la query e inoltre devi cancellare da mysqli_query() $insert_te che ti da errore. E poi riguarda nel mio post precedente dove avevo scritto di fare due query separate.
Ora sono da telefono e faccio fatica, oggi cercherò di esseri d'aiuto
 
Ciao, ora purtroppo non ho tempo, cerchero di darti una mano nel pomeriggio.
Cmq vedo già parecchi errori:

Questo ad esempio dovresti sostituirlo con:
PHP:
if((($mysqli_num_rows($tt_query))>0) AND (($mysqli_num_rows($te_query))>0)){

Poi questo:

Devi spostarlo tutto immediatamente dopo la query e inoltre devi cancellare da mysqli_query() $insert_te che ti da errore. E poi riguarda nel mio post precedente dove avevo scritto di fare due query separate.
Ora sono da telefono e faccio fatica, oggi cercherò di esseri d'aiuto


si certo....allora ti aspetto prima di proseguire....cmq se hai skype mi trovi qui AntonioCriCri

Grazie di cuore per tutto
 
Codice:
<?php
include ('include.php');
if(isset($_POST['submit']))
{   
     $codice = $_POST['codice'];

            if (empty($codice)) {
            
                   echo "vuoto";
            
            } else {
            
                    $tt_query=mysqli_query($conn,"Select * from dati where codice like 'tt%' order by id desc LIMIT 1");
                    $te_query=mysqli_query($conn,"Select * from dati where codice like 'te%' order by id desc LIMIT 1");
                    

                        if (($tt_query > "0") AND ($te_query > "0")) {
                        
                                            
                                while($get_tt=mysqli_fetch_assoc($tt_query)){
                                $tt=$get_tt['codice'];
                                }                               
                                
                                while($get_te=mysqli_fetch_assoc($te_query)){
                                $te=$get_te['codice'];
                                }

                                $numero_tt=substr($tt, 2, 6);
                                $num_tt=$numero_tt+1;
                                $comp_tt=str_pad($num_tt, 6, 0, STR_PAD_LEFT);
                                $increm_tt="tt".$comp_tt;

                                $numero_te=substr($te, 2, 6);
                                $num_te=$numero_te+1;
                                $comp_te=str_pad($num_te, 6, 0, STR_PAD_LEFT);
                                $increm_te="te".$comp_te;
                                                    
                                $sql="INSERT INTO dati (codice) VALUES('$increm_te');"; 
                                $sql .="INSERT INTO dati (codice) VALUES('$increm_te');";         
                                
                                } else {
                                
                                        if (($tt_query<"0") AND ($te_query<"0")) {
            
                                        $tt="tt000001";
                                        $te="te000001";
                                        
                                        $sql="INSERT INTO dati (codice) VALUES('$tt');"; 
                                                $sql .="INSERT INTO dati (codice) VALUES('$te');";         
                                                                                                     
                                                                    }               
                    
                                    }
  
                  }

    if (mysqli_multi_query($conn,$sql) === TRUE) {
        echo "New record has been added successfully !";
     } else {
           echo "Error: " . $sql . ":-" . mysqli_error($conn);
    echo "<br/>";
    echo "Error: " . $sql . ":-" . mysqli_error($conn);

    }       
    
    
     mysqli_close($conn);
}

?>

Giusto per fare un pò di ordine, ho rifatto tutto così ( poi attendo tue )...vedo che incrementa oppure inserisce da zero....ma genera sempre dei notice o warnig quando lo eseguo ( anche quando mi deve dire che il campo è vuoto)....e poi non so se è corretta come procudeura.

Grazie ciao
 
Prova così
PHP:
<?php
include ('include.php');
if(isset($_POST['submit']))
{   
     $codice = $_POST['codice'];

            if (empty($codice)) {
            
                   echo "vuoto";
            
            } else {
            
                    $tt_query=mysqli_query($conn,"Select * from dati where codice like 'tt%' order by id desc LIMIT 1");
                    $te_query=mysqli_query($conn,"Select * from dati where codice like 'te%' order by id desc LIMIT 1");
                    

$te_num_righe=mysqli_num_rows($te_query);
$tt_num_righe=mysqli_num_rows($tt_query);
                        if (($tt_num_righe > 0) AND ($te_num_righe > 0)) {
                        
                                            
                                while($get_tt=mysqli_fetch_assoc($tt_query)){
                                $tt=$get_tt['codice'];
                                }                               
                                
                                while($get_te=mysqli_fetch_assoc($te_query)){
                                $te=$get_te['codice'];
                                }

                                $numero_tt=substr($tt, 2, 6);
                                $num_tt=$numero_tt+1;
                                $comp_tt=str_pad($num_tt, 6, 0, STR_PAD_LEFT);
                                $increm_tt="tt".$comp_tt;

                                $numero_te=substr($te, 2, 6);
                                $num_te=$numero_te+1;
                                $comp_te=str_pad($num_te, 6, 0, STR_PAD_LEFT);
                                $increm_te="te".$comp_te;
                                                    
                                $sql="INSERT INTO dati (codice) VALUES('$increm_tt');"; 
                                $sql1="INSERT INTO dati (codice) VALUES('$increm_te');";         
   if (mysqli_query($conn,$sql) === TRUE) {
        echo "New record has been added successfully !";
     } else {
           echo "Error: " . $sql . ":-" . mysqli_error($conn);
    echo "<br/>";
    echo "Error: " . $sql . ":-" . mysqli_error($conn);

    }                                    
                                } else {
                                
                                        
                                        $tt="tt000001";
                                        $te="te000001";
                                        
                                        $sql="INSERT INTO dati (codice) VALUES('$tt');"; 
                                                $sql1="INSERT INTO dati (codice) VALUES('$te');";         
                                                                                                     
     if (mysqli_query($conn,$sql) === TRUE) {
        echo "New record has been added successfully !";
     } else {
           echo "Error: " . $sql . ":-" . mysqli_error($conn);
    echo "<br/>";
    echo "Error: " . $sql . ":-" . mysqli_error($conn);

    }                                                                                             
                                    }
  
                  }
    
    
     mysqli_close($conn);
}
?>
 
Ciao

allora, gli errori spariti...però se parto da zero mi crea solo TT000001 e sa vado a incremento mi crea solo TT000001 ....mentre prima faceva il giro giusto ma con i vari NOTICE
 
Codice:
<?php
include ('include.php');
if(isset($_POST['submit']))
{   
     $codice = $_POST['codice'];

            if (empty($codice)) {
            
                   echo "vuoto";
            
            } else {
            
                    $tt_query=mysqli_query($conn,"Select * from dati where codice like 'tt%' order by id desc LIMIT 1");
                    $te_query=mysqli_query($conn,"Select * from dati where codice like 'te%' order by id desc LIMIT 1");
                    

$te_num_righe=mysqli_num_rows($te_query);
$tt_num_righe=mysqli_num_rows($tt_query);
                        if (($tt_num_righe > 0) AND ($te_num_righe > 0)) {
                        
                                            
                                while($get_tt=mysqli_fetch_assoc($tt_query)){
                                $tt=$get_tt['codice'];
                                }                               
                                
                                while($get_te=mysqli_fetch_assoc($te_query)){
                                $te=$get_te['codice'];
                                }

                                $numero_tt=substr($tt, 2, 6);
                                $num_tt=$numero_tt+1;
                                $comp_tt=str_pad($num_tt, 6, 0, STR_PAD_LEFT);
                                $increm_tt="tt".$comp_tt;

                                $numero_te=substr($te, 2, 6);
                                $num_te=$numero_te+1;
                                $comp_te=str_pad($num_te, 6, 0, STR_PAD_LEFT);
                                $increm_te="te".$comp_te;
                                                    
                                $sql="INSERT INTO dati (codice) VALUES('$increm_tt');";
                                $sql .="INSERT INTO dati (codice) VALUES('$increm_te');";         
   if (mysqli_multi_query($conn,$sql)  === TRUE) {
        echo "New record has been added successfully !";
     } else {
           echo "Error: " . $sql . ":-" . mysqli_error($conn);
    echo "<br/>";
    echo "Error: " . $sql . ":-" . mysqli_error($conn);

    }                                   
                                } else {
                                
                                        
                                        $tt="tt000001";
                                        $te="te000001";
                                        
                                        $sql="INSERT INTO dati (codice) VALUES('$tt');";
                                                $sql .="INSERT INTO dati (codice) VALUES('$te');";         
                                                                                                    
     if (mysqli_multi_query($conn,$sql)  === TRUE) {
        echo "New record has been added successfully !";
     } else {
           echo "Error: " . $sql . ":-" . mysqli_error($conn);
    echo "<br/>";
    echo "Error: " . $sql . ":-" . mysqli_error($conn);

    }                                                                                             
                                    }
 
                  }
    
    
     mysqli_close($conn);
}
?>


Così va. Può andare bene ?
 
Si si avevo dimenticato di aggiungere mysqli_query, come hai scritto te va benissimo credo
Ok perfetto....ora continuo la programmazione e vedo dove arrivo....perchè diventerà ancora + complesso , con altri campi passati da form...alcuni con calcolo matematico.

intanto ti ringrazio e nella pgina WEB metterò il tuo nick....come giusto che sia per l'aito dato...

Poi se per te non è un problema ti chiederò una mano ( mai fatto questo giro) a fare dei calcoli metetici particolari in php...cmq se hai skype ti scrivo meglio nel caso ti scrivo qui

grazie di cuore per tutto....se hai bisogno invece tu di una mano in Windows server client a disposizione

ciao
 

Discussioni simili