doppia PRIMARY KEY ?

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
nonostante penda sul mio capo una pratica...
devo inserire un codice alfanumerico retalito ad un articolo è evidente che tale codice deve essere unico e, nel mio caso primary key. Tramite form inserisco il codice e poi la descrizione, ho fatto delle prove simulate di errore cercando di inserire un codice uguale ad uno gia esistente. Al send il form scompare. Quando vado a visionare GIUSTAMENTE il codice erroneamente inserito e relativa descrizione non sono stati registrati.
A quasto punto vorrei sapere se esiste una funzione tipo mysql_error() che riporti o un numero o stringa che possa elaborare e, prima della descrizione, mi dica "impossibile inserire - codice esistente - cambiare codice" oppure devo, inserito il codice, estrarre tutti i campi codice ed eseguire un ciclo con confronto che, nel caso di molti codici inseriti, potrebbe avere un lungo tempo di attesa? ma soprattutto per sapere se l'inserimento è andato a buon fine devo visualizzare tutti i codici e descrizioni.
spero di essere stato chiaro
grazie
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
40
Sanremo
Non sono sicuro di aver capito correttamente la domanda, ma provo comunque a rispondere.

Quando crei una chiave primaria in una tabella, il modo per essere sicuri di non avere duplicati è di usare l'opzione auto_increment. In questo modo, nella query di inserimento, non ci sarà bisogno di specificare il valore del campo, verrà automaticamente valorizzato al prossimo autoindex.
La query è tipo questa:

INSERT INTO table (id, campo) VALUES (, 'testo')
----------------------------------------^
Notare come non viene passato il primo valore relativo alla chiave primaria con auto_increment
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
deve essere inserito un codice articolo (es. cod. aa375896 | |vaso da fiori D 25 h 800 | foto del vaso | costo del vaso|...) questo codice è unico e si riferisce solo a detto vaso. non può essere un auto_increment in quanto i codici non sono contigui e non tutti uguali (ne come tipo ne come lunghezza).
quando l'utente inserisce un nuovo articolo deve inserire anche detto codice, per vari motivi può digitare un codice che è gia esitente nel db, vorrei che a qusto punto venisse indicato che il codice esiste gia e quindi cambiarlo (questo prima di procedere a qualsiasi altro inserimento)

grazie


p.s.
i codici degli articoli sono quelli che legge il lettore ottico e quindi gia esitenti e definiti
 

knottyboy

Nuovo Utente
25 Feb 2008
4
0
0
fa' una cosa carina

Mentre uno inserisce il codice prodotto, potresti caricare in background un controllino (ajax) e verificare se il codice è già in uso o meno.
 

knottyboy

Nuovo Utente
25 Feb 2008
4
0
0
oppure

Oppure potresti fare questo, quando generi la pagina, puoi interrogare il DB e creare con php un array javascript. In sostanza anzichè scrivere semplice HTMl scrivi anche del codice javascript. E poi disabiliti il tasto submit e lo riabiliti solamente quando il campo del codice prodotto non è stato inserito correttamente. Avendo l'array javascript con tutti i codici prodotto puoi quindi assicurarti che non ci siano doppioni.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
stanotte prima che arrivasse la tua risposta ho pensato a questo


$conta=(int)0;
while ($riga=mysql_fetch_array($query)){
$campoCod[$conta]=$riga[codice];
//qui echo per <option>………..
$conta+=;
}

che mi sono inventato per farmi una select dinamica, potrebbe andare bene anche per la verifica se prima prelievo dal form il valore del codice e allinterno del while metto un

if ($codiceinserito==$campoCod[$conta]) {$flag=1;}
e quindi se flag=0 proseguo altrimenti no ?
grazie
 

Trogo

Utente Attivo
11 Gen 2008
370
0
0
40
Sanremo
Perchè non usi un mysql_errno(...) dopo la query di inserimento?
Se ti ritorna il codice 1022 (che mi sembra sia quello che ti interesse),
ti comporti di conseguenza...
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
per ora o risolto così senza il while

$seleziona="SELECT codice FROM ".$tabella." WHERE codice='".$codice."'"; //cerco se c'è un codice uguale
$query = mysql_query($seleziona); //interrogo

