[Risolto] Generatore Di Codici A Barre

Salve,

avrei bisogno di generare (automaticamente) dei codici a barre con numeri univoci e non ripetitivi, quando si inserisce un nuovo "articolo" tramite form.

Dopo averlo inserito mi servirebbe stampare l’ etichetta con il codice a barre, prelevando dal database il nome di chi lo ha inserito e il codice a barre generato.

Qualcuno sa come agire?

Grazie anticipatamente. Auguri una serena Pasqua a tutti.

Potresti generare il codice a barre direttamente dal codice articolo (se è univoco).

La prima cosa da sapere è se hai un campo univico da cui generare il codice.

Il campo dove inserire il codice articolo non ce l’ ho. Ossia ho solo il campo id (chiave primaria - autoincrement). Gli altri campi sono i dati dell’ utente. Ho visto barcode-generator ma non ho capito come usarlo, mentre ho capito che genera solo l’ immagine del barcode e non il codice univoco, se non erro. Non so se e come si possa fare con yii o se posso integrare con uno script php che a dirti il vero non saprei neppure dove inserirlo in yii. Credo nel controller…alla action desiderata…credo.

Se non hai esigenze particolari, il codice a barre potrebbe essere anche l’id stesso (che è univoco).

Magari formattandolo a 10 o 12 cifre, es.

id=1 -> codice = 0000000001

Andrebbe bne certo :slight_smile: ovviamente con numeri differenti da 0 all’ inizio. Non so tipo 335600290064.

Come faccio a ottenere questa cosa con yii :slight_smile:

Yii non c’entra nulla in questo.

E’ sufficiente fare un




$id = $model->id;   // supponi che $id sia 15

$codiceABarre = sprintf('%010d', $id);



Nell’ action create di “Articoli” inserisco quel codice???

Inserisco prima un <img src=""…> in maniera tale che il codice appaia sotto all’ immagine?

Dipende da dove lo devi visualizzare.

Se lo devi visualizzare nella creazione del record, va bene l’azione create.

L’ ideale sarebbe durante la stampa in formato pdf (che ancora sto apprendendo leggendo qua e la). Ma per ora mi interessa riuscire a implementarlo. Poi penserò al resto ;)

Per implementare un codice univoco basato sull’id del record puoi usare quello che ti ho scritto.

Per la stampa in PDF usa TCPDF che supporta la scrittura del testo tramite HTML.

Eccomi, nell’ action “create” del Model Articoli ho inserito quel codice per la generazione dell’ id univoco, ma l’ id è sempre a una cifra autoincrementale: 1 - 2 - 3 e cosi via.

public function actionCreate()

{


	&#036;model=new Articoli;


	&#036;id = &#036;model-&gt;id;   // supponi che &#036;id ----&#62;STRINGA 1 CREAZIONE CODICE UNIVOCO


            &#036;codiceABarre = sprintf('%010d', &#036;id); ----&#62;STRINGA 2 CREAZIONE CODICE UNIVOCO





	// Uncomment the following line if AJAX validation is needed


	// &#036;this-&gt;performAjaxValidation(&#036;model);





	if(isset(&#036;_POST['Articoli']))


	{


		&#036;model-&gt;attributes=&#036;_POST['Articoli'];


		if(&#036;model-&gt;save())


			&#036;this-&gt;redirect(array('view','id'=&gt;&#036;model-&gt;id));


	}





	&#036;this-&gt;render('create',array(


		'model'=&gt;&#036;model,


	));


}

Quindi? Qual è il problema?

Come scritto sopra … l’ id è sempre a una cifra autoincrementale: 1 - 2 - 3 e cosi via.

Non si compone un id 3546784524 numerico misto. Va a autoincrementare ogni qualvolta aggiungo un articolo.

1° articolo = id -> 1

2° articolo = id -> 2

Io vorrei:

1° articolo = id ->356897856423

2° articolo = id ->356877534523

e cosi via

Certo, ovvio, però è sicuro che è univoco.

Se vuoi partire da un numero più alto, basta che ci aggiungi un tot prima.

Chessò, se vuoi che il primo numero sia 3242423445, basta che fai

sprintf(’%010d’, 3242423445 + $id);

ufff vedi che allora sono io il problema. Io avevo capito che bastasse fare "cito tua risposta —>

Posted 19 April 2014 - 03:19 PM

Yii non c’entra nulla in questo.

E’ sufficiente fare un

$id = $model->id; // supponi che $id sia 15

$codiceABarre = sprintf(’%010d’, $id); "

Io pensavo creasse lui i primi 12 numeri…vedi che sono :stupid

Grazie ancora…dellla tua pazienza e del tuo sapere…testo subito il tutto.

Volendo con PHP puoi generare quanti numeri casuali vuoi,

ma tu devi anche avere l’assoluta certezza che il numero

che generi sia univoco.

Se lo lasciassi generare al PHP questa certezza non l’avresti.

Ok ho testato…la mia autostima inizia ad arrivare sotto ai piedi. Il codice dell’ actionCreate è questo:

public function actionCreate()

{


	&#036;model=new Articoli;





	//Genera id univoco per codice a barre


	&#036;id = &#036;model-&gt;id;   // supponi che &#036;id sia 15


    &#036;codiceABarre = sprintf('%010d', 3242423445 + &#036;id);





	// Uncomment the following line if AJAX validation is needed


	// &#036;this-&gt;performAjaxValidation(&#036;model);





	if(isset(&#036;_POST['Articoli']))


	{


		&#036;model-&gt;attributes=&#036;_POST['Articoli'];


		if(&#036;model-&gt;save())


			&#036;this-&gt;redirect(array('view','id'=&gt;&#036;model-&gt;id));


	}





	&#036;this-&gt;render('create',array(


		'model'=&gt;&#036;model,


	));


}

L’ id non viene generato, infatti il primo articolo che creo ha l’ id 1 e non 32424234451 come dovrebbe essere in questo caso con 3242423445 (codice imposto) + 1 che è il primo id. Scalciami se vuoi…perchè se potessi farlo da solo inizierei a farlo…@@