db, query e relazioni..testa in fumo

ciao a tutti,

 dovrei strutturare un db composto da 2 tabelle,scheda_cliente e tabellaX.

Per la scheda cliente non ci sono problemi, i dati vengono inseriti.All interno di questa tabella è presente anche il campo codanagra.

All'interno della tabellaX ho il campo punta nel quale il valore iniziale dev'essere: 000000.

il problema nasce dalla relazione che devo creare, in quanto:

per ogni nuovo cliente che si registra, il valore assegnato al campo 'codanagra' dev essere l'ultimo valore presente nel campo 'punta' +1. Inoltre, per impedire la sovrascrizione dei dati quando c è una nuova registrazione il valore del campo 'punta' deve aumentare di 1.

le caratteristiche del valore 'punta' sono CHAR con lunghezza 6.

grazie a tutti per l attenzione,

è un casino,vero?

inviato 10 anni fa
fertilia
X 0 X

no, no è un casino.

select punta from tabellax order by punta desc limit 1.

ottieni l'ultimo punta inserito nella tabella, lo salvi in codanagra.

$punta = str_pad((ilrisultatodiprima++),6,'0',STR_PAD_LEFT);

insert into tabellax (punta, altri campi) values ($punta, altri valori);

risposto 10 anni fa
LonelyWolf
X 0 X

molto probabilmente sbaglio io, perchè nel campo codanagra all interno del db mi compare la scritta SELECT

$queryA = "SELECT ult_cli FROM filepuntatbaseclientifornitori ORDER BY ult_cli DESC limit 1";      
$codanagra = str_pad(($queryA++),6,'0',STR_PAD_LEFT);

extract($_POST);

$querypr = "INSERT INTO fileanagra (codanagra,ragsoc,codfiscale,indirizzo,cap,localita,prov,contattosped,telcontattosped,email,passwordWEB,privacy)
VALUES ('$codanagra','$ragsocpr','$codfiscale','$indirizzopr','$cappr','$localitapr','$provpr','$contattosped','$telcontattosped','$email','$passwordWEB','$privacy')";

grazie tante

risposto 10 anni fa
fertilia
X 0 X

certamente che compare select, ti metti a lavorare sulla query e non sul risultato della query, prima la esegui, poi recuperi il risultato e poi il resto del lavoro.

risposto 10 anni fa
LonelyWolf
X 0 X

ciao, non so se ti trovo ancora al pc data l ora:

con questo script, ottengo esattamente l'ultimo valore di ult_cli senza che esso venga aumentato di++

$queryA = "SELECT ult_cli FROM filepuntatbaseclientifornitori ORDER BY ult_cli DESC limit 1";      
$res = mysql_query($queryA,$db);      
$fetch = mysql_fetch_row($res);      
$numero = $fetch[0];
      
$codanagra = str_pad(($numero++),6,'0',STR_PAD_LEFT);

extract($_POST);
$querypr = "INSERT INTO fileanagra (codanagra,ragsoc,codfiscale,indirizzo,cap,localita,prov,contattosped,telcontattosped,email,passwordWEB,privacy)
VALUES ('$codanagra','$ragsocpr','$codfiscale','$indirizzopr','$cappr','$localitapr','$provpr','$contattosped','$telcontattosped','$email','$passwordWEB','$privacy')";

veramente non so più dove guardare..

risposto 10 anni fa
fertilia
X 0 X

c'è solo una cosa che non ho capito: $numero deve essere inserito così com'è appena recuperato in codanagra o ci devi mettere il $numero +1 ?

così ci mette quello incrementato:

$numero = $fetch[0];
$numero = $numero+1;
$codanagra = str_pad(($numero),6,'0',STR_PAD_LEFT);
risposto 10 anni fa
LonelyWolf
X 0 X

PERFETTO, GRAZIE TANTE, FUNZIONA!!! Ora è come doveva venire

ma come mai se inserisco il valore

$numero = $numero+1;

non è uguale a $codanagra = str_pad(($numero++),6,'0',STR_PAD_LEFT);

 O0 O0 O0

risposto 10 anni fa
fertilia
X 0 X
Effettua l'accesso o registrati per rispondere a questa domanda