[PHP] Controllo su quantita' di caratteri inseriti, in colonna db

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Ciao a tutti,
volevo sapere come impostare un controllo su una colonna del mio db.
I caratteri dei record di questa colonna hanno tutti 8 caratteri tranne alcuni e volevo inserire a questi ultimi ($dato9),2 zeri iniziali.
Ecco il mio script:
Codice:
$dato50 = mysql_real_escape_string($_POST['dato50']);
$dato9 = mysql_real_escape_string($_POST['dato9']);
                    
                    if($dato50 == "" || $dato9 == ""){
                    
                        echo "<h1><font color='white'>ATTENZIONE , DEVI COMPILARE TUTTI I CAMPI !</font></h1>";
                              header("Refresh: 4; URL= http://miosito.org/registrazione_utenti/box/index.php");
} else {

$dato50 = $_POST["dato50"];
$dato9 = $_POST["dato9"];
 $sql="UPDATE completo SET DATO50 = '$dato50' WHERE DATO9 = '$dato9'";
 $exec = mysqli_query($con, $sql) or die(mysqli_error());
echo "<h1>DATO INSERITO CORRETTAMENTE</h1><img src='immagini/spuntaverde.png'>";

}
mysqli_close($con)
Potete aiutarmi?
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
quello che stai cercando di fare è valido solo se la colonna è definita "stringa" nel db
se fosse definita "numerica" cambia pensiero, non otterrai il risultato

in ogni caso ciò che stai cercando di ottenere ("stringa" !) lo puoi avere con una semplice query

per avere la lista
PHP:
SELECT RIGHT(CONCAT('00000000', dato9), 8) AS dato9 FROM completo WHERE LENGTH(dato9)<8 AND dato9 IS NOT NULL
per applicare la variazione
PHP:
UPDATE completo SET dato9 = RIGHT(CONCAT('00000000', dato9), 8) WHERE LENGTH(dato9)<8 AND dato9 IS NOT NULL
per vedere come trattare le "stringhe" di caratteri
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
 

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
Grazie Marino51...ho controllato la definizione.. va bene ma come lo inserisco nel mio script?
In pratica..se nel form che l'utente compila..non inserisce 8 caratteri io gli aggiungo ,con lo script,i due zero iniziali ai 6 che inserisce lui
 
Ultima modifica:

giancadeejay

Utente Attivo
26 Ott 2010
224
0
16
torino
quello che stai cercando di fare è valido solo se la colonna è definita "stringa" nel db
se fosse definita "numerica" cambia pensiero, non otterrai il risultato

in ogni caso ciò che stai cercando di ottenere ("stringa" !) lo puoi avere con una semplice query

per avere la lista
PHP:
SELECT RIGHT(CONCAT('00000000', dato9), 8) AS dato9 FROM completo WHERE LENGTH(dato9)<8 AND dato9 IS NOT NULL
per applicare la variazione
PHP:
UPDATE completo SET dato9 = RIGHT(CONCAT('00000000', dato9), 8) WHERE LENGTH(dato9)<8 AND dato9 IS NOT NULL
per vedere come trattare le "stringhe" di caratteri
http://dev.mysql.com/doc/refman/5.7/en/string-functions.html
cosi ho risolta in db..dove trova solo 6 caratteri mi aggiunge i due zeri come volevo:
Codice:
$con = mysqli_connect("localhost","db","", "my_db");
if (!$con)
  {
  die('Could not connect: ' . mysqli_error());
  }
   
   (" UPDATE completo SET DATO9 = RIGHT(CONCAT('00000000', DATO9), 8) WHERE LENGTH(DATO9)<8 AND DATO9 IS NOT NULL ");

mysqli_close($con)
ma volevo un controllo php nel mio script sopra che verificasse:
se l'utente non inserisce otto caratteri restituisci errore..tutto qui..
 

marino51

Utente Attivo
28 Feb 2013
2.931
166
63
Lombardia
volevo sapere come impostare un controllo su una colonna del mio db
ho capito che dovevi fare un controllo su una colonna del db ....

In pratica..se nel form che l'utente compila..non inserisce 8 caratteri
in realtà devi controllare il valore inserito da un utente e che ricevi da un form ....

poi ho capito che il valore da controllare è "dato9" ma nello script scrivi il contrario, invertendo con "dato50" ....

PHP:
$dato50 = $_POST["dato50"];
$dato9 = substr("00000000".$_POST["dato9"], -8);
$sql="UPDATE completo SET DATO9 = '$dato9' WHERE DATO50 = '$dato50'";
risultato
PHP:
abcdef
50
UPDATE completo SET DATO9 = '00abcdef' WHERE DATO50 = '50'
bisogna solo ... comprendersi