Creation numero facture

aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013 - 18 janv. 2011 à 14:25
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013 - 27 janv. 2011 à 17:08
Bonjour à tous

j'aimerais reproduire la fonction suivante (qui me permet de calculer mon numéro de facture) en php

voici la fonction :

Private Function New_no_facture() As Long
Dim lngNo As Long
lngNo = CLng(Year(txtDate)) * 100 + CLng(Month(txtDate))
If DCount("[no facture]", "facture", "fix([no facture]/1000)=" & lngNo) > 0 Then
New_no_facture = DMax("[no facture]", "facture", "fix([no facture]/1000)=" & lngNo) + 1
Else
New_no_facture = 1000 * lngNo + 1
End If
End Function




quelqu'un a t il une idée ????


Merci d'avance

Bonne journée

Aurélie

9 réponses

cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
18 janv. 2011 à 21:23
bonsoir

tu veux generer un numero de facture unique en php ?
une proposition


<?php
$date = date('YmdHis');
$date =(float)$date; /*force le type*/
echo $date;
echo '
';

//tu peux concaténer le timestamp
//echo time();
echo '<hr> Avec la concanètation
';
echo $date2=$date.'_'.time();
echo '<hr>';
//mais tu auras un string

//verifier si la facture existe
$link=mysql_connect('localhost','root','') or  die('? serveur');
$db=mysql_select_db('mabase') or  die('? base');
$sql="select * factures where id='$date'";
$query=mysql_query($sql) or  die('? query');
if(mysql_num_rows($query)>0){
$nb_fact = $date;
} else {
echo 'pas de facture presente';
/* ... */
}   
mysql_close($link);      
?>

a++
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
18 janv. 2011 à 21:26
select * from ... (erratum) a++
0
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
21 janv. 2011 à 09:51
bonjour

Merci pour vos réponses.

A la place de reproduire la fonction je change de méthode
Je stocke l'année, le mois et le numéro de création de chaque facture et je voudrais récupérer lors de la création le plus grand numéro selon la date ce j'ai saisi voici le code (mais cela ne fonctionne pas ):
<!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>Ajout nouvelle facture</title>
</head>
<?php
require_once('includes/bd.inc.php');
require_once('includes/magicquotes.inc.php');
//vide ou client ou banque
if (isset($_POST['nouvellefacture_0']) == 'oui')
{
//facture vide
} else
{
if (isset($_POST['nouvellefacture_1']) == 'oui')
{
//facture client
if(isset($_POST['Num']) && !empty($_POST['Num']))
{
$NumClient = mysqli_real_escape_string($lien, $_POST['Num']);
}
if(isset($_POST['CodeCom']) && !empty($_POST['CodeCom']))
{
$CodeCom = htmlspecialchars(mysqli_real_escape_string($lien, $_POST['CodeCom']));
}

}else
{
if (isset($_POST['nouvellefacture_2']) == 'oui')
//facture banque
{
if(isset($_POST['NumBanque']) && !empty($_POST['NumBanque']))
{
$NumClient = mysqli_real_escape_string($lien, $_POST['NumBanque']);
}
if(isset($_POST['CodeCom']) && !empty($_POST['CodeCom']))
{
$CodeCom = htmlspecialchars(mysqli_real_escape_string($lien, $_POST['CodeCom']));
}
}
}

}
if(isset($_POST['Date']))
{
$date_explosee = explode("/", $Date);
$jour = $date_explosee[0];
$mois = $date_explosee[1];
$annee = $date_explosee[2];
$resultat1 mysqli_query($lien, "select max(Numero) bdfacture where Mois'$mois' and Annee ='$annee'");
$rs=mysqli_query($resultat1);
if ($rs = @mysqli_query ($sql))
{
if (@mysqli_num_rows($rs)>0)
{
while ($tab = mysqli_fetch_array($rs))
{
//traitement
$NumFacture = $tab['Numero'] +1;
}
}
else {
$NumFacture = 1;
}
}
else {
echo 'Erreur MySQL : '.mysql_error();
}

$Date =changedatefrus(mysqli_real_escape_string($lien, $_POST['Date']));
$sql 'INSERT INTO bdfacture set Nofacture "' .$NumFacture .'", CodeClient = "' .$NumClient .'", Codecommercial = "' .$CodeCom .'", Date = "' .$Date .'"' ;

if (!mysqli_query($lien, $sql))
{
$erreur = "erreur dans l'ajout de la facture : " .mysqli_error($lien);
include 'erreur.html.php';
header ('location : modifreglementapp.php');

}
}



?>
<?php
function changedatefrus($datefr)
{
$dateus=$datefr{6}.$datefr{7}.$datefr{8}.$datefr{9}."-".$datefr{3}.$datefr{4}."-".$datefr{0}.$datefr{1};
return $dateus;
}
?>


</html>
je n'arrive pas à récupérer le plus grand numéro


quelqu'un a t il une idée ???

merci d'avance

Bonne journée

Aurélie
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
21 janv. 2011 à 10:26
bonjour

dans ta fonction je crois que c'est pas dans le bonne ordre

<?php
$Date = mysqli_real_escape_string(changedatefrus($_POST['Date']));

/* $lien ça vient d'ou ?

$lien = mysqli_real_escape_string($lien);

// puis ton insertion
*/
?>


a++
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
21 janv. 2011 à 11:19
si je mets $Date = mysqli_real_escape_string(changedatefrus($_POST['Date']));
j'arrive à créer une ligne dans ma table facture mais tous les champs sont vides

merci
0
TychoBrahe Messages postés 1309 Date d'inscription samedi 31 janvier 2009 Statut Membre Dernière intervention 5 juin 2013 12
21 janv. 2011 à 11:24
Salut,

@cod57 : Tu devrais lire la doc de mysqli_real_escape_string() avant de répondre,c e que tu propose ne peux pas fonctionner. En effet, mysqli_real_escape_string() prend toujours deux arguments : en premier le lien mysqli et en second la chaîne à protéger.
0
cod57 Messages postés 1653 Date d'inscription dimanche 7 septembre 2008 Statut Membre Dernière intervention 11 septembre 2013 19
21 janv. 2011 à 13:13
@TychoBrahe

d'accord avec toi, excuse moi
j ai pas fait gaffe au i tu as raison
je travaille tjs avec mysql je penser que c'était pareil ...
c'est l'ordre des fonctions qui me dérangé

$Date = mysqli_real_escape_string($lien,changedatefrus($_POST['Date']));

bon faut voir maintenant si c'est bien ça ...

a++
0
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
26 janv. 2011 à 16:01
bonjour,


voici un bout de mon code pour ma création de facture :
$Date = changedatefrus(mysqli_real_escape_string($_POST['Date']));
$date_explosee = explode("/", $Date);
$jour = $date_explosee[0];
$mois = $date_explosee[1];
$annee = $date_explosee[2];
$resultat1 mysqli_query($lien, "select max(Numero) bdfacture where Mois'$mois' and Annee ='$annee'");
$bdfacture = array();
while ($ligne = mysqli_fetch_array($resultat1))
{
$bdfacture[]= array('Numero' => $ligne ['Numero']);

}
$NumFacture = $bdfacture['Numero'] ;
$sql 'INSERT INTO bdfacture set Nofacture "' .$NumFacture .'", CodeClient = "' .$NumClient .'", Codecommercial = "' .$CodeCom .'", Date = "' .$Date .'", Annee = "' .$annee .'"' ;

je n'arrive pas a récupérer mon plus grand numéro

quelqu'un a t il une idée ???


merci d'avance

Aurélie
0
aureliemerlin Messages postés 82 Date d'inscription jeudi 24 juin 2010 Statut Membre Dernière intervention 17 avril 2013
27 janv. 2011 à 17:08
bonjour

voici un morceau de code qui me permet de créer une facture mais j'ai un problème pour récupérer mon numéro maximum
voici le code :
if(isset($_POST['Date']))
{
require_once('includes/bd.inc.php');
require_once('includes/magicquotes.inc.php');
$Date =changedatefrus( mysqli_real_escape_string($lien, $_POST['Date']));
$CodeCom = htmlspecialchars(mysqli_real_escape_string($lien, $_POST['CodeCom']));
$Evolutionfacture = 'NPAY';
$mois = htmlspecialchars(mysqli_real_escape_string($lien, $_POST['mois']));
$annee = htmlspecialchars(mysqli_real_escape_string($lien, $_POST['annee']));
// $query "SELECT MAX(Numero) as num FROM bdfacture WHERE Mois'$mois' and Annee ='$annee' "
$requete "select max(Numero) from bdfacture WHERE Mois'$mois' and Annee ='$annee' ";
$result = mysqli_query($requete);
if (! $result)
{
$NumFacture = "01";
} else {
// traitements ....
$ligne = mysqli_fetch_array($result);
$NumFacture = $ligne +1 ;
}

$sql 'INSERT INTO bdfacture set CodeClient "' .$NumClient .'", Codecommercial = "' .$CodeCom .'", Date = "' .$Date .'", Mois = "' .$mois .'", Annee = "' .$annee .'", Numero = "' .$NumFacture .'", TypeFacture = "' .$TypeFacture .'", TypeClient2 = "' .$TypeClient2 .'", Evolutionfacture = "' .$Evolutionfacture .'"';



quelqu'un a t il une idée ????,


merci d'avance

Aurélie
0
Rejoignez-nous