Generazione random barcode

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

Emix

Utente Attivo
15 Feb 2010
596
0
16
Salve a tutti,
ho fatto uno script per la generazione random di un barcode, inoltre controlla se presente nel DB ed eventulamente lo rigenera..
Non capisco perche non mi funziona.... Eppure sembrerebbe tutto giusto... posto 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>
</table>

</body>
</html>
 
Ciao, cosi come hai scritto la variabile $s al di fuori delle funzioni non esiste
prova in questo modo
PHP:
<?php

include ('connect.php');

function codice() {
    $nums = '0123456789';
    $s = '';
    for ($i = 0; $i < 13; $i++) {
        $s .= $nums[rand() % 10];
    }
    if (controllo_codice($s))
        return $s;
    else
        return codice();
}

function controllo_codice($s) {
    if (mysql_num_rows(mysql_query("SELECT * FROM articoli WHERE barcode='$s'")) > 0) {
        return false;
    }
    return true;
}

echo "il codice generato è:" . codice();
?>
non ho testato cosa succede se presente nel db
 
ciao,
scusa se ti rispondo ora ma sono stato una settimana fuori.. Funziona benissimo.. avevi ragione la variabile non si riempiva nella maniera in cui avevo scritto il codice io ^^ Grazie ancora :D
 

Discussioni simili