Evitare records duplicati nel database

zerobit

Utente Attivo
10 Mar 2012
35
0
0
Ciao a tutti !

A rieccomi nel miglior forum di tutto il web

Questo listato mi permette di eseguire un controllo sui dati che vengono digitati in un form , mi spiego meglio :

Se vengono inseriti record doppi , quindi voci già presenti nel db mi rimanda , alla pagina voci-duplicate.php


Vi faccio un esempio che vale più di mille parole :


1 - Digito pancetta affumicata e tutto va a buon fine

2 - Digito nuovamente pancetta affumicata e ANCHE STAVOLTA memorizza i dati nel database

3 - Digito per la terza volta pancetta affumicata e stavolta finalmente mi rimanda alla pagina voci-duplicate.php

Avete capito dove sta l'inghippo ?

Il redirect alla pagina voci-duplicate.php doveva partire quando ho digitato pancetta affumicata la seconda volta , NON LA TERZA !

In altre parole permette l'inserimento di DUE VOCI uguali ( doppioni )


Riuscite a capire da cosa può dipendere ? :confused:


PHP:
<?
$mortadella=$_REQUEST['mortadella'];
$prosciutto=$_REQUEST['prosciutto'];
$bresaola=$_REQUEST['bresaola'];
$db = mysql_connect($dbxxx, $dbxxxxx, $password_db);
if ($db == FALSE)
die ("Errore nella connessione");
mysql_select_db($nome-db, $db)
or die ("Errore");
// campo da verificare
$val =  "mortadella";
// tabella salumi
$tbl = "salumi";
$sql = "select $val,count(*) as cnt from $tbl group by $val having cnt > 1";
$query = mysql_query($sql);

// Se trovi dei dati doppi...
if (mysql_num_rows($query) != 0){ 
header("location: http://localhost/voci-duplicate.php");
}
else   
$query = "INSERT INTO salumi (mortadella, prosciutto, bresaola) VALUES ('$mortadella', 

'$prosciutto', '$bresaola')";
if (mysql_query($query, $db))
echo "L'inserimento è avvenuto correttamente";
else
echo "Errore durante l'inserimento";
mysql_close($db); endif;
?>
 
Ultima modifica:

minatore

Utente Attivo
25 Set 2007
410
0
0
Ciao, prova così
Tu hai una input text e la chiamiamo categoria, questa passarà dei dati ad un'altra pagina che verificherà il rurro ed elabora il codice restituendo un messaggio
PHP:
<input type='text' name='categoria'>
PHP:
$query_verifica=mysql_query("select * from salumi where descr_categoria = $categoria")
$risultato=mysql_num_rows(query_verifica);
if($risultato > 0)
{echo"categoria già esistente";}
else
{echo"fai l'inserimento";}

Per sommi capi dovrebbe essere così, questa è una cosa fatta in fretta, ma funzionante

Ciao
 

alessandro1997

Utente Attivo
6 Ott 2009
5.302
1
0
24
Roma
alessandro1997.netsons.org
Il problema è che lo stai facendo nel modo sbagliato:
PHP:
<?php
$campo = isset($_POST['campo']) ? trim($_POST['campo']) : '';

if ($campo == '') {
    die('Devi inserire un valore nel campo.');
}

mysql_connect('localhost', 'root', 'pass') or die(mysql_error());
mysql_select_db('database') or die(mysql_error());

$campo = mysql_real_escape_string($campo);
$sql   = "SELECT COUNT(*) FROM tabella WHERE campo = '{$campo}'";
$query = mysql_query($sql) or die(mysql_error());

if (mysql_result($query, 0) > 0) {
    die('Hai già inserito questo record.');
}

// ...
?>
Da dove hai tirato fuori quella query complicatissima?

P.S. La libreria mysql è deprecata. Usa PDO o mysqli.
 

borgo italia

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
4 Feb 2008
16.042
149
63
PR
www.borgo-italia.it
ciao
al massimo non funzia lo stesso, ma prova a mettere

$sql = "select $val,count(*) as cnt from $tbl group by $val having cnt >= 1";
 

zerobit

Utente Attivo
10 Mar 2012
35
0
0
Salve a tutti e tre , e grazie per aver risposto

minatore
Ciao, prova così
Tu hai una input text e la chiamiamo categoria, questa passarà dei dati ad un'altra pagina che verificherà il rurro ed elabora il codice restituendo un messaggio
PHP:
    <input type='text' name='categoria'> 
    Codice PHP:
    $query_verifica=mysql_query("select * from salumi where descr_categoria = $categoria")
    $risultato=mysql_num_rows(query_verifica);
    if($risultato > 0)
    {echo"categoria già esistente";}
    else
    {echo"fai l'inserimento";}

Questa riga mi da errore syntax error unexpected t_variable
PHP:
 $risultato=mysql_num_rows(query_verifica);



borgo italia

ciao
al massimo non funzia lo stesso, ma prova a mettere

$sql = "select $val,count(*) as cnt from $tbl group by $val having cnt >= 1";

Purtroppo non va , nel senso che va subito alla pagina del redirect , e non permette l'inserimento di nuovi dati



alessandro1997

Il problema è che lo stai facendo nel modo sbagliato:
PHP:
    <?php
    $campo = isset($_POST['campo']) ? trim($_POST['campo']) : '';

    if ($campo == '') {
        die('Devi inserire un valore nel campo.');
    }

    mysql_connect('localhost', 'root', 'pass') or die(mysql_error());
    mysql_select_db('database') or die(mysql_error());

    $campo = mysql_real_escape_string($campo);
    $sql   = "SELECT COUNT(*) FROM tabella WHERE campo = '{$campo}'";
    $query = mysql_query($sql) or die(mysql_error());

    if (mysql_result($query, 0) > 0) {
        die('Hai già inserito questo record.');
    }

    // ...
    ?>

E vai ! finalmente funziona ( per sicurezza comunque farò altri test , non vorrei essere frettoloso ..... )


Grazie infinite e buona serata a tutti ... :fonzie:


Hei ... se passate dalle mie parti vi offro da bere !
 
Ultima modifica:

minatore

Utente Attivo
25 Set 2007
410
0
0
Questa riga mi da errore syntax error unexpected t_variable
PHP:
 $risultato=mysql_num_rows(query_verifica);



Ciao, è vero le cose fatte in fretta non sono tanto buone avevo dimenticato la
Comunque hai risolto e va benissimo

Ciao alla prossima

 
Discussioni simili
Autore Titolo Forum Risposte Data
D evitare di inserirre duplicati in mysql PHP 4
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
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