Funzione crea barcode e controllo...

  • Creatore Discussione Creatore Discussione Emix
  • Data di inizio Data di inizio

Emix

Utente Attivo
15 Feb 2010
596
0
16
Buonasera a todos :beer:

Ho la necessita di far creare un barcode (se premuto un pulsante) che sia INESISTENTE nel db.. Ho fatto questo codice ma non capisco perche non va.. non mi genera NULLA
Questo è il codice:


PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento senza titolo</title>
</head>

<body>
<?php
include ('connect.php');
function codice() {
     $nums = '0123456789';
     // $len = 10; // = strlen($nums)
     $s = '';

     for($i = 0; $i < 13; $i++) {
          $s .= $nums[rand() % 10]; // = rand() % $len
     }

     return $s;
}
function controllo_codice(){
$generato = codice(); // qui hai il codice di 16 cifre  

while(mysql_num_rows(mysql_query("SELECT * FROM articoli WHERE barcode='$generato'"))) { // genera un altro codice
    $generato = codice();
}
}
codice();
controllo_codice();
 echo "il codice generato è:". $s;
?>
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" name="genera"> 
<table width="480" height="382" border=0 align="center" cellpadding=5 cellspacing=5>
  <tr>
<td><font face="Eras Medium ITC">Barcode:</font></td><td width="234">
<input type=text name="Barcode" size=35 maxlength=40 value="
<?php
codice();
controllo_codice();
echo $generato;
?>"></td>
>
</tr>
<tr>
<td colspan="2">
    <input name="genera" type="submit" id="genera" value="Genera"> 
</td>
</tr>
</body>
</html>
 
Tu setti le variabili dentro a delle funzioni non puoi richiamarle all'esterno, prova cosi devi usare global

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Documento senza titolo</title> 
</head> 

<body> 
<?php 
include ('connect.php'); 
$s = '';
$generato = '';
function codice() { 
     $nums = '0123456789'; 
     // $len = 10; // = strlen($nums) 
     global $s;

     for($i = 0; $i < 13; $i++) { 
          $s .= $nums[rand() % 10]; // = rand() % $len 
     } 

     return $s; 
} 
function controllo_codice(){ 
 global $generato;

$generato = codice(); // qui hai il codice di 16 cifre   

while(mysql_num_rows(mysql_query("SELECT * FROM articoli WHERE barcode='$generato'"))) { // genera un altro codice 
    $generato = codice(); 
} 
} 
codice(); 
controllo_codice(); 
 echo "il codice generato è:". $s; 
?> 
<form action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']);?>" method="post" name="genera">  
<table width="480" height="382" border=0 align="center" cellpadding=5 cellspacing=5> 
  <tr> 
<td><font face="Eras Medium ITC">Barcode:</font></td><td width="234"> 
<input type=text name="Barcode" size=35 maxlength=40 value=" 
<?php 
codice(); 
controllo_codice(); 
echo $generato; 
?>"></td> 
> 
</tr> 
<tr> 
<td colspan="2"> 
    <input name="genera" type="submit" id="genera" value="Genera">  
</td> 
</tr> 
</body> 
</html>
 
Ultima modifica:
Ok infatti ora funziona tutto, grazie...
Ho solo un piccolissimo problema...
Come faccio a far si che il codice lo genera SOLAMENTE se clicco io il pulsante genera? riporto il codice corretto..

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Documento senza titolo</title> 
</head> 

<body> 
<?php 
include ('connect.php'); 
$s = '';
$generato = '';
function codice() { 
    // $nums = '0123456789'; 
     $len = 10; // = strlen($nums) 
     global $s;

     for($i = 0; $i < 13; $i++) { 
          $s .=  rand() % $len ;
		  //$nums[rand() % 10]; // = rand() % $len 
     } 

     return $s; 
} 
function controllo_codice(){ 
 global $generato;

$generato = codice(); // qui hai il codice di 13 cifre   

while(mysql_num_rows(mysql_query("SELECT * FROM articoli WHERE barcode='$generato'"))) { // genera un altro codice 
    $generato = codice(); 
} 
}  
?> 
<form action=" <?php echo htmlspecialchars($_SERVER['PHP_SELF']);?> " method="post" name="genera">  
<table width="480" height="382" border=0 align="center" cellpadding=5 cellspacing=5> 
  <tr> 
