evitare di inserirre duplicati in mysql

Domenico2013

Utente Attivo
6 Ago 2013
169
0
16
Buongiorno a tutti del forum :)
Cattura.JPG
Avendo questa tabella, qualcuno conosce il modo di evitare che quando nella "text codice" venga scritto per esempio 1, questo non lo inserisce nella tabella mysql in quanto è già presente il numero 1. In pratica, vorrei evitare di inserire duplicati. Grazie in anticipo a tutti e buon appetito :)
 

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Dipende da come inserisci i dati in tabella: se usi inserisci di PHPMyAdmin non credo ci sia la possibilità di fare dei controlli, mentre se li fai da form, si, prima di inserire il nuovo codice puoi fare una query che scorra tutta la tabella e cerchi quel particolare codice. Se ti serve anche qualche esempio pratico.... chiedi pure.. ciao


Zorro
 
Ultima modifica:

Domenico2013

Utente Attivo
6 Ago 2013
169
0
16
Ciao Zorro, grazie per la risposta e cortesia. No no, solo tramite form invio i dati. Potresti gentilmente postarmi qualche esempio? Thanks :)
 

zorro

Utente Attivo
20 Ott 2014
257
11
18
ROMA
Ecco qui: il programma è relativamente semplice ma richiede parecchi script.
Il primo che dovrai caricare è resetta.php che, come da nome, resetterà tutte le variabili di sessione e richiamerà (include) il form di inserimento.

PHP:
session_start();

$_SESSION['codice']='';
$_SESSION['articolo']='';
$_SESSION['messaggio']='';
$_SESSION['id']='';

include('form.php');


Quindi segue il form molto stilizzato:

PHP:
session_start();
$messaggio = $_SESSION['messaggio'];

echo '<h2><u><center>Form di inserimento</center></u></h2><br><br>';
echo '<form action="contrform.php" method="get">';
echo     'Codice articolo: ';
echo     '<input type="text" name="cod" size="10"><br><br>';
echo     'Descrizione: ';
echo     '<input type="text" name="art" size="50"><br><br><br>';
echo     '<input type="submit" name="submit" Value="invia"><br><br>';
echo '<a name="mess"></a>';
echo $messaggio;
echo '</form>';

All'inizio, come vedi, ho richiamato e successivamente (dopo il form) visualizzato il messaggio che, essendo inizialmente nullo, non visualizza niente. Dopodiché, premendo INVIA, il comando passerà al programma che si occuperà dei controlli: per il momento l'unico controllo che fa è se il codice è duplicato o meno (anche la descrizione dell'articolo potrebbe essere duplicata)

PHP:
$codice = $_GET['cod'];
$articolo = $_GET['art'];

//INSERISCO LE VARIABILI IN ALTRETTANTI VARIABILI DI SESSSIONE

session_start();
$_SESSION['codice'] = $codice;
$_SESSION['articolo'] = $articolo;

include('conn.php');

$connessione = new mysqli($host, $user, $password, $db);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();
}
 
//-----LEGGE IL DB E CONTROLLA SE IL CODICE E' DUPLICATO

if (!$result = $connessione->query("SELECT * FROM ARTICOLI WHERE CODICE = '$codice'")) {
    echo "Errore della query: " . $connessione->error . ".";
}else{
    // conteggio dei record
    if ($result->num_rows > 0) {
       $_SESSION['messaggio'] = 'ATTENZIONE!! Codice duplicato';
       header("location: form.php#mess");
    } else {
       include('scrivi.php');
      
    }
}

// chiusura della connessione
$connessione->close();

Se il codice è duplicato ti rimanda al form con un messaggio d'errore altrimenti richiama scrivi.php che si ocuperà dell'inserimento in tabella del record, vvisandoti con un opportuno messaggio.

PHP:
//RICHIAMO LE VARIABILI DI SESSIONE
session_start();
$codice = $_SESSION['codice'];
$articolo = $_SESSION['articolo'];

include('conn.php');

$connessione = new mysqli($host, $user, $password, $db);

// verifica su eventuali errori di connessione
if ($connessione->connect_errno) {
    echo "Connessione fallita: ". $connessione->connect_error . ".";
    exit();
}

//$datait = substr($data,8,2).'/'.substr($data,5,2).'/'.substr($data,0,4);
 
// esecuzione della query per l'inserimento dei record
if (!$connessione->query("INSERT INTO ARTICOLI (CODICE,ARTICOLO) VALUES
    ('$codice','$articolo')")) {
    echo "Errore della query: " . $connessione->error . ".";
}

//-----LEGGE IL DB E NE MEMORIZZA L'ID APPENA INSERITO

if (!$result = $connessione->query("SELECT * FROM ARTICOLI WHERE CODICE = '$codice'")) {
    echo "Errore della query: " . $connessione->error . ".";
}else{
    // conteggio dei record
    if($result->num_rows > 0) {
        while($row = $result->fetch_array(MYSQLI_ASSOC)) {
              $id = $row['ID'];
        }
    }
}
$_SESSION['messaggio']='OK!! Il record è stato correttamente inserito. Il suo ID è: '.$id;
header("location: form.php#mess");

// chiusura della connessione
$connessione->close();

Come vedi, in caso di codice duplcato, vieni rimandato al form dove troverai entrambi i campi vuoti. Se invece vuoi che ci siano già le variabili ti basterà, dopo averle opportunamente richiamate, aggiungere al form la clausola value in questo modo:

PHP:
value = "'.$nomevariabile.'";

Non ho inserito conn.php che contiene le variabili di connessione e l'ho testato con la tabella ARTICOLI.


Zorro
 

Domenico2013

Utente Attivo
6 Ago 2013
169
0
16
Ciao Zorro. Grazie infinite. Il codice è perfetto. Grazie per averlo postato , scritto e testato :)
 
Discussioni simili
Autore Titolo Forum Risposte Data
W Evitare ridondanza dei dati Classic ASP 3
G Evitare che mi continui ad arrivare in alice mail spam Posta Elettronica 2
U Posizionamento Rack nel locale tecnico ed eventuali accortezze per evitare incendi Reti LAN e Wireless 1
D consiglio evitare truffe Annunci servizi di Social Media Marketing 11
andreas88 Evitare che la mia idea venga rubata Leggi, Normative e Fisco 5
C [PHP] Ricerca multipla, evitare if PHP 4
elpirata [PHP] Evitare la visualizzazione del carattere di nuova linea \r\n PHP 5
A [Javascript] [CSS] elenco affiancato per evitare scorrimento pagina Javascript 4
michele357 TAG HTML: Come evitare che venga riprodotto un file .mp3 senza cancellarlo HTML e CSS 1
M Evitare la compilazione automatica NomeUtente e Password con Chrome PHP 2
M Evitare rischio assunzione programmatori per nuove aziende? Leggi, Normative e Fisco 3
Antonio_Cantaro Cookie rendirizamento per evitare la loro scrittura Javascript 1
A Evitare estrazione record doppioni PHP 2
felino Scambio link: consigliato o meglio evitare? SEO e Posizionamento 0
xone Evitare Meta Tag duplicati su paginazione php PHP 2
A [risolto] evitare refresh index dopo recaptcha sbagliato PHP 7
J Evitare al refresh della pagina la ritrasmissione di un form PHP 1
G come evitare l'a capo del testo nelle tabelle HTML e CSS 4
M Evitare SQL Injection senza deformare testo PHP 3
M Confrontare data, ora e aula per evitare sovrapposizioni PHP 8
L Paginazione file evitare di inserire questi \ o altro nella get PHP 1
Shyson Evitare che la pagina si ricarichi jQuery 7
Z evitare il download diretto di file PHP 2
asevenx evitare inserimento dati già presenti in DataBase PHP 20
zerobit Evitare records duplicati nel database PHP 6
S urgentissimo necessità di script per evitare di far visualizzare immagini "rubate" Javascript 12
L invio multiplo e refresh pagina come evitare? PHP 3
A Evitare che una pagina sia accessibile digitando l'url PHP 2
R Evitare SPAM nelle tabelle DI MYSQL MySQL 6
T Evitare refresh pagina Javascript 7
riminese77 Evitare doppio click nelle pagine ASP.NET 5
alessandro1997 Evitare che span finisca sopra i bordi HTML e CSS 9
I Evitare inserimento dati in database con refresh PHP 5
max_400 Evitare lo scatto di fine foto e aumentare la velocità Flash 2
P [checkbox e className] evitare di richiamare più volte la stessa funzione Javascript 0
M Evitare i frames HTML e CSS 6
Z Evitare la ridondanza PHP 6
minatore evitare doppioni PHP 9
I Come evitare che il preload compaia 2 volte? Flash 1
G Come evitare in Excel messaggio per apertura pdf? Windows e Software 2
G Stampante canon: evitare il taglio nel caricare? Hardware 0
T come evitare file ldb Database 4
I Menu in flash è da evitare? SEO e Posizionamento 2
E modifica js per evitare il blank Javascript 0
P Help filtraggio input...Evitare caratteri Javascript 0
B Evitare i motori di ricerca HTML e CSS 2
B Evitare che explorer blocchi pulsanti flash Flash 3
A Controllo per evitare inserimenti di spazi Javascript 1
M Evitare blocco pop-up Classic ASP 0
P evitare la scrittura in un campo Javascript 5

Discussioni simili