Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 39
  1. #1

    Generato di identificativi NON CASUALE

    Ciao a tutti,
    vi giro questa richiesta di info dopo aver girato in lungo ed in largo il web senza risultato.
    Possesso una tabella con dati anagrafici e devo creare (con php) un record che rappresenti un ID univoco che è composto (FACCIO UN ESEMPIO) dalle prima tre cifre del nome, dalle prime tre del cognome, dalle terze-quarte-quinte cifre del codice fiscale. In questo modo creeerei un identificativo non casuale.
    Sapete se in rete esiste qualcosa di già fatto che faccia questo mestiere ?
    Avete qualche suggerimento?

    GRAZIE IN ANTICIPO!!
    Ciao

    Tiziano

  2. #2
    Mi andrebbe anche bene il creare questo codice univoco facendo ad esempio un crypt in MD5 del codice fiscale e visualizzando nel record ID il risultato di questo crypt.
    Magari potrei limitare la lunghezza del campo a 6 caratteri di modo che non mi venga fuori un risultato troppo lungo.
    Il problema è che vorrei una tipologia di ID uniforme....non vorrei ritrovarmi cioè con qualcosa del tipo:
    767g6h28
    ft26h91hj
    111h72h8

    Ma vorrei più un risultato di questo genere:
    tr.fr.rew76
    er.fe.rwf81
    fd.we.rqs87

    Che visualizzato su di una tabella mi pare più elegante che non un'accozzaglia disomogenea di risultati come l'esempio precedente.
    Che ne pensate?

  3. #3
    Ho trovato qualcosa con cui cominciare:

    codice:
    <?php  
    $stringa = 'miniscript';  
    $sub1 = substr($stringa, 3); // otteniamo 'script' (esclude i primi 4)  
    $sub2 = substr($stringa, 0, 3); // otteniamo 'mini' (parte dal primo fino al 4°)  
    $sub3 = substr($stringa, 2, -1); // otteniamo 'niscrip' (parte dal 3° ed arriva fino al penultimo)  
    ?>
    Immagino di avere i campi (VARCHAR, 150): nome, cognome, codicefiscale, datanascita (di tipo: YYYY-MM-DD).
    Mi posso ottenere i singoli pezzi così?
    codice:
    <?php  
    $stringa = $nome;  
    $sub1 = substr($stringa, 0, 1); //le prime due cifre del nome
    $stringa2 = $cognome;  
    $sub2 = substr($stringa2, 0, 1); //le prime due cifre del cognome
    $stringa3 = $codicefiscale;  
    $sub3 = substr($stringa3, 11); //le ultime 4 cifre del codice fiscale
    $stringa4 = $datanascita;  
    $sub4 = substr($stringa4 , 7); /le ultime 2 cifre di YYYY-MM-DD (e cioè solo il giorno)
    ?>
    A questo punto il problema per me è fare una coda del tipo
    $idunivoco=$sub1+.+$sub2+.+$sub3+.+$sub4

    Mi serve cioè concatenare queste substringhe mettendoci un puntino in mezzo tra i singoli gruppetti di cifre di modo da avere un risultato finale del tipo:
    AN.CA.273G.12

    Qualche idea?

    Ciao

    Tiziano

  4. #4
    Ho trovato ancora una volta la risposta da solo:

    Concatenazione di stringhe

    Per concatenare due stringhe in Php è sufficiente utilizzare il carattere punto (.) tra due stringhe o variabili e queste verranno unite. Notare che non viene lasciato nessuno spazio tra le due e se lo vogliamo dobbiamo inserirlo noi, es:

    $nome_completo= “Stefano”.” “.”Eutizi”;


    Quindi nel mio caso per ottenere:
    $idunivoco=$sub1+.+$sub2+.+$sub3+.+$sub4
    Dovrei:
    $idunivoco=$sub1.$sub2.$sub3.$sub4

    In questo modo però il risultato sarebbe:
    ANCA273G12
    Io invece vorrei:
    AN.CA.273G.12
    Come lo ottengo?

  5. #5
    Ci provo:
    $idunivoco=$sub1.$sub2.$sub3.$sub4
    si dovrebbe ottenere con:

    $idunivoco=$sub1 . "." . $sub2 . "." . $sub3 . "." . sub4";

    Ho scritto una boiata?

    Quindi ricapitolando:
    codice:
    <?php  
    $stringa = $nome;  
    $sub1 = substr($stringa, 0, 1); //le prime due cifre del nome
    $stringa2 = $cognome;  
    $sub2 = substr($stringa2, 0, 1); //le prime due cifre del cognome
    $stringa3 = $codicefiscale;  
    $sub3 = substr($stringa3, 11); //le ultime 4 cifre del codice fiscale
    $stringa4 = $datanascita;  
    $sub4 = substr($stringa4 , 7); /le ultime 2 cifre di YYYY-MM-DD (e cioè solo il giorno)
    $idunivoco=$sub1 . "." . $sub2 . "." . $sub3 . "." . sub4";
    ?>
    SI accettano consigli e tirate d'orecchio! :-)

    Tiziano

  6. #6
    Pensavo di poter risolvere aggiungendo alla mia pagina di creazione utente questo

    codice:
    <?php
    $stringa = $_POST['nome'];  
    $sub1 = substr($stringa, 0, 1); //le prime due cifre del nome
    $stringa2 = $_POST['cognome'];  
    $sub2 = substr($stringa2, 0, 1); //le prime due cifre del cognome
    $stringa3 = $_POST['codfis'];  
    $sub3 = substr($stringa3, 11); //le ultime 4 cifre del codice fiscale
    $stringa4 = $_POST['nascita'];  
    $sub4 = substr($stringa4 , 7); //le ultime 2 cifre di YYYY-MM-DD (e cioè solo il giorno)
    $idunivoco=$sub1 . "." . $sub2 . "." . $sub3 . "." . sub4";
    ?>
      <input type="hidden" value="<?php print $idunivoco?>" name="idunivoco" />
    MA non funziona!!!! hmmmm....

  7. #7
    Apportate alcune modifiche perchè le variabili nome, cognome, datanascita erano già definite.
    Quindi mi ritrovo la seguente situazione:

    Codice PHP:
    <?php
    if(isset($_POST['Submit']) )  
    {  
    $nome $_POST['nome'];
    $cognome $_POST['cognome'];
    $codfis $_POST['codfis'];
    $nascita $_POST['nascita'];
    $idunivoco  $_POST['idunivoco'];
    $sub1 substr($nome01); //le prime due cifre del nome
    $sub2 substr($cognome01); //le prime due cifre del cognome
    $sub3 substr($codfis11); //le ultime 4 cifre del codice fiscale
    $sub4 substr($nascita 7); //le ultime 2 cifre di YYYY-MM-DD (e cioè solo il giorno)
    $idunivoco=$sub1.$sub2.$sub3.sub4;

    ?>

    //Aggiungo un campo nascosto che mi mandi in Submit il valore di $idunivoco

    <input type="hidden" value="<?php print $idunivoco?>" name="idunivoco" />
    Tuttavia non funziona....il record mi viene aggiunto al database come sempre ma senza il valore del campo idunivoco.
    Ci deve essere qualcosa che non va forse nella sintassi....hmmm...
    Qualche idea?

    Tiziano

  8. #8
    Scusa ma perche' non usi il codice fiscale? Quello che vuoi fare tu mi sembra che non sia molto unico, c'e' la seria possibilita' di collisione.

    Comunque se il valore non viene aggiunto al database, il problema e' nella query.

  9. #9
    Ciao!!

    Non voglio usare il codice fiscale perchè da quello si può risalire alle credenziali dell'utente.
    Se ottengo un ID duplicato posso fare in modo che l'ultima lettera venga sostituita con un numero random da 1 a 10.
    LA query di inserimento utente è corretta perchè all'atto del Submit il record viene di fatto aggiunto sul DB.
    Il problema sta nel come gestisco il codice di concatenamento.
    Ho anche provato a fare una cosa più terra terra in questo modo:

    Codice PHP:
    $idunivoco=substr($_POST['nome'], 01).substr($_POST['cognome'], 01).substr($_POST['codfis'], 11).substr($_POST['nascita'], 7); 
    Ma non va comunque.....

    Forse il problema sta qui?
    Codice PHP:
    <input type="hidden" value="<?php print $idunivoco?>" name="idunivoco" />
    Brancolo nel buio....

    Tiziano

  10. #10
    Originariamente inviato da Tulipan0nero
    Ma non va comunque.....
    In che senso non va comunque? Fallisce la query? Inserisce valori diversi da quello che ti aspetti? Ottieni messaggi di errore? IN CHE MODO NON VA?

    E' cosi' difficile da capire che e' IMPOSSIBILE aiutare qualcuno se l'unico sintomo e' "non va"?


    "Dottore sto male"
    "Cosa si sente?"
    "Eh me lo dica lei!"

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.