Generer automatiquement le numéro

Fermé
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 - 28 août 2012 à 19:19
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 - 29 août 2012 à 16:56
Bonjour,

Je suis entrain de créer dans mon application un système de création des tickets automatique, ça fonctionne parfaitement bien et j'ai utilisé un script php pour générer automatiquement le numéro du ticket mais il s'avère que ce script n'affiche pas une suite logique c'est à dire que les numéros sont généré aléatoirement; alors j'aimerais une aide de votre part, je veux que le numéro puisse avoir une suite logique par exemple : date/heure/numéro d'ordre, un peu comme 0708001.

Voilà ce que j'ai utilisé pour créer le numéro de ticket :

 <?php
$nb_min = 1;
$nb_max = 100000;
$nombre = mt_rand ($nb_min,$nb_max);
?>

//on affiche le numéro ici

echo $nombre; 




A voir également:

2 réponses

Tralala8 Messages postés 120 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 12 février 2013 14
28 août 2012 à 20:14
Bonjour,

C'est normal que le nombre ressorti est aléatoire, c'est le but de la fonction mt_rand.

Si le tout est enregistrer en base de données, pourquoi ne pas créer un numéro se basant sur l'id de l'enregistrement ? C'est tout simple et ça assure un numéro de ticket unique.
1
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
29 août 2012 à 09:42
Le but du numéro du ticket est aussi d'avoir une suite du genre : DateMoisNum d'ordre!
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
29 août 2012 à 10:30
Alors il va falloir créer une table "compteurs" et gérer une ligne par date.
0
Tralala8 Messages postés 120 Date d'inscription mercredi 17 août 2011 Statut Membre Dernière intervention 12 février 2013 14
29 août 2012 à 14:46
Rien n'empêche de le faire même avec l'id de l'enregistrement.

Lors de la génération du ticket, tu génères le jour et le mois. Ces trois données sont enregistrées dans la base de données. Lorsqu'il faut afficher le numéro de ticket, il suffit de concaténer ces trois données et le tour est joué.
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
29 août 2012 à 09:30
Salut GlodyBiss, ça fait un bail :)

En effet pour un compteur, le plus simple reste de stocker sa valeur en base. Par exemple tu te fais une table "compteur" et dedans tu fais une ligne pour ton compteur.

Ensuite je te propose d'utiliser :
1/ La fonction date() et ses paramètres pour récupérer heures, minutes, jour, mois, etc... https://www.php.net/manual/fr/function.date.php
2/ Ta donnée de compteur en base pour la fin du numéros ; sans oublier de l'incrémenter à chaque fois bien sûr.

Autre solution : tu utilises le timestamp (time())comme numéro de ticket ; il s'incrémente chaque seconde, n'existera jamais en double (sauf si tu as énormément de trafic, alors tu utilises microtime())
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
29 août 2012 à 13:57
Salut Mihawk ! ça fait vraiment un bye, j'suis content que tu sois là parce que généralement toi et Assassin vous me donnez des solutions! ^^

Voici à quoi ressemble mon code, j'ai mis une petite pause avec le code à générer je cherche d'abord à résoudre un autre problème qui vient de se poser! Il se fait que quand j'envoie mon mail toute les variables que j'ai déclaré ici ne sont pas pris en charge, le mail va vide sans rien et je reçois l'erreur que toute ces variables sont indéfini !

voici mon code :

 <?php
include_once('secure.php');
//Paramettre mmail
$Destinataire = "news@cybernet.cd";
$Sujet = "Nouveau Ticket enregistré";
$From  = "From:news@cybernet.cd\n";
$From .= "MIME-version: 1.0\n";
$From .= "Content-type: text/html; charset= iso-8859-1\n";
$Message = "Dear, <p>Un nouveau ticket vient d'etre créé dont voici les details : </p><p>Numero du ticket : $ticketnumber</p><p>Client : $customer_name</p><p>Type de Plainte : $plainte_type</p><p>Ticket créé par : $by</p><p>Date et heure : $date</p><p>Commentaire :$comment</p>";

//genère le numero de ticket
$nb_min = 1;
$nb_max = 100000;
$nombre = mt_rand ($nb_min,$nb_max);
 //genère le numero de ticket
?>

 <?php
    if (isset($_POST['Soumettre']) && $_POST['Soumettre'] == 'Soumettre') {
	extract($_POST);
         if (isset($_POST['customer_name']) && !empty($_POST['customer_name']))  {
           $erreur = 'Le nom du client est vide.';
        }
		if (isset($_POST['by']) && !empty($_POST['by']))  {
           $erreur = 'Vous devriez indiquer votre nom pour suivi.';
        }
             $sql = 'INSERT INTO 'ticket'('ticketnumber','customer_name', 'by', 'plainte_type', 'comment', 'date') VALUES ("'.mysql_escape_string($_POST['ticketnumber']).'","'.mysql_escape_string($_POST['customer_name']).'","'.mysql_escape_string($_POST['by']).'", "'.mysql_escape_string($_POST['plainte_type']).'","'.mysql_escape_string($_POST['comment']).'", "'.date('Y-m-d H:i:s').'")';
                mysql_query($sql) or die('Erreur SQL !'.$sql.'<br />'.mysql_error());
				
 if ( mail( $Destinataire,$Sujet,$Message,$From) ) // tentative d'envoi du message  
            {  
                $mailSent = true;  
            }  
		else // échec de l'envoi  
            {  
                $errors[] = 'Erreur d\'envoie de mail.';  
            }  
                echo '<div id="info" class="succes">Ticket enregistré</br></div>';
                exit();
             }
    ?>

<div id="boxAgent">
<form action="" method="post" name="form1" id="form1">
          <table>
 <?php
 // échec de l'envoi
   if (isset($erreur)) {
   echo '<div id="info" class="error">'.$erreur.'</div><!--error-->';
     } ?>
     <br/><br/><h3>Nouveau Ticket</h3> 
  <tr>
              <td>Numero du Ticket</td>
              <td >
                <input type="text" name="ticketnumber"  class="input_ajout_agent" value="TK<?php echo $nombre; ?>" /><!--- affiche le  numero de ticket-->
				 </td> 
            </tr>
            <tr>
              <td class="td">Customer Name</td>
              <td> 
			 <?php
			 $query = "SELECT 'username' FROM 'wimax_site'";
			 $result = mysql_query($query);
			 echo '<SELECT  name="customer_name"  class="input_ajout_agent" value="<?php if (isset($_POST["customer_name"])) echo htmlentities(trim($_POST["customer_name"])); ?>">';
			echo '<OPTION>Choisissez le client</OPTION>';
			while ($row = mysql_fetch_array($result)) {
			 echo '<OPTION>'.$row['username'].'</OPTION>';
			 }
			 echo '</SELECT>';
			 ?>
			  </td>
            </tr>

            <tr>
              <td>Ticket créé par</td>
              <td >
                <input type="text" name="by"  class="input_ajout_agent" value="<?php echo htmlentities(trim($_SESSION['nom'])); ?>" />
				 </td> 
            </tr>

             <tr>
              <td>Concerne/Plainte</td>
              <td>
			  <select type="text" name="plainte_type" class="input_ajout_agent">
			<option>Choisissez</option>
			<option value="Manque de connexion">Pas d'accès internet</option>
			  <option value="Desinstallation">Desinstallation</option>  
			  <option value="Installation">Installation</option> 
			  <option value="Lenteur">Lenteur</option>
			  <option value="Reactivation">Reactivation</option> 
			  <option value="Mise en test">Mise en test</option>
			  <option value="Mise en test">Mail</option>
			  <option value="Changement de service">Changement de service</option>
			  <option value="Autres">Autres</option>
			  </select>
			</td>
            </tr>

              <tr>
               <td>Detail/Commentaire</td>
              <td >
                  <textarea type="text" name="comment"  class="input_ajout_agent" value="<?php if (isset($_POST['comment'])) echo htmlentities(trim($_POST['comment'])); ?>" ></textarea></td>
            </tr>

            <tr>
                         <td></td>
                         <td><input type="submit" name="Soumettre" class="submi" value="Soumettre" /></td>
            </tr>
			</table>

</form></div>


Erreur :

Notice: Undefined variable: ticketnumber in C:\wamp\www\wimaxcustomer\ticket.php on line 9

Notice: Undefined variable: customer_name in C:\wamp\www\wimaxcustomer\ticket.php on line 9

Notice: Undefined variable: plainte_type in C:\wamp\www\wimaxcustomer\ticket.php on line 9

Notice: Undefined variable: by in C:\wamp\www\wimaxcustomer\ticket.php on line 9

Notice: Undefined variable: date in C:\wamp\www\wimaxcustomer\ticket.php on line 9

Notice: Undefined variable: comment in C:\wamp\www\wimaxcustomer\ticket.php on line 9
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
29 août 2012 à 13:59
C'est un peu normal non, tu appelles toutes ces variables en début de page PHP mais elles n'ont été définies nulle part au dessus (enfin, de ce qu'on voit ici)
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
29 août 2012 à 14:22
Les variables sont définie quand la requête sql
0
Mihawk Messages postés 4315 Date d'inscription mercredi 29 mars 2006 Statut Contributeur Dernière intervention 6 janvier 2015 846
29 août 2012 à 14:25
Pas du tout, c'est une requête d'INSERT, tu ne définis rien du tout. Tout ce que je vois ce sont des noms de colonnes, mais ce n'est en rien une définition de variables.
0
glodybiss Messages postés 440 Date d'inscription vendredi 6 juin 2008 Statut Membre Dernière intervention 29 juillet 2015 9
29 août 2012 à 14:29
Ouais! Je vois. Thanks, j'ai corrigé mais j'sais pas quoi mettre pour que les variables définies prenne les $_POST.
Voici ce que j'ai ajouté :

/Paramettre mmail
$Destinataire = "news@cybernet.cd";
$Sujet = "Nouveau Ticket enregistré";
$From  = "From:news@cybernet.cd\n";
$From .= "MIME-version: 1.0\n";
$From .= "Content-type: text/html; charset= iso-8859-1\n";
$ticketnumber ="";
$customer_name="";
$plainte_type="";
$by="";
$date="";
$comment="";
$Message = "Dear, <p>Un nouveau ticket vient d'etre créé dont voici les details : </p><p>Numero du ticket : $ticketnumber</p><p>Client : $customer_name</p><p>Type de Plainte : $plainte_type</p><p>Ticket créé par : $by</p><p>Date et heure : $date</p><p>Commentaire :$comment</p>";
0