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 :

Exécution partielle du script [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    sans emploi
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 14
    Points
    14
    Par défaut Exécution partielle du script
    Bonjour,

    Il y a 2 jours j'ai écrit une pages de code qui fonctionnait, mais dorénavant elle fonctionne partiellement sans générer d'erreur.
    Par exemple si dans la page précédente (qui renvoie sur la page du code ci-dessous via un POST, type=radio), je réponds "OUI", elle incrémente bien la valeur +1 dans la table sondage_pol dans la colonne nb_oui. Mais ensuite les valeurs $_POST['questpoID'].$_SESSION['identifiant'] et rep_oui=1 ne sont pas insérées dans la table historiquereponseidentifiant et les calculs de stats et la MAJ des colonnes nb_total_reponse,pourcentage_oui,pourcentage_non ne se fontt pas non plus dans la table sondage_pol.

    Pourtant, je suis bien renvoyé sur la page : Location: sondagepol3.php ..... sans aucun message d'erreur !
    Bref j'y comprends rien ! Pourriez vous m'aider ?

    ps: pour la réponse NON, le script est différent, car je ne l'ai pas mise à jour car le "oui" ne fonctionne pas, mais la table historiquereponseidentifiant n'est pas modifiée non plus alors que la redirection sur sondagepol3 se déroule bien.

    Merci.

    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
    <?php
    // On prolonge la session
    session_start();
     
    // On teste si la variable de session existe et contient une valeur
    if(empty($_SESSION['identifiant'])) 
    {
        // Si inexistante ou nulle, on redirige vers le formulaire de login
        header('Location: authentification.php');
        exit();
    }
    ?>
    <p>
    <?php
     
    if (preg_match("#^oui$#", $_POST['reponsesondage'])) 
    {
        try
    	{
    	  $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    	}
    	catch(Exception $e)
    	{
          die('Erreur : '.$e->getMessage());
    	}
    // On ajoute un oui dans le nombre de OUI dans la table sondage_pol
    	$req = $bdd->prepare('UPDATE sondage_pol SET nb_oui = (nb_oui+1) WHERE questpoID = :questpoID');
    	$req->execute(array('questpoID' => $_POST['questpoID']));
     
     
      	// On ajoute une donnée dans la table historiquereponseidentifiant pour indiquer que le menbre à répodu à la questionID
        $req = $bdd->prepare('INSERT INTO historiquereponseidentifiant (questionIDidentifiant,rep_oui) VALUES (?,?)');
    	$req->execute(array($_POST['questpoID'].$_SESSION['identifiant'],1));
     
     	// calcul de statistiques suite à l'incrémentation d'une reponse oUI +1 puis stockage des résultats dans la table sondage_pol
    	$sql = $bdd->query('SELECT (nb_oui+nb_non) AS c,(nb_oui/(nb_oui+nb_non)*100) AS d, (nb_non/(nb_oui+nb_non)*100) AS e FROM sondage_pol');
     
        while ($donnees = $req->fetch())
      	{}
      	$req->closeCursor();
     	$req = $bdd->prepare('UPDATE sondage_pol SET nb_total_reponse,pourcentage_oui,pourcentage_non');
    	$req->execute(array($c,$d,$e));
     
    // Redirection du visiteur vers la page sondagepol
    	header('Location: sondagepol3.php');
    }
     
    else
    {
    	try
    	{
    	  $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    	}
    	catch(Exception $e)
    	{
          die('Erreur : '.$e->getMessage());
    	}
     
    // On ajoute un non dans le nombre de NON dans la table sondage_pol
    	$req = $bdd->prepare('UPDATE sondage_pol SET nb_non = (nb_non+1) WHERE questpoID = :questpoID');
    	$req->execute(array('questpoID' => $_POST['questpoID']));
     
     // On ajoute une donnée dans la table historiquereponseidentifiant pour indiquer que le menbre à répodu à la questionID
        $req = $bdd->prepare('INSERT INTO historiquereponseidentifiant (questionIDidentifiant,rep_non) VALUES (?, ?)');
    	$req->execute(array($_POST['questpoID'].$_SESSION['identifiant'],1));
    // Redirection du visiteur vers la page sondagepol
    	header('Location: sondagepol3.php');
    }			
     
    ?>
    </p>

  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
    La première chose à faire est d'activer les erreurs PDO :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $bdd = new PDO('mysql:host=localhost;dbname=test;charset=utf8', 'root', '');
    $bdd ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    et retirer la redirection.

    Au passage, c'est très étrange d'utiliser une expression régulière pour analyser la valeur cochée dans un choix radio.
    La valeur du radio devrait être du type 0 = non 1 = oui
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    sans emploi
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    En activant les erreurs de la PDO, j'obtiens les erreurs suivantes :

    ! ) Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000]: General error: 1364 Field 'rep_non' doesn't have a default value' in C:\wamp\www\test\demopart\reponsesondage.php on line 34
    ( ! ) PDOException: SQLSTATE[HY000]: General error: 1364 Field 'rep_non' doesn't have a default value in C:\wamp\www\test\demopart\reponsesondage.php on line 34
    Je ne sais pas les interpréter d'autant plus que la ligne 34 correspond à l'insertion de la valeur 1 pour la rep_oui et ne concerne pas rep_non.

  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
    Comme dit l'erreur, la colonne "rep_non" est obligatoire puisqu'elle n'a pas de valeur par défaut.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    sans emploi
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : sans emploi

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Points : 14
    Points
    14
    Par défaut
    Merci sabotage ^^, j'ai pu résoudre mon pb.

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

Discussions similaires

  1. Exécution partielle d'un script
    Par diablerouge2000 dans le forum jQuery
    Réponses: 4
    Dernier message: 29/01/2014, 16h19
  2. Le temps d'exécution de vos scripts perl!!
    Par djibril dans le forum Langage
    Réponses: 5
    Dernier message: 17/06/2009, 10h42
  3. Réponses: 1
    Dernier message: 13/09/2006, 16h10
  4. [CSV] Temps d'exécution d'un script
    Par Sangdrax1604 dans le forum Langage
    Réponses: 2
    Dernier message: 10/04/2006, 18h49
  5. Réponses: 6
    Dernier message: 29/11/2005, 13h22

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