<td><font face="Eras Medium ITC">Barcode:</font></td><td width="234"> 
<input type=text name="Barcode" size=35 maxlength=40 value=" 
<?php
controllo_codice(); 
 echo $generato; 
?>"></td> 
</tr> 
<tr> 
<td colspan="2"> 
    <input name="genera" type="submit" id="genera" value="Genera">  
</td> 
</tr> 
</body> 
</html>
 
Controlla se è settata la variabile

PHP:
<?php 
if(isset($_POST['genera'])){
controllo_codice();  
 echo $generato;  
}
?>
 
Sei stato gentilissimo... Funziona alla perfezione... Una domanda... Siccome questa sorta di scriptino va integrato alla creazione dell'articolo, per fare ciò includo la pagina nella pagina di creazione e richiamo la variabile vero?
 
Si, ma ovviamente dipende poi dalla struttura dell'altra pagina, prova e guarda
 
non ci riesco... Se inserisco l'input di generazione mi chiude il form principale...
Il codice della pagina di inserimento è questo :

HTML:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Inserimento Nuovo Articolo</title>
<style type="text/css">
body {
font: Eras Medium ITC;
color:#FFF
}
</style>

<style type="text/css">
#main {
	width:672px;
	height:300px;
	position:absolute;
	top:30%;
	left:50%;
	margin:-150px 0 0 -336px;
}
</style>
</head>
<body bgcolor="#000000">
<FORM METHOD ="post" action="insert_art.php">
<div id="main">
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<p align="center"><img src="images/logo.png" align="middle" ></p>
<table width="480" height="382" border=0 align="center" cellpadding=5 cellspacing=5>
  <tr>
<td><font face="Eras Medium ITC">Codice:</font></td><td width="234">
<input type=text name="Codice" size=35 maxlength=40 value=""></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Barcode:</font></td><td>
<input type=text name="Barcode" onKeyUp="vendita()" value="" size=35 maxlength=40 ></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>

<tr>
<td><font face="Eras Medium ITC">Descrizione:</font></td><td>
<input type=text name="Descrizione" size=35 maxlength=40 value=""></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Fornitore:</font></td>
<td>
<p>Scegli il Fornitore<br>
<select name="Fornitore">
<option value="Option 1" selected></option>
<option value="Della Rovere">Della Rovere</option>
<option value="P&G Line">P&G Line</option>
<option value="Passigatti">Passigatti</option>
<option value="Niko">Niko</option>
<option value="Gate 31">Gate 31</option>
<option value="Fantasy Coral">Fantasy Coral</option>
</select>
</p>
</td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Reparto:</font></td><td>
<input type=text name="Reparto" size=35 maxlength=40 value=""></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Unità di misura:</font></td><td>
<input type=text name="UM" size=35 maxlength=40 readonly value="PZ"></td>
<td></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">IVA:</font></td><td>
<input type="text" name="IVA" readonly value="21" size=35 ><br></td>
<td></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Listino Fornitore:</font></td><td>
<input type=text name="Listino_Fornitore" size=35 maxlength=40 value=""></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Acquisto:</font></td><td>
<input type="text"  name="Acquisto" onKeyUp="vendita()" value="1" id="Acquisto" size=35/></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">% Ricarico:</font></td><td>
<input type="text"  name="Ricarico" onKeyUp="vendita()" value="1" id="Ricarico" size=35/></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Prezzo vendita:</font></td><td>
<input type="text" readonly value="0" name="Vendita" id="Vendita" size=35/></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Quantità Lucio Papirio:</font></td><td>
<input type=text name="qnt_lucio" size=35 maxlength=40 value=""></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td><font face="Eras Medium ITC">Quantità Tivoli:</font></td><td>
<input type=text name="qnt_tivoli" size=35 maxlength=40 value=""></td>
<td>
  <img src="images/campoobbligatorio.png"></td>
</tr>
<tr>
<td>
<legend>Causale:</legend></td>
<td>
 <input type="checkbox" name="carico" value="carico"/> Carico
 <input type="checkbox" name="caricoreso" value="caricoreso"/>Carico per reso 
 </td>
 <td>
  <img src="images/campoobbligatorio.png"></td>
 </tr>
<tr><td></td><td>
	<p align="center">
	<input type=submit value="Inserisci articolo" name="B1" style="font-weight: 700"></td></tr>
<tr width="480">
<td colspan="2">
<font face="Eras Medium ITC" size="-3">I campi contrassegnati da <img src="images/campoobbligatorio.png"> sono obbligatori.</font></td>
</tr>
</table>
</div>
</form> 
<script type="text/javascript">
function vendita() {
    var Acquisto = 0.0+document.getElementById('Acquisto').value;
    var Ricarico = 0.0+document.getElementById('Ricarico').value;
    if (Acquisto <= 0 || Ricarico <= 0){
        document.getElementById('Vendita').value = "--";
    }else{
        //var ven = parseInt((acq * 100) / ric);
        //var numero = (acq * ric) / 100;
        var numeroivato = Acquisto*(1+Ricarico/100);
        var Vendita = numeroivato.toFixed(2);
        document.getElementById('Vendita').value = Vendita;
    }
}
</script>
</body>
</HTML>

e quello di generazione del codice è questo :

PHP:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
<title>Documento senza titolo</title> 
</head> 

<body> 
<?php 
include ('connect.php'); 
$s = '';
$generato = '';
function codice() { 
    // $nums = '0123456789'; 
     $len = 10; // = strlen($nums) 
     global $s;

     for($i = 0; $i < 13; $i++) { 
          $s .=  rand() % $len ;
		  //$nums[rand() % 10]; // = rand() % $len 
     } 

     return $s; 
} 
function controllo_codice(){ 
 global $generato;

$generato = codice(); // qui hai il codice di 13 cifre   

while(mysql_num_rows(mysql_query("SELECT * FROM articoli WHERE barcode='$generato'"))) { // genera un altro codice 
    $generato = codice(); 
} 
}  
?> 
<form action=" <?php echo htmlspecialchars($_SERVER['PHP_SELF']);?> " method="post" name="genera">  
<table width="480" height="382" border=0 align="center" cellpadding=5 cellspacing=5> 
  <tr> 
<td><font face="Eras Medium ITC">Barcode:</font></td><td width="234"> 
<input type=text name="Barcode" size=35 maxlength=40 value=" 
<?php
if(isset($_POST['genera'])){
controllo_codice();  
 echo $generato;  
} 
?>"></td> 
</tr> 
<tr> 
<td colspan="2"> 
    <input name="genera" type="submit" id="genera" value="Genera">  
</td> 
</tr> 
</body> 
</html>

Non capisco come fare per inserire solamente un tasto genera a fianco del barcode che richiami la generazione... devo fare in modo che il barcode possa essere generato sia tramite lettura con scanner e sia tramite generazione automatica...
 
Beh tu hai fatto 2 pagine distinte praticamente, devi prendere le funzioni in php e adattarle in quella pagina con un altro form, trasferisci quella parte di la senza copiare il form ma solo l'input e la parte in php, oppure mettere quelle funzioni in una pagina a parte e includerla dove ti serve adattandolo di volta in volta


Ad esempio fai una pagina da usare nei form solo con questa parte

PHP:
<?php  
include ('connect.php');  
$s = ''; 
$generato = ''; 
function codice() {  
    // $nums = '0123456789';  
     $len = 10; // = strlen($nums)  
     global $s; 

     for($i = 0; $i < 13; $i++) {  
          $s .=  rand() % $len ; 
          //$nums[rand() % 10]; // = rand() % $len  
     }  

     return $s;  
}  
function controllo_codice(){  
 global $generato; 

$generato = codice(); // qui hai il codice di 13 cifre    

while(mysql_num_rows(mysql_query("SELECT * FROM articoli WHERE barcode='$generato'"))) { // genera un altro codice  
    $generato = codice();  
}  
}   
?>
 
ok e l'ho fatta, ma ora se voglio farlo generare devo creare un pulsante di generazione... Ma se faccio il pulsante mi sfarfalla il form principale...
 
ci sono due form... e mi coincide con l'altro submit... inoltre mi sfarfalla la struttara...
 
Come faccio a inserire una form dentro una form? e soprattutto non far intralciare i due submit?
 

Discussioni simili