$num_righe = mysql_num_rows($query);//risultato della ricerca
echo "<div id=\"risultati\">";
if($num_righe > 0){ //il codice esiste
echo "<br><b>attenzione: $codice&nbsp;&nbsp;CODICE GIA ESISTENTE</b>"; //avviso
//dare il refresh pagina
}else { //il codice è unico.........

ho fatto una query sul codice e ho richiesto quanti record ci sono
comunque adesso proverò (visto che sono in fase di studio) ancge con mysql_errno(...)
grazie
 

knottyboy

Nuovo Utente
25 Feb 2008
4
0
0
Non ho mica capito che volevi fare con questo codice. Cmq sia, a mio parere, è meglio che fai il controllo sul codice direttamente dal modulo, altrimenti costrungi l'utente a fare un click per scoprire che ha sbagliato. Se gli impedisci di commettere l'errore a prescindere, secondo me, è meglio.

Come dire, preferisci provarci con una e scoprire solo dopo 2 settimane che si tratta di un trans, oppure preferisci saperlo prima così eviti???

stanotte prima che arrivasse la tua risposta ho pensato a questo


$conta=(int)0;
while ($riga=mysql_fetch_array($query)){
$campoCod[$conta]=$riga[codice];
//qui echo per <option>………..
$conta+=;
}

che mi sono inventato per farmi una select dinamica, potrebbe andare bene anche per la verifica se prima prelievo dal form il valore del codice e allinterno del while metto un

if ($codiceinserito==$campoCod[$conta]) {$flag=1;}
e quindi se flag=0 proseguo altrimenti no ?
grazie
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
148
63
PR
www.borgo-italia.it
capisco perfettamente che è meglio prevenire che reprimere, ma avendo iniziato da poco lo studio di php ho gia la testa che fuma (non c'è la faccina).

grazie

p.s.
tanto per quanto mi paga(?) l'utente..........anche si si trova un traM mi va bene lo stesso
 
Discussioni simili
Autore Titolo Forum Risposte Data
F Thumbnail doppia PHP 8
D Mailchimp - Possibile inserire doppia condizione per i triggers? Email Marketing 0
andreas88 Doppia pagina FB Facebook 2
allegria [PHP] Ricevo una doppia mail dal form PHP 6
G [MySQL] autoincrement e doppia chiave MySQL 0
dakko96 slideshow doppia jQuery 0
A AIUTO per impostazione doppia cifra in tabella HTML e CSS 6
L Sito con doppia lingua. Gestire il cambio PHP 4
neo996sps Form con doppia action PHP 2
J Stringa casuale "doppia" PHP 5
S Gallery con Tag foto: problema doppia chiamata ajax con JQuery jQuery 2
M jQuery Cycle confusione doppia slide Javascript 0
M Problema doppia autenticazione HTML e CSS 4
G Doppia ricerca PHP 6
D Problema DOPPIA richiesta HTTP Ajax 0
L Invio di una doppia email con CDO Classic ASP 2
helpdesk doppia query a due db diversi PHP 5
G doppia connessione Adsl e Connettività 0
D Phpmailer e doppia mail?!!? PHP 0
P Non riesco ad estrarre dati da doppia tabella PHP 2
S Problema con doppia vetrina PHP 0
Y Doppia lingua? Supporto Mr.Webmaster 1
M Errore pagina php 'Cannot detect primary key' PHP 8
G [MySQL] Errore importazione tabella .sql #1062 - Duplicate entry '592' for key 'PRIMARY' MySQL 20
MarcoGrazia ON DUPLICATE KEY ma in realtà non UPDATE mai PHP 17
michele81 [WordPress] problemi plug meteo api key WordPress 4
MrSab [MySQL] Foreign key errore MySQL 5
V Domande su Keywords e Focus Key SEO e Posizionamento 0
JackIlPazzo Cannot add foreign key constraint MySQL 1
S Insert into....on duplicate key update MySQL 2
S Inserimento API key Singring su CSM Wordpress PHP 0
G Can't create table error - foreign key MySQL 0
C Aiuto INSERT INTO... ON DUPLICATE KEY UPDATE PHP 1
K Key API Javascript Google maps non valida. Javascript 1
C Inserimento key in una function strurl Javascript 0
C Cambiare Product Key Office 2007 Windows e Software 1
T foreign key MySQL 2
R Ordinare array in base al valore e alla key PHP 1
I Key remunerative per la scelta di una nicchia Guadagnare col Sito 0
M [Mysql] problema su Foreign Key MySQL 0
A Conteggio key di ricerca PHP 9
C Perdita Posizione per key con poca Concorrenza SEO e Posizionamento 1
Eugene Un meta "keywords" e un altro "key-phrases"? SEO e Posizionamento 4

Discussioni simili