IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

projet php aide


Sujet :

Langage PHP

  1. #1
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 29
    Points : 17
    Points
    17
    Par défaut projet php aide
    Bonjour, je suis entrain de réaliser un projet perso en php. Mais je suis bloqué et j'aimerais que l'on me débloque
    Pouvez vous m'aider?
    Je vais vous expliquez ce que j'ai déjà fait:
    C'est un projet ou il y a une connexion/deconnexion/mot de passe perdu. Une fois connecté, il est possible de s'inscrire à des formations qui s'affichent. Il y a une 'search bar' pour chercher dans la liste. On clique sur un bouton qui envoi un GET et ma formation atterrie sur la page perso de l'utilisateur.

    Cela marche mais il y a un système de crédits/jours (15000/utilisateur/an et 15j/utilisateur/an). Donc au moment ou j'essaie de m'enregistrer à une formation, il faut que le bouzin prenne en compte çà.
    Donc mon idée était de récupérer les crédits et nombres de jours ainsi que le prix en crédit et jrs dans la formation avec un fetchAll.
    Ensuite je fais une condition et une update de bdd si c'est ok.

    Voilà le code qui ne marche pas mais qui est dans l'idée de ce que je veux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    		//récupére le pseudo de la session pour l'afficher à côté de "Vous êtes sur votre..."
    	$varID = $_SESSION['idEmploye'];
    	$req = $bdd->query( "SELECT nom, argent, jours FROM employe WHERE idEmploye = $varID" );
    	//Enregistre dans $data. Cela crée un tableau organisé
    	$data = $req->fetchAll();
    	var_dump($data);
    	$req3 = $bdd->query( "SELECT titre, date, duree, contenu, nbJours, lieu, prerequis, credit, prestataire.nom from prestataire, employe join selectionner on employe.idEmploye = selectionner.idEmploye join formation on formation.idFormation = selectionner.idFormation where employe.idEmploye = $varID" );
    	$data3 = $req3->fetchAll();
     
    	if(extract($_GET)) {
    		$argent = $data[0]['argent'];
    		$jours = $data[0]['jours'];
     
    		$coutFormation = $data3[0]['credit'];
    		$dureeFormation = $data3[0]['nbJours'];
     
    		$argent = $argent-$coutFormation;
    		$jours = $jours-$dureeFormation;
    		var_dump($argent);
    		var_dump($jours);
    		if($argent > 0 && $jours > 0) {
    			//met à jours les jrs et crédit de l'employé
    			$req4 = $bdd->prepare('UPDATE employe SET jours = :nvJours, argent = :nvArgent WHERE idEmploye = $varID');
    			$req4->execute(array(
    				'nvJours' => $jours,
    				'nvArgent' => $argent
    			));
    			//Rajoute la formation de l'employé
    			$req2 = $bdd->prepare( 'INSERT INTO selectionner (idEmploye, idFormation) VALUES (:idEmploye, :idFormation)' );
    			$req2->execute(array(
    				'idEmploye' => $varID,
    				'idFormation' => $idFormation,
    			));
    		}
    	}
    Je ne demande pas spécialement la réponse mais quelque chose qui pourrait beaucoup m'aider.
    La bdd ressemble à 99% à cela:
    https://raw.githubusercontent.com/Wi.../Formation.png

    Merci bien.

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Première requête tu lis les informations de l'employe : ok mais ça ne sert à rien de faire un fetchAll puisque tu ne cherches qu'un seul employé.

    Deuxième requête ... je ne sais pas trop ce que tu cherches.
    Dans la logique il faudrait ici regarder le prix de la formation donc je ne vois pas pourquoi tu fais les jointures et la condition vers l'employe.
    Encore une fois un simple fetch suffirait puisqu'on parle d'une seul formation.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Salut, la requête est là pour que je puisse faire cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    			<?php foreach($data3 as $key => $formations) :?>
     
    				</br></br></br>
    				<!-- Le titre de l'article en titre -->
    				<h3 style="font-size:30px;"><u><?= $formations['titre'] ;?></u></h3>
    				</br>
    				<p><strong>Contenu:</strong> </p><?= $formations['contenu'] ;?>
    				</br></br>
    				<p><strong>Date:</strong> <?= $formations['date'] ;?></p>
    				</br>
    				<p><strong>Durée(h):</strong> <?= $formations['duree'] ;?> h </p>
    				</br/>
    				<p><strong>Nb Jours:</strong> <?= $formations['nbJours'] ;?> j</p>	
    				</br>
    				<p><strong>Lieu :</strong> <?= $formations['lieu'] ;?> </p>	
    				</br>
    				<p><strong>Prerequis :</strong> <?= $formations['prerequis'] ;?> </p>	
    				</br>
    				<p><strong>Prestataire:</strong> <?= $formations['nom'] ;?></p>
     
     
    			<?php endforeach;?>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    		<div class="container-fluid">
    			<h1 style="text-align: center;">Vous étes sur votre compte: <strong><?= $data[0]['nom']; ?></strong></h1>
    			<h1 style="text-align: center;">Argents: <strong><?= $data[0]['argent']; ?></strong></h1>
    			<h1 style="text-align: center;">Jours: <strong><?= $data[0]['jours']; ?></strong></h1>
    		</div>
    Quand j'exécute le code de mon premier post, il met pas à jours le nb de crédit et de jours de l'employé ...

    edit: j'ai trouvé une de mes erreurs:
    $req4 = $bdd->prepare( 'UPDATE employe SET jours = :nvJours, argent = :nvArgent WHERE idEmploye = $varID' ); Les ' ', il fallait mettre " " :/

    edit 2: j'ai fait cela mais mon problème est que la première formation sur laquelle je clic ne se déduit pas. Je suis obligé de cliquer dessus encore une fois:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    //récupére le pseudo de la session pour l'afficher à côté de "Vous êtes sur votre..."
    	$varID = $_SESSION['idEmploye'];
    	$req = $bdd->query( "SELECT nom, argent, jours FROM employe WHERE idEmploye = $varID" );
    	//Enregistre dans $data. Cela crée un tableau organisé
    	$data = $req->fetchAll();
    	$req3 = $bdd->query( "SELECT titre, date, duree, contenu, nbJours, lieu, prerequis, credit, prestataire.nom from prestataire, employe join selectionner on employe.idEmploye = selectionner.idEmploye join formation on formation.idFormation = selectionner.idFormation where employe.idEmploye = $varID" );
    	$data3 = $req3->fetchAll();
     
    	if(extract($_GET)) {
    		//header('Location: formation.php');
    		$argent = $data[0]['argent'];
    		$jours = $data[0]['jours'];
     
    		$coutFormation = $data3[0]['credit'];
    		$dureeFormation = $data3[0]['nbJours'];
     
    		$argent = $argent-$coutFormation;
    		$jours = $jours-$dureeFormation;
     
    		if($argent > 0 && $jours > 0) {
    			//met à jours les jrs et crédit de l'employé
    			$req4 = $bdd->prepare("UPDATE employe SET jours = :nvJours, argent = :nvArgent WHERE idEmploye = $varID");
    			$req4->execute(array(
    				'nvJours' => $jours,
    				'nvArgent' => $argent,
    			));
     
    			//Rajoute la formation de l'employé
    			$req2 = $bdd->prepare( 'INSERT INTO selectionner (idEmploye, idFormation) VALUES (:idEmploye, :idFormation)' );
    			$req2->execute(array(
    				'idEmploye' => $varID,
    				'idFormation' => $idFormation,
    			));
    			?><script>console.log("Assé de jours et d'argent");</script><?php
    		}else if($argent < 0 && $jours > 0){
    			$req5 = $bdd->prepare("UPDATE employe SET jours = :nvJours, argent = :nvArgent WHERE idEmploye = $varID");
    			$req5->execute(array(
    				'nvJours' => $jours,
    				'nvArgent' => 0,
    			));	
    			?><script>console.log("Pas assé d'argent");</script><?php
    		}else if($argent > 0 && $jours < 0) {
    			$req6 = $bdd->prepare("UPDATE employe SET jours = :nvJours, argent = :nvArgent WHERE idEmploye = $varID");
    			$req6->execute(array(
    				'nvJours' => 0,
    				'nvArgent' => $argent,
    			));
    			?><script>console.log("Pas Assé de jours");</script><?php			
    		}else {
    			$req7 = $bdd->prepare("UPDATE employe SET jours = :nvJours, argent = :nvArgent WHERE idEmploye = $varID");
    			$req7->execute(array(
    				'nvJours' => 0,
    				'nvArgent' => 0,
    			));
    		?><script>console.log("Pas assé de jours et d'argent");</script><?php			
    		}
    	}

  4. #4
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Salut, la requête est là pour que je puisse faire cela:
    Toutes les valeurs que tu affiches sont dans la colonne formation donc pourquoi cette jointure vers employé ?

    Pour ton problème, il faut lire les données après la mise à jour et pas avant.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Administrateur systèmes et réseaux
    Inscrit en
    Mars 2015
    Messages
    29
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations professionnelles :
    Activité : Administrateur systèmes et réseaux
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Mars 2015
    Messages : 29
    Points : 17
    Points
    17
    Par défaut
    Oui mais je veux les formations spécifiques de idEmploye.
    Pour l'ordre de lecture des informations. Normalement, si j'ai un extract GET (donc si une personne appuie sur le bouton), mes infos se mettent à jours. Dans le code l'affichage est pourtant placé après donc je sais pas pourquoi il se met pas à jours. Pourrais-tu me montrer dans mon code stp?

  6. #6
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Ton UPDATE est à la fin du code, ton SELECT au début donc je ne comprends pas de quoi tu parles.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Aide pour projet PHP
    Par nawake dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 05/12/2011, 12h00
  2. Projet PHP
    Par Nacros dans le forum XMLRAD
    Réponses: 9
    Dernier message: 09/04/2006, 14h46
  3. [MySQL] Projet PHP : Génération de numéro de Références et Stockage
    Par Jimmy_S dans le forum PHP & Base de données
    Réponses: 136
    Dernier message: 27/10/2005, 16h22

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo