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

PHP & Base de données Discussion :

Récupération et enregistrement dans une BdD


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut Récupération et enregistrement dans une BdD
    Bonjour à tous sa fait des heures et des heures que je cherche une solution à mon problème sans succès.

    Je fais un site pour un projet scolaire.

    J'ai fait un formulaire entrée des stocks : entree.php
    ce dernier dirige vers entree_article.php

    Mais quand je clic sur vaider il ne se passe rien. Quand je regarde sur inspecter les requêtes via mozzilla je vois bien ma requête get et post et les variables corrrespondantes.

    Voici mon code en espérant trouver de l'aide :

    entree.php
    Code php : 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
    58
    59
    60
    61
    62
    63
    <?php
    include 'entete.php';
    if (!empty($_GET['id'])) {
        $article = getArticle($_GET['id']);
    }
    ?>
     
     
    <?php
    if($_SESSION["autoriser"]!="oui"){
          header("location:login.php");
     
       }
       if(date("H")<18)
     
          $bienvenue= $_SESSION["login"];
       else
          $bienvenue= $_SESSION["login"];
     
     
    ?>
     
    	<div class="home-content">
     
            <div class="overview-boxes">
     
    			<div class="box_form">
     
     
     
    <form action="entree_article.php" method="post">
    <label for="date">Date</label>
    <input value="<?=!empty($_GET['id'])? $article['date'] : ""?>"  type="date" name="date" id="date" placeholder="Saisir la quantité">
     
     
    <label for="ref_produit">Ref produit</label>
    <input value="<?=!empty($_GET['id'])? $article['ref_produit'] : ""?>"  type="number" name="ref_produit" id="ref_produit" placeholder="scanner la référence du produit">
    <input value="<?=!empty($_GET['id'])? $article['id'] : ""?>"type="hidden" name="id" id="id">
     
    <label for="quantite_entree">Quantité</label>
    <input value="<?=!empty($_GET['id'])? $article['quantite_entree'] : ""?>"  type="number" name="quantite_entree" id="quantite_entree" placeholder="Saisir la quantité">
     
    <label for="login">Mouvement fait par</label>
    <input value="<?php echo $bienvenue?><?=!empty($_GET['id'])? $article['login'] : ""?>" DISABLED type="text" name="login" id="login" >
     
     
     
    <input type="submit" name="valider" value="valider"/>
     
     
    			</div>
     
     
    		</div>
    	</div>
    </form>
      </section>  
     
    <?php
     
    include 'pied.php'
     
    ?>


    entree_article.php
    Code php : 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
    58
    59
    <?php
    include 'connexion.php';
     
     
     
    if (
    	!empty($_POST['ref_produit'])
    	&& !empty($_POST['quantite_entree'])
    	&& !empty($_POST['date'])
    	&& !empty($_POST['login'])
     
     
    	) {
     
     
    $article = getArticle($POST['ref_produit']); 
     
    	$sql = "INSERT INTO entree(date, ref_produit, quantite_entree,login)
    	VALUES(?, ?, ? ,?)";
    	$req = $pdo->prepare($sql);
     
    	$req->execute(array(
    	$_POST['date'],
    	$_POST['ref_produit'],
    	$_POST['quantite_entree'],
    	$_POST['login']
     
     
    	));
     
    		if ( $req->rowCount()!=0) {
     
    	$sql = "UPDATE article SET stock_actuel=stock_actuel+? where id=?";
    	$req = $pdo->prepare($sql);
     
    	$req->execute(array(
    		$_post['quantite_entree'],
    		$_post['ref_produit'],
    ));	
    			if ( $req->rowCount()!=0) {
     
    		$_SESSION['message']['text'] = "Entrée effectué avec succès";
    		$_SESSION['message']['type']= "success";
     
    			}else {
     
    		$_SESSION['message']['text'] = "Une erreur s'est produite lors de l'entrée de l'article";
    		$_SESSION['message']['type'] = "danger";
    		}	
     
    			}else {
    		$_SESSION['message']['text'] = "une erreur s'est produite";
    		$_SESSION['message']['type'] = "danger";
    		}
    	}
     
    		  header("location:entree.php");
     
    ?>

    si besoin je vous envoi la fonction getArticle car j'ai un doute sur le fait qu'elle en soit la cause. Cette dernière est utilisée pour un autre formulaire d'ajout d'article qui fonctionne parfaitement :


    function.php
    Code php : 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
    <?php
    include 'connexion.php';
     
    function getArticle($id=null)
    {
        if (!empty($id)) {
            $sql = "SELECT * FROM article WHERE id=?";
            $req = $GLOBALS['pdo']->prepare($sql);
            $req->execute(array($id));
            return $req->fetch();
        } else {
            $sql = "SELECT * FROM article";
            $req = $GLOBALS['pdo']->prepare($sql);
            $req->execute();
            return $req->fetchAll();
        }
    }
    ?>

    Pour information l'user saisit la date la ref_produit la quantité et le login de l'user se met automatiquement. Quand je valide je veux que la quantité soit déduite sur la table article > stock_actuel

  2. #2
    Membre chevronné Avatar de ddaweb
    Homme Profil pro
    Webmaster amateur
    Inscrit en
    Janvier 2013
    Messages
    341
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Webmaster amateur
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Janvier 2013
    Messages : 341
    Par défaut
    Bonsoir,

    Dans ta page entree.php : #33 -> ton placeholder ne correspond pas à ton type d'input ... pas la cause du problème

    Dans ta page entree_article.php : #16 -> $_POST au lieu de $POST ... pourrait être la cause + il y a des $_POST et $_post : il me semble que cela doit être majuscule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $article = getArticle($POST['ref_produit']);

  3. #3
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut
    J'ai appliqué la modification sur le placeholder. Merci

    J'ai toujours le même problème je vous joins ma table sql au cas ou j'ai fait des erreurs :

    résumé
    table article : id, ref_produit, Nom_produit, categorie_produit, stock_actuel, stock_alerte
    table user : id, n_badge, login
    table entree : id, date, ref_produit, quantite_entree, login
    table sortie : id, date, ref_produit, quantite_sortie, login

    J'ai peut être fait des erreurs en créant: voici un export :

    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
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
     
    -- phpMyAdmin SQL Dump
    -- version 5.1.1
    -- https://www.phpmyadmin.net/
    --
    -- Host: 127.0.0.1:3306
    -- Generation Time: Dec 05, 2022 at 10:32 PM
    -- Server version: 5.7.36
    -- PHP Version: 7.4.26
     
    SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
    START TRANSACTION;
    SET time_zone = "+00:00";
     
     
    /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
    /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
    /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
    /*!40101 SET NAMES utf8mb4 */;
     
    --
    -- Database: `stock`
    --
     
    -- --------------------------------------------------------
     
    --
    -- Table structure for table `article`
    --
     
    DROP TABLE IF EXISTS `article`;
    CREATE TABLE IF NOT EXISTS `article` (
      `id` int(30) NOT NULL AUTO_INCREMENT,
      `ref_produit` int(30) NOT NULL,
      `categorie_produit` varchar(50) NOT NULL,
      `nom_produit` varchar(50) NOT NULL,
      `stock_actuel` int(30) NOT NULL,
      `stock_alerte` int(30) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `ref_produit` (`ref_produit`)
    ) ENGINE=InnoDB AUTO_INCREMENT=19 DEFAULT CHARSET=utf8;
     
    --
    -- Dumping data for table `article`
    --
     
    INSERT INTO `article` (`id`, `ref_produit`, `categorie_produit`, `nom_produit`, `stock_actuel`, `stock_alerte`) VALUES
    (5, 3, 'Ordinateur', 'dgdbv', 120, 5),
    (11, 8493279, 'Ordinateur', 'FJVNSFO', 800, 8),
    (14, 3246, 'Ordinateur', 'TEST', 10, 57),
    (15, 3893508, 'Ordinateur', 'ORDINATEUR DE TEST', 8, 1),
    (16, 46584, 'Ordinateur', 'teds', 5, 10),
    (17, 3246, 'Ordinateur', 'rgkptest', 54, 200);
     
    -- --------------------------------------------------------
     
    --
    -- Table structure for table `associate`
    --
     
    DROP TABLE IF EXISTS `associate`;
    CREATE TABLE IF NOT EXISTS `associate` (
      `id` int(30) NOT NULL AUTO_INCREMENT,
      `n_badge` varchar(50) NOT NULL,
      `login` varchar(50) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `login` (`login`)
    ) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;
     
    --
    -- Dumping data for table `associate`
    --
     
    INSERT INTO `associate` (`id`, `n_badge`, `login`) VALUES
    (13, '11234556', 'demarech');
     
    -- --------------------------------------------------------
     
    --
    -- Table structure for table `entree`
    --
     
    DROP TABLE IF EXISTS `entree`;
    CREATE TABLE IF NOT EXISTS `entree` (
      `id` int(30) NOT NULL AUTO_INCREMENT,
      `date` date NOT NULL,
      `ref_produit` int(50) NOT NULL,
      `quantite_entree` int(50) NOT NULL,
      `login` varchar(50) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `ref_produit` (`ref_produit`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    -- --------------------------------------------------------
     
    --
    -- Table structure for table `sortie`
    --
     
    DROP TABLE IF EXISTS `sortie`;
    CREATE TABLE IF NOT EXISTS `sortie` (
      `id` int(30) NOT NULL AUTO_INCREMENT,
      `date_sortie` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
      `ref_produit` int(50) NOT NULL,
      `nom_produit` varchar(50) NOT NULL,
      `quantite_sortie` int(50) NOT NULL,
      `login` varchar(50) NOT NULL,
      PRIMARY KEY (`id`),
      KEY `ref_produit` (`ref_produit`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
     
    --
    -- Constraints for dumped tables
    --
     
    --
    -- Constraints for table `entree`
    --
    ALTER TABLE `entree`
      ADD CONSTRAINT `entree_ibfk_1` FOREIGN KEY (`ref_produit`) REFERENCES `article` (`id`);
     
    --
    -- Constraints for table `sortie`
    --
    ALTER TABLE `sortie`
      ADD CONSTRAINT `sortie_ibfk_1` FOREIGN KEY (`ref_produit`) REFERENCES `article` (`id`);
    COMMIT;
     
    /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
    /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
    /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
    J'i modifié mon fichier entree.php comme ceci :
    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
    <?php
    include 'entete.php';
    if (!empty($_GET['id'])) {
        $article = getArticle($_GET['id']);
    }
    ?>
     
     
     
     
    	<div class="home-content">
     
            <div class="overview-boxes">
     
    			<div class="box_form">
     
     
     
    <form action="entree_article.php" method="post">
     
     
     
    <label for="ref_produit">Ref produit</label>
    <input value="<?=!empty($_GET['id'])? $article['ref_produit'] : ""?>"  type="number" name="ref_produit" id="ref_produit" placeholder="scanner la référence du produit">
    <input value="<?=!empty($_GET['id'])? $article['id'] : ""?>"type="hidden" name="id" id="id">
     
    <label for="quantite_entree">Quantité</label>
    <input value="<?=!empty($_GET['id'])? $article['quantite_entree'] : ""?>"  type="number" name="quantite_entree" id="quantite_entree" placeholder="Saisir la quantité">
     
    <label for="login">Mouvement fait par</label>
    <input value="<?=!empty($_GET['id'])? $article['login'] : ""?>" type="text" name="login" id="login" >
     
     
     
    <input type="submit" name="valider" value="valider"/>
     
     
    			</div>
     
     
    		</div>
    	</div>
    </form>
      </section>  
     
    <?php
     
    include 'pied.php'
     
    ?>
    Voici mon fichier entree_article.php :

    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
    <?php
    include 'connexion.php';
    include_once 'function.php';
     
    var_dump($_POST);
     
    if (
    	!empty($_POST['ref_produit'])
    	&& !empty($_POST['quantite_entree'])
    	&& !empty($_POST['login'])
     
     
    	) {
     
    	$sql = "INSERT INTO entree(ref_produit, quantite_entree,login)
    	VALUES(?, ? ,?)";
    	$req = $pdo->prepare($sql);
     
    	$req->execute(array(
    	$_POST['ref_produit'],
    	$_POST['quantite_entree'],
    	$_POST['login']	
     
    	));
    	$sql = "UPDATE article SET stock_actuel=stock_actuel+? where id=?";
    	$req = $pdo->prepare($sql);
     
    	if ( $req->rowCount()!=0) {
    		$_SESSION['message']['text'] = "article ajouté avec succès";
    		$_SESSION['message']['type']= "success";
    	}else {
    		$_SESSION['message']['text'] = "Une erreur s'est produite lors de l'ajout de l'article";
    		$_SESSION['message']['type'] = "danger";
    		}
    	}else{
    		$_SESSION['message']['text'] = "Une information obligatoire non renseignée";
    		$_SESSION['message']['type'] = "danger";
    		}
     
    		  header("location:entree.php");
     
    ?>
    Se que je comprends pas c'est que quand je clique sur valider il fait la redirection vers entree.php mais aucun message d'erreur que je laisse vide ou que je remplisse. la je sèche complètement.

  4. #4
    Expert confirmé
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 330
    Détails du profil
    Informations personnelles :
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 330
    Billets dans le blog
    17
    Par défaut
    Tu devrais indenter ton script correctement. Là c'est dur à lire.

    Tu devrais éviter empty() (faux-ami). Généralement on initialise les variables en entrée en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Initialisation
    $ref_produit = $_POST['ref_produit'] ?? null;
    $quantite_entree = $_POST['quantite_entree'] ?? null;
    $login = $_POST['login'] ?? null;
    Si 1 des ces variables est null alors le formulaire n'a pas été soumis correctement.
    Ensuite il faut vérifier la valorisation des variables (vide, invalide, etc.).

    Assure-toi que $_SESSION est bien valorisée comme tu l'attends en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print_r($_SESSION);
    exit;
    header('Location: entree.php');
    Dans entree.php je ne vois pas d'utilisation de $_SESSION. Tu es censé en faire quoi ?

  5. #5
    Membre Expert Avatar de ojo77
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Décembre 2010
    Messages
    680
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Décembre 2010
    Messages : 680
    Par défaut
    Bonjour

    Vous mélangez les méthodes GET et POST ... est-ce voulu ?

  6. #6
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut
    Citation Envoyé par ojo77 Voir le message
    Bonjour

    Vous mélangez les méthodes GET et POST ... est-ce voulu ?
    Je viens d'enlevé le GET mais effectivement s'était voulu quand j'ai fait mes autres pages article et ajout_article.php je pouvais ajouter un article ou le modifier mais l) il est vrai que je n'en ai pour l'instant pas l'utilité.

  7. #7
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tu devrais indenter ton script correctement. Là c'est dur à lire.

    Tu devrais éviter empty() (faux-ami). Généralement on initialise les variables en entrée en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Initialisation
    $ref_produit = $_POST['ref_produit'] ?? null;
    $quantite_entree = $_POST['quantite_entree'] ?? null;
    $login = $_POST['login'] ?? null;
    Si 1 des ces variables est null alors le formulaire n'a pas été soumis correctement.
    Ensuite il faut vérifier la valorisation des variables (vide, invalide, etc.).

    Assure-toi que $_SESSION est bien valorisée comme tu l'attends en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print_r($_SESSION);
    exit;
    header('Location: entree.php');
    Dans entree.php je ne vois pas d'utilisation de $_SESSION. Tu es censé en faire quoi ?
    Alors merci déjà de m'aider..

    J'ai écouté ton conseil et ai simplifier grandement le code. En faite je vais détaillé comment j'ai créé cette page :
    J'ai une page article.php et ajout_article.php qui me permet d'ajouter des produits dans ma bdd.
    Je me suis dit qu'en duplicant ces deux pages et en adaptant sa fonctionnerai mais non.

    Voila le code modifier entree.php :
    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
     
    <?php
    include 'entete.php';
     
          $bienvenue= $_SESSION["login"]; 
    ?>
     
     
     
    	<div class="home-content">
            <div class="overview-boxes">
    			<div class="box_form">
    				<form action="entree_article.php"  method="POST">
     
    <label for="ref_produit">id du produit</label>
    <input type="number" name="e_ref_produit" id="e_ref_produit" placeholder="Saisir le code barre de la tote">
     
    <label for="stock_actuel">Quantité entrée</label>
    <input type="number" name="quantite_entree" id="quantite_entree" placeholder="Saisir la quantité">
     
     
    <label for="e_login">Fait par</label>
    <input type="text" name="e_login" disabled id="e_login" value="<?php echo $bienvenue?>"  />
    <input type="submit" name="valider" value="valider" />
     
     <?php
    if (!empty($_SESSION ['message']['text'])) {
    ?>
    	<div class="alert <?= $_SESSION ['message']['type'] ?>">
    	<?= $_SESSION ['message']['text'] ?>
    	</div>
    <?php
    }
    ?>
    </form>
     
    			</div>
     
    		</div>
    	</div>
     
    <div id="wrapper">
     <form method="post" action="import_file.php" enctype="multipart/form-data">
      <input type="file" name="file"/>
      <input type="submit" name="submit_file" value="Submit"/>
     </form>
    </div>
      </section>  
     
    <?php
     
    include 'pied.php';
     
    ?>
    La variable $bienvenue me permet d'afficher en grisé le login de connexion et je veux qu'il soit transmis également dans la bdd lors de l'entree.
    quand je met ton code pour vérifier les variables : voici ce que j'ai affiché :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    C:\wamp64\www\1\vue\entree_article.php:5:
    array (size=3)
      'e_ref_produit' => string '12345' (length=5)
      'quantite_entree' => string '2333' (length=4)
      'valider' => string 'valider' (length=7)
     
    Array ( [login] => Demarech [autoriser] => oui [message] => Array ( [text] => Une information obligatoire non renseignée [type] => danger ) )
    Je vois que le login n'est pas dans l'array. Mais si je supprime le <?php echo $bienvenue?> et que j'enleve le " disabled" de l'input. Je rentre manuellement le login et la j'ai ce retour :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    C:\wamp64\www\1\vue\entree_article.php:5:
    array (size=4)
      'e_ref_produit' => string '12345' (length=5)
      'quantite_entree' => string '488' (length=3)
      'e_login' => string 'demarech' (length=8)
      'valider' => string 'valider' (length=7)
     
    Array ( [login] => Demarech [autoriser] => oui [message] => Array ( [text] => Une erreur s'est produite lors de l'ajout de l'article [type] => danger ) )
    Je joins également mon fichier entree_article.php
    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
    <?php
    include 'connexion.php';
     
     
    var_dump($_POST);
     
    if (
    	!empty($_POST['e_ref_produit'])
    	&& !empty($_POST['quantite_entree'])
    	&& !empty($_POST['e_login'])
     
     
    	) {
     
    	$sql = "INSERT INTO entree( e_ref_produit, quantite_entree,e_login) 
    	VALUES(?, ?, ?)";
    	$req = $pdo->prepare($sql);
     
    	$req->execute(array(
    	$_POST['e_ref_produit'],
    	$_POST['quantite_entree'],
    	$_POST['e_login']	
     
    	));
    	$sql = "UPDATE article SET stock_actuel=stock_actuel+? where id=?";
    	$req = $pdo->prepare($sql);
     
    	if ( $req->rowCount()!=0) {
    		$_SESSION['message']['text'] = "article ajouté avec succès";
    		$_SESSION['message']['type']= "success";
    	}else {
    		$_SESSION['message']['text'] = "Une erreur s'est produite lors de l'ajout de l'article";
    		$_SESSION['message']['type'] = "danger";
    		}
    	}else{
    		$_SESSION['message']['text'] = "Une information obligatoire non renseignée";
    		$_SESSION['message']['type'] = "danger";
    		}
     
    print_r($_SESSION);
    exit;
    header('Location: entree.php');
     
     
    ?>

  8. #8
    Membre actif
    Inscrit en
    Octobre 2006
    Messages
    14
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 14
    Par défaut
    Citation Envoyé par Séb. Voir le message
    Tu devrais indenter ton script correctement. Là c'est dur à lire.

    Tu devrais éviter empty() (faux-ami). Généralement on initialise les variables en entrée en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    // Initialisation
    $ref_produit = $_POST['ref_produit'] ?? null;
    $quantite_entree = $_POST['quantite_entree'] ?? null;
    $login = $_POST['login'] ?? null;
    Si 1 des ces variables est null alors le formulaire n'a pas été soumis correctement.
    Ensuite il faut vérifier la valorisation des variables (vide, invalide, etc.).

    Assure-toi que $_SESSION est bien valorisée comme tu l'attends en faisant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    print_r($_SESSION);
    exit;
    header('Location: entree.php');
    Dans entree.php je ne vois pas d'utilisation de $_SESSION. Tu es censé en faire quoi ?
    Alors j'ai trouvé le problème : en faite dans la table "entree" j'ai un champ date qui était censé se mettre seul à chaque enregistrement mais il n'était pas configuré correctement...

    Cependant à présent je me retrouve tous de même avec un problème sur la deuxième requête. En effet, cette requête ne se fait pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = "UPDATE article SET stock_actuel=stock_actuel+? where id=?";
    	$req = $pdo->prepare($sql);
    et du coup sur la ligne suivante quand je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    if ( $req->rowCount()!=0) {
    		$_SESSION['message']['text'] = "article ajouté avec succès";
    		$_SESSION['message']['type'] = "success";
    	}else {
    		$_SESSION['message']['text'] = "Une erreur s'est produite lors de l'ajout de l'article";
    		$_SESSION['message']['type'] = "danger";
    		}
    	}else{
    		$_SESSION['message']['text'] = "Une information obligatoire non renseignée";
    		$_SESSION['message']['type'] = "danger";
    		}
     
     
    header('Location: entree.php');
    Il me met : "Une erreur s'est produite lors de l'ajout de l'article"; du fait que la requête n'est pas bonne la condition if ( $req->rowCount()!=0) { n'est pas bonne. Avez vous une idée ?

  9. #9
    Membre Expert
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    721
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2006
    Messages : 721
    Par défaut
    C'est bien de faire un prepare, mais il faut faire execute ensuite.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] problème d'enregistrement dans bdd
    Par guismoman33 dans le forum PHP & Base de données
    Réponses: 19
    Dernier message: 12/03/2008, 14h43
  2. Réponses: 2
    Dernier message: 17/01/2007, 11h20
  3. [MySQL] problème formulaire ajouter entrées dans bdd
    Par _alex_ dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 10/12/2006, 20h08
  4. [SQL SERV 2K] Problème d'update enregistrement dans procédure
    Par Tankian dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 08/06/2006, 09h42
  5. problème récupération de données dans des fichiers .DAT
    Par indymontpellier dans le forum Bases de données
    Réponses: 4
    Dernier message: 13/04/2006, 07h54

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