Partage
  • Partager sur Facebook
  • Partager sur Twitter

Comptabilité d'Association avec Php et MySQL

1 février 2019 à 0:34:49

Bonsoir à tous,

Je me suis lancé il y a quelques temps dans la conception d'un petit module de compta automatique pour mon asso.

J'ai aujourd'hui envie de l'améliorer en y apportant quelques modification :

- Un formulaire html demande à l'utilisateur d'entrée la dépense qu'il souhaite enregistrer (Date, Montant, Description, Payeur, Justificatif pdf ou jpeg)

Dans la partie "Payeur" l'utilisateur à le choix entre les possiblités suivantes :

- Payé avec la CB de l'asso

- Payé avec le Cash de l'asso

- Payé par un des deux membres de la direction

En gros initialement, toutes les données étaient stockées dans une même table nMySQL. Mais pour gagner en clarté et organisation j'ai choisi de maintenant séparer les différentes tables (CB,Cash,Membre de l'asso) en fonction des payeurs.

Voilà mon code complet, pour la partie vérification du formulaire et enregistrement dans la BDD (Le problème doit probalblement venir de là) : Lorsque je remplis le formulaire, la page par sur mon fichier "verification.php" et reste bloqué là sur une page blanche... Je pense que c'est un problème de syntaxe mais j'ai envie d'avoir vos avis.

Voilà mon code :

<?php
// Connexion à la base de données
try
{
$bdd = new PDO('mysql:host=******************************************************); //ID + MDP Compte bdd
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
//Fin connexion bdd

// Verification de la validité des informations
$errors = array();

    if(empty($_POST['date_enregistrement']) || !preg_match('/^[0-9-]+$/', $_POST['date_enregistrement'])){
        $errors['date_enregistrement'] = "Erreur de date d'enregistrement. Contactez l'administrateur.";
    } 
    if(empty($_POST['date_achat']) || !preg_match('/^[0-9-]+$/', $_POST['date_achat'])){
        $errors['date_achat'] = "La date entrée est invalide : mm-dd-YYYY";
    } 
    if(empty($_POST['description']) || !preg_match('/^[a-zA-Z0-9-._ ]+$/', $_POST['description'])){
        $errors['description'] = "La description contient des caractères invalides (alphanumérique uniquement)";
    } 
	if(empty($_POST['montant']) || !preg_match('/^[0-9.,]+$/', $_POST['montant'])){
        $errors['montant'] = "Le montant entré doit être un nombre";
    } 
	if(empty($_POST['choix']) || !preg_match('/^[a-zA-Z_]+$/', $_POST['choix'])){
        $errors['choix'] = "Votre Prenom n'est pas valide (alphanumérique)";
    } 
    if(empty($_FILES['monfichier']) ){
        $errors['monfichier'] = "Fichier manquant";
    } 
	if($_FILES['monfichier']['error'] > 0){
        $errors['monfichier'] = "Fichier erreur";
    } 
    if (($_FILES['monfichier']['size']) > 1048576)
    {
		$errors['taille'] = "Fichier trop volumineux (1Mo max)";
	}
	
	if ((isset($_FILES['monfichier'])) && ($_FILES['monfichier']['error'] == 0))
{
	$infosfichier = pathinfo($_FILES['monfichier']['name']);
    $extension_upload = $infosfichier['extension'];
    $extensions_autorisees = array('jpg', 'jpeg', 'png', 'pdf');
    if (in_array($extension_upload, $extensions_autorisees))
	{
	}
	else
	{
		$errors['extension']="Extension de fichier non acceptée (jpg, jpeg, png, pdf)";
	}
}

// Fin de verification de la validité des informations

// Changement de format de date à faire
// Fin de changement de format de date

// Envoi du fichier et enregistrement des informations dans la base de donnée

// Payeur -> Alex ou Pierre
if(empty($errors) && (($_POST['choix']=='Pierre_Bavoux') || ($_POST['choix']=='Alexandre_Pellet') )){
	
$req = $bdd->prepare('INSERT INTO releve SET Date_Enregistrement = ?, Date_achat=?, Description=?, Montant=?, Nom=?, Facture=? ');
$req->execute(array(
	$_POST['date_enregistrement'],
	$_POST['date_achat'],
	$_POST['description'],
	$_POST['montant'],
	$_POST['choix'],
	$_FILES['monfichier']['name']
	));
	move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/'. basename($_FILES['monfichier']['name']));

	
  header('Location: index.php');
  exit();
}

// Payé en CB :
elseif(empty($errors) && ($_POST['choix']=='CB')){

$req = $bdd->query('SELECT Solde FROM CB WHERE ID=(SELECT MAX(ID) FROM CB) AS Derniersolde'); 
$donnees=$req->fetch();
$SOLDE = Derniersolde+$_POST['montant'];

$req = $bdd->prepare('INSERT INTO CB SET Date= ?,Description=?, Crédit=?, Débit=? ,Solde=? ');
$req->execute(array(
	$_POST['date_enregistrement'],
	$_POST['description'],
	
	if $_POST['montant'] >=0{	// Cas Crédit
		$_POST['montant'],
		NULL,
	}		
	else {						// Cas Débit
		NULL,
		$_POST['montant'],
	}
	$SOLDE
	));
	move_uploaded_file($_FILES['monfichier']['tmp_name'], 'uploads/'. basename($_FILES['monfichier']['name']));

	
  header('Location: index.php');
  exit();
}

//Payé en Cash
elseif($_POST['choix']=='Cash'){
	
$req = $bdd->query('SELECT Solde FROM Cash WHERE ID=(SELECT MAX(ID) FROM Cash) AS Derniersolde'); 
$donnees=$req->fetch();
$SOLDE = Derniersolde+$_POST['montant'];

$req = $bdd->prepare('INSERT INTO Cash SET Date= ?,Description=?, Crédit=?, Débit=? ,Solde=? ');
$req->execute(array(
	$_POST['date_enregistrement'],
	$_POST['description'],
	
	if $_POST['montant'] >=0{	// Cas Crédit
		$_POST['montant'],
		NULL,
	}		
	else {						// Cas Débit
		NULL,
		$_POST['montant'],
	}
	$SOLDE
	//SOLDE
	));	
  header('Location: index.php');
  exit();
}

else
// Erreurs
{
?>
<div class="alert alert-danger">
    <p>Vous n'avez pas rempli le formulaire correctement</p>
    <ul>
        <?php foreach($errors as $error): ?>
           <li><?= $error; ?></li>
        <?php endforeach; ?>
    </ul>
</div>
<?php
}
?>

 Est-ce que quelqu'un voit une faute grossière qui peut être corrigée ?

Merci d'avance,

++



  • Partager sur Facebook
  • Partager sur Twitter
N'hésitez pas à visiter mon site en construction et à donner des avis :) Merci !! Lien : http://foxwork.esy.es/
1 février 2019 à 0:41:04

> reste bloqué là sur une page blanche

Activer l'affichage des erreurs PHP (commencer par tester le code sur un environnement de développement ?) :

  • tes conditions tu ne peux ni les mettre comme ça dans un tableau et revoir la syntaxe d'un if, la condition s'entoure de parenthèses. Voir s'intéresser aux structures ternaires ici
  • $SOLDE = Derniersolde+$_POST['montant']; : Derniersolde est une constante que tu as défini ?
  • WHERE ID=(SELECT MAX(ID) FROM CB) en cas de concurrence, ça va mal finir ou alors la bdd est mal conçue
  • AS Derniersolde : un alias en clause WHERE ?!?

> Je pense que c'est un problème de syntaxe mais j'ai envie d'avoir vos avis.

Pourquoi nous demander nos avis quand PHP peut te les signaler directement ?

Non, franchement, commence par le début, apprends le langage et sur un environnement de développement, le but du forum ce n'est pas de jouer à chercher les 7 erreurs et de te les corriger.

-
Edité par julp 1 février 2019 à 0:54:15

  • Partager sur Facebook
  • Partager sur Twitter
4 avril 2024 à 15:14:41 - Message modéré pour le motif suivant : Message complètement hors sujet


4 avril 2024 à 15:36:16

@samoklaidOfficielQDLrecords  Bonjour,

Déterrage

Citation des règles générales du forum :

Avant de poster un message, vérifiez la date du sujet dans lequel vous comptiez intervenir.

Si le dernier message sur le sujet date de plus de deux mois, mieux vaut ne pas répondre.
En effet, le déterrage d'un sujet nuit au bon fonctionnement du forum, et l'informatique pouvant grandement changer en quelques mois il n'est donc que rarement pertinent de déterrer un vieux sujet.

Au lieu de déterrer un sujet il est préférable :

  • soit de contacter directement le membre voulu par messagerie privée en cliquant sur son pseudonyme pour accéder à sa page profil, puis sur le lien "Ecrire un message"
  • soit de créer un nouveau sujet décrivant votre propre contexte
  • ne pas répondre à un déterrage et le signaler à la modération

Liens conseillés

  • Partager sur Facebook
  • Partager sur Twitter