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 :

Notice: Undefined index


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Invité
    Invité(e)
    Par défaut Notice: Undefined index
    Voici mon code

    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
    <?php
       require_once('includes/bdd_connect.php');
     
       $response=$bdd->query('SELECT * FROM comptebancaire');
       $saisie=$response->fetchAll();
       $response->closeCursor();
     
       if(isset($_POST['dateoperation'], $_POST['operation'], $_POST['debit'], $_POST['credit'])
        AND !empty($_POST['dateoperation'])
        AND !empty($_POST['operation'])
        AND !empty($_POST['debit'])
        AND !empty($_POST['credit'])
    	){
       	if(!preg_match('#^[a-zA-ZáàâäãåçéèêëíìîïñóòôöõúùûüýÿæœÁÀÂÄÃÅÇÉÈÊËÍÌÎÏÑÓÒÔÖÕÚÙÛÜÝŸÆŒ \-\']{2,25}$#i', $_POST['operation'])){
            $errors[] = "Opération incorrecte";
        }
        if(!preg_match('#^[0-9]{1,20}([.,][0-9]{1,2})?$#', $_POST['debit'],$_POST['credit'])){
            $errors[] = "Montant incorrect";
        }
    }
     
    	if(empty($saisie)){
    		$response =$bdd->prepare("INSERT INTO comptebancaire(dateoperation, operation, debit, credit) VALUES(?,?,?,?)");
    		$response->execute(array($_POST['dateoperation'],$_POST['operation'],$_POST['debit'],$_POST['credit']));
     
    	if($response->rowCount()>0){//Vérifie si l'opération a bien été ajouté dans la BDD
    	    $successMsg = 'L\'opération a bien été ajoutée !';
    	}else{
    	$errorMsg[]='Suite à un problème dans la base de données, l\'opération n\'a pas pu être ajoutée !';
    	     }
    	}
    ?>
     
    <!DOCTYPE html>
    <html lang="fr">
     
    <head>
        <meta charset="utf-8">
        <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1">
        <link rel="stylesheet" href="css/bootstrap.css">
        <link rel="stylesheet" href="css/style.css">
        <link rel="stylesheet" href="css/carousel.css">
        <title>Compte bancaire</title>
        <script src="js/jquery.js"></script>
        <script src="js/bootstrap.min.js"></script>
    </head>
     
    <body>
    	<h1 style="font-size:25px;text-align:center;color:green;">Compte bancaire</h1>
        <table>
        	<tr>
        		<th>Date</th>
        		<th>Opérations</th>
        		<th>Débit</th>
        		<th>Crédit</th>
        		<th>Solde</th>
        	</tr>
        	<?php 
    if(empty($saisie)){
        echo'<span style="font-size:30px;color:red;"><span>';
    } else{
        foreach($saisie as $data){
            echo'<tr><td>'.htmlspecialchars($data['dateoperation']).'</td><td>'.htmlspecialchars($data['operation']).'</td><td>'.htmlspecialchars($data['debit']).'</td><td>'.htmlspecialchars($data['credit']).'</td></tr>'.'</li>';
        }
    }
        ?>
        	<tr>
    	<form action="index.php" method="POST">
    		<input type="date" name="dateoperation" placeholder="" required>
    		<input type="text" name="operation" placeholder="" required>
    		<input type="text" name="debit" placeholder="" required>
    		<input type="text" name="credit" placeholder="" required>
    		<input type="submit" name="">
    	</form>
        	</tr>
        </table>
     
        <script type="application/javascript" src="js/jquery-3.1.1.js"></script>
        <script src="js/script.js"></script>
    </body>
     
    </html>
    Voici les erreurs qui apparaissent :
    Notice: Undefined index: dateoperation in C:\xampp\htdocs\projet\compte\index.php on line 24

    Notice: Undefined index: operation in C:\xampp\htdocs\projet\compte\index.php on line 24

    Notice: Undefined index: debit in C:\xampp\htdocs\projet\compte\index.php on line 24

    Notice: Undefined index: credit in C:\xampp\htdocs\projet\compte\index.php on line 24

    Fatal error: Uncaught PDOException: SQLSTATE[23000]: Integrity constraint violation: 1048 Column 'dateoperation' cannot be null in C:\xampp\htdocs\projet\compte\index.php:24 Stack trace: #0 C:\xampp\htdocs\projet\compte\index.php(24): PDOStatement->execute(Array) #1 {main} thrown in C:\xampp\htdocs\projet\compte\index.php on line 24
    Dernière modification par Invité ; 14/05/2018 à 14h23.

  2. #2
    Membre chevronné Avatar de pasdechances
    Homme Profil pro
    Alternant, Ingénieur en systèmes Informatiques et Industriels
    Inscrit en
    Septembre 2015
    Messages
    218
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Alternant, Ingénieur en systèmes Informatiques et Industriels
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Septembre 2015
    Messages : 218
    Par défaut
    il te manque une ou plusieurs valeur dans ton post, du coup quand tu l'insert en base des contraintes (cannot be null) sont violées.

    tu devrai préparer tes requêtes ou traiter les valeurs de ton post avant de les inserts en bdd.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Ca ne m'aide pas à voir où se trouve mes erreurs.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Il faut d'abord vérifier ce que contient $_POST :
    2- AND et && ont des fonctionnements différents

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
       if( !empty($_POST['dateoperation'])
        && !empty($_POST['operation'])
        && !empty($_POST['debit'])
        && !empty($_POST['credit'])
    	){
    3- Cette condition est fermée trop tôt ! (ligne 20)

    Améliore l'indentation : tu verras mieux (ouverture / fermeture des accolades)

    4-?? d'où provient $saisie ?


    Bref : tu as essentiellement un problème de LOGIQUE.
    Dernière modification par Invité ; 09/05/2018 à 08h08.

  5. #5
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Au passage, 2 informations utiles sur empty :
    empty inclut la vérification de l'existence de la variable. Autrement dit, si tu as une condition !empty($_POST['champ']) il n'est pas nécessaire de faire la condition isset($_POST['champ']) avant.

    empty vérifie qu'un champ n'est pas vide, pour une certaine définition de vide :
    Ce qui suit est considéré comme étant vide :

    "" (une chaîne vide)
    0 (0 en tant qu'entier)
    0.0 (0 en tant que nombre à virgule flottante)
    "0" (0 en tant que chaîne de caractères)
    NULL
    FALSE
    array() (un tableau vide)
    $var; (une variable déclarée, mais sans valeur)
    Si 0 est une valeur valide pour un de tes champs, il ne faut pas utiliser empty pour la vérification.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/04/2007, 10h01
  2. Notice: Undefined index method post
    Par vanou dans le forum Langage
    Réponses: 8
    Dernier message: 07/03/2007, 09h33
  3. Pb erreur Notice: Undefined index: pseudo
    Par PAINCO dans le forum Langage
    Réponses: 15
    Dernier message: 19/02/2007, 18h20
  4. Notice: Undefined index
    Par abusatif dans le forum Langage
    Réponses: 4
    Dernier message: 08/02/2007, 09h03
  5. Réponses: 9
    Dernier message: 01/05/2006, 00h02

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