J'aurai besoin de votre aide pour créer des numéro de facture à partir d'info de ma bdd
Dans ma bdd j'ai une colonne avec des noms que je voudrai comparer les uns avec les autres et si les noms sont identiques mettre le même numéro.
Le problème c'est que j'ai une ligne d'achat ou il y a par exemple "Sergio" et la ligne de règlement "Sergio cb" ou "Sergio esp" , il faudrait que j'arrive à faire un truc pour dire que le nom "Sergio" est égale à "Sergio cb" ou "Sergio esp" pour pouvoir mettre le même numéro sur les deux lignes.
J'ai essayé avec ça
<?php
$mystring = ''.trim(rtrim($data_test['nom'])).'';
$findme = 'cb';
$pos = strpos($mystring, $findme);
if ($pos === false) {
echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'";
} else {
echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring'";
echo " et débute à la position $pos";
}
?>
Le souci c'est que je ne compare que cb alors que j'ai aussi esp, chq, virement et je ne vois pas comment faire un array.
C'est à dire ? je comprend pas ou tu veux en venir.
Un truc de ce style m'irait bien sauf que je peux comparer qu'une chaine de caractères et j'en ai cinq différentes
<?php
$mystring = ''.trim(rtrim($data_test['nom'])).'';
$findme = 'cb';
$pos = strpos($mystring, $findme);
if ($pos === false) {
echo "La chaîne '$findme' ne se trouve pas dans la chaîne '$mystring'";
} else {
echo "La chaine '$findme' a été trouvée dans la chaîne '$mystring'";
echo " et débute à la position $pos";
}
?>
// la variable a vérifier
$test = 'Sergio cb';
//on passe chaque thermes dans un array
$array = explode(" ", $test);
// maintenant on a :
// $array[0] = Sergio
// et $array[1] = cb
En comparant $array[0] ça devrait faire ce sue tu veux
pensez au "+1" si ça vous a aider, ça fait toujours plaisir ;)
Oui je sais que la table est mal conçue et qu'il est préférable de faire deux tables avec numéro id, jointure etc... mais c'est ce que l'on ma donné pour créer des numéros de facture.
Mon idée été de comparer les noms, le crédit et débit.
Si le nom et identique et si le montant du crédit correspond au montant du débit alors je met le même numéro si il y a un truc qui diffère j'incrémente le numéro mais je bloque.
J'ai remplacé le while par un foreach voici mon nouveau code si tu pouvais m'aider ce serai cool.
<?php
$reponse_billets = $bdd->prepare('SELECT * FROM creation_num_facture ORDER BY id ASC');
$reponse_billets->execute();
function multipleExplode($separateurs = array(), $recherche_du_nom = ''){
$leseparateur=$separateurs[count($separateurs)-1];
array_pop($separateurs);
foreach($separateurs as $separateur){
$recherche_du_nom= str_replace($separateur, $leseparateur, $recherche_du_nom);
}
$result= explode($leseparateur, $recherche_du_nom);
return $result;
}
$i = 0; $m = 0;
$num = 1;
$tableau = array();
while( $data = $reponse_billets->fetch() )
{
$recherche_du_nom =''.trim(rtrim($data['nom'])).'';
$type_reglement = multipleExplode(array('cb', 'esp', 'chq', 'virement', 'ancv'), $recherche_du_nom);
$tableau[$data['id']][] = $data;// alimente le tableau
}
echo'<table>
<tr>
<td>Date</td>
<td>num facture</td>
<td>nom</td>
<td>Debit</td>
<td>Credit</td>
<td>lettrage</td>
</tr>';
foreach ($tableau as $key => $resultat)
{
echo'<tr>';
foreach($resultat as $cle => $values)
{
$date = DateTime::createFromFormat('d/m/Y', $values['date']); // Extraire la date dans le bon format
$annee_mois = $date->format('Ym'); // Récupérer l'annee + mois (ex: 201704 pour XX/04/2017)
if( $m != $annee_mois ){ // Si $annee_mois est different du dernier mois enregistré.
$m = $annee_mois; // On met à jour le dernier mois enregistré.
$i = 0; // On reset le compteur.
}
$num_facture = 'M'.$annee_mois.str_pad(++$i, 3, '0', STR_PAD_LEFT); // création du num de facture.
echo'<td>'.$values['date'].'</td>';
echo'<td>';
echo $num_facture.'';
echo'</td>';
echo'<td>';
echo''.$values['nom'].'';
echo'</td>
<td>'.$values['debit'].'</td>
<td>'.$values['credit'].'</td>
<td>'.$values['lettrage'].'</td>';
}
echo'</tr>';
}
echo'</table>';
$reponse_billets->closeCursor();
?>
J'entends, mais bidouiller une mauvaise base revient à faire du mauvais travail, modifie le fichier d'origine ce sera plus propre et plus efficace que ce que tu tentes de faire.
Qui plus est tu ne pourras tout simplement pas garantir l'unicité de tes numéros de factures si tu traites en PHP des données redondantes issues de ta base. Tu pourras le faire avec ton script, mais si tu dois pouvoir par exemple retrouver un numéro de facture pour une date et un nom donné, tu ne pourras plus.
Edit : modifier la base est d'autant plus simple que tu as toutes les données nécessaires pour y parvenir.
Tes postes mon fait penser à un truc, en assemblant les deux fichiers pourri du départ j'ai créé une colonne avec un lettrage qui est unique pour chaque clients.
je vais essayer avec ça.
franchement je n'ai pas le courage de revenir sur les fichiers de départ ou les noms étaient mal saisi parfois avec un - parfois sans avec des fautes de frappe etc...
J'ai tout contrôlé ligne par ligne et il y en a plus de 5000 pour essayer d'avoir un semblant de fichier propre.
Le but de la manœuvre et juste de mettre des numéros de facture et de sortir un tableau ensuite il est bien évident que je ne travaillerai pas comme ça.
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Création de site internet dansle7.fr Référencement et publicité gratuites sur commercesdu7.fr
Création de site internet dansle7.fr Référencement et publicité gratuites sur commercesdu7.fr
Création de site internet dansle7.fr Référencement et publicité gratuites sur commercesdu7.fr
Création de site internet dansle7.fr Référencement et publicité gratuites sur commercesdu7.fr
Création de site internet dansle7.fr Référencement et publicité gratuites sur commercesdu7.fr
Création de site internet dansle7.fr Référencement et publicité gratuites sur commercesdu7.fr