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 :

Multiples problèmes sur un formulaire


Sujet :

Langage PHP

  1. #21
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Que donne un var_dump($donnees); ? Comme je l'ai la requête échoue d'une manière ou d'une autre, peut être l'utilisateur avec l'id $id n'existe pas.
    Le bienfait n'est jamais perdu

  2. #22
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    En fait les id correspondent aux formulaire qui me renvoie tout ce qu'il y a dans la bdd, donc ceux-ci existent. J'ai une colonne avec à chaque fois un lien pour modifier l'exo. Quand je clique sur ce dernier il m'affiche un formulaire avec les champs remplis avec les données de l'id de l'exo. Et les erreurs retournées viennent de ces dernières, exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    	<tr>
    	<td>Auteur de l'exercice</td>
    	<td>
    	<input type="text" name="auteur" placeholder="" value="<?php echo $donnees->auteur; ?>"/> 
    	</td>
    	</tr>

    J'avoue que là je suis dubitatif.
    Par contre je ne vois pas ou mettre le var_dump($donnees); ( et ne comprend pas vraiment ce dernier )

  3. #23
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Le var_dump($donnees); va nous donner le contenu de la variable, il est à mettre juste après $donnees = $res->fetch(PDO::FETCH_OBJ);
    Le bienfait n'est jamais perdu

  4. #24
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Ok, il me donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    object(stdClass)[5]
      public 'id' => string '4' (length=1)
      public 'titre' => string 'oioiopl' (length=7)
      public 'auteur' => string 'azaz' (length=4)
      public 'date' => string '2017-09-03' (length=10)

  5. #25
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Donc la requête n'échoue pas comme je le suspectais.
    Je suppose que l'erreur survient quand vous validez le formulaire ?
    Le bienfait n'est jamais perdu

  6. #26
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Oui, c'est exact

  7. #27
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    La partie PHP peut être réécrite comme ça

    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
     
    include_once 'Bmanager.php';
     
    $rep =  new Connection('localhost', 'exo', 'utf8', 'root', '');
    $answer = $rep->dbconnect();
    $user = new Bmanager($answer);
     
    $id = isset($_GET['id']) ? intval($_GET['id']) : 0;
    $res = $user->getUserById($id);
    $donnees = $res->fetch(PDO::FETCH_OBJ);
     
    if (isset($_POST['modifier'])) {
        $titre = $_POST['titre'];
        $auteur = $_POST['auteur'];
        $date = $_POST['date'];
        $res = $user->update($id, $titre, $auteur, $date);
        if ($res) {
            header('Location: formulaire03.php');
        }
     
    }
    Maintenant, modifiez le formulaire <form action="modifexo.php?id=<?php echo $id ?>" method="post">.

    On peut avant d'afficher le formulaire, tester $donnees , pour éviter d'éventuelles erreurs si l'ID n'existe pas
    Le bienfait n'est jamais perdu

  8. #28
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Ce que j'aimerais avoir votre niveau en php, ça fonctionne à merveille.
    Un énorme merci à vous.
    Maintenant je vais aller faire un petit tour au lit avant de m'attaquer à la partie suppression de l'exo qui à mon avis est faite sur le même canevas.
    Encore merci et bonne nuit à vous.

  9. #29
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Pour le DELETE n'oubliez pas le WHERE sinon mauvaise surprise.. la classe BManager semble s'occuper des exercices et on a des addUser (qui doit être réécrite) , c'est un peu confus. Avec la variable $user , on a aussi l'impression qu'on gère des utilisateurs.

    EDIT:
    - Pourquoi travailler en ISO-88959, une contrainte ou c'est voulu ?
    - Pensez à htmlspecialchars pour l'affichage de vos données, j'insiste qu'à l'affichage ( appel de echo )
    Bonne nuit à vous aussi et à bientôt pour la suite.
    Le bienfait n'est jamais perdu

  10. #30
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 335
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 335
    Points : 5 704
    Points
    5 704
    Billets dans le blog
    1
    Par défaut
    Bonjour, juste une question après la lecture de cette discussion : à quoi va servir de convertir les données avec htmlspecialchars ? (la lecture de la doc (http://php.net/manual/fr/function.htmlspecialchars.php) ne me suffit pas pour comprendre...)
    Il vaut mieux viser la perfection et la manquer que viser l'imperfection et l'atteindre. - Bertrand Russell

    Si la discussion est résolue, merci de cliquer sur le bouton

  11. #31
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Salut,
    vous pouvez faire un test simple,
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $str = '<style>body {background-color: red}</style>';
    echo $str;
    Qu'est-ce qui se passe quand j'exécute ce bout de code, le fond de ma page devient tout rouge. Imaginons que ça soit l'oeuvre d'un utilisateur et que j'ai stocké ce contenu dans ma base de données (le stockage en lui même n'est pas problématique on ne va pas appliquer htmlspecialchars avant mais quand on veut l'afficher), à chaque fois qu'un utilisateur visite ma page , il aura droit à ce fond rouge.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <?php
    $str = '<style>body {background-color: red}</style>';
    echo htmlspecialchars($str);
    Rien du tout, on a juste le même contenu de $str dans le navigateur. Plus d'infos sur https://fr.wikipedia.org/wiki/Cross-site_scripting , XSS stocké ou permanent.
    Suivant dans le contexte dans lequel on est, il faut savoir jouer avec les options ENT_QUOTE etc... et l'encodage pour avoir un résultat correct.
    Le bienfait n'est jamais perdu

  12. #32
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Hop, me revoilà

    J'ai un peu changé pour la suppression d'un exo avec un petit formulaire demandant une confirmation ou non.
    Ici mon petit souci c'est que les redirections de mes headers ne se font pas, c'est étrange.

    En ce qui concerne l' ISO-88959 c'est pour la gestion des accents qui ne se fait pas en UTF-8, je ne sais pas si c'est le bon choix mais ça fonctionne, enfin pour la partie html. Par contre les entrées d'exos avec accent dans la base produisent des erreurs quand je soumet le formulaire.

    Bref, voilà le code qui me pose des soucis de redirection :

    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
     
     
    <?php 
    include_once 'Bmanager.php';
     
    $rep=  new Connection('localhost', 'exo', 'utf8', 'root', '');
    $answer=$rep->dbconnect();
    $user=new Bmanager($answer);
     
    $id = isset($_GET['id']) ? $_GET['id'] : 0;
     
    $res=$user->getUserById($id);
    $donnees = $res->fetch(PDO::FETCH_OBJ);
     
     
     
    if(isset($_POST['oui'])){
    	$titre = $_POST['titre'];
    //	$id = $_POST['titre'];
    	$res=$user->delete($id);
    	if ($res) {
    		echo"<div class='couleur'>Suppression enregistrée avec succès </div>";
    		header('Location:formulaire03.php');
     
    if(isset($_POST['non'])){
    	header('Location:formulaire03.php');
    }}
    }
     
    ?>
     
     
    <!doctype>
    <html lang="fr">
        <head>
    	<link href="contact.css" type="text/css" rel="stylesheet"/>
    	<meta charset=" ISO-8859-1" />
    <head>
     
    <title>Confirmation</title>
    </head>
    <body>
     
    <!--  	<form action="suppexo2.php" method="post"> -->
     <form action="suppexo2.php?id=<?php echo $id ?>" method="post">
     
    	<fieldset>
    	<legend>
    		<p>Confirmation de suppression</p>
    		</legend>
     
    		<table>
     
     
    	<tr>		
    	<td>Titre de l'exercice</td>
    	<td>
    	<input type="text" name="titre" placeholder="" value="<?php echo $donnees->titre; ?> " />	
    	</td>
    	</tr>
     
     
    	<tr><td>	<input type="submit"   value="Oui" name="oui"/></td>
    	<td>	<input type="submit"   value="Non" name="non"/></td></tr>
    	</table>
     
    	</fieldset>
    	</form>
    	</body>
    	</html>
    Autre chose, j'aimerais qu'après l'envoi l'echo de validation se retrouve sur la page du premier formulaire. Ici, il n'y a pas de redirection mais l'exo est bien supprimé et l'echo le confirmant s'affiche sur cette page.

    Dernière chose, je n'ai eut aucune réponse sur le forum css concernant la mose en forme du php

  13. #33
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    UTF-8 gère bien les accents, ça dépend de comment vous avez géré la chose. Quel genre d'erreurs avec les entrées des accents ?
    Pour la mise en forme, ça n'a rien à avoir avec PHP je ne sais pas quelle question vous avez posé.
    A quoi ressemble le contenu de delete ?
    On ne fait pas un echo avant un header, pas trop compris l'avant-dernier paragraphe.

    PS: $id = isset($_GET['id']) ? $_GET['id'] : 0; par $id = isset($_GET['id']) ? intval($_GET['id']) : 0;
    Le bienfait n'est jamais perdu

  14. #34
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Mon souci c'est surtout que la redirection vers formulaire03.php ne se fait pas. Par contre les exos sont bien supprimés.

    Mon delete est très simple et pour l'instant il fonctionne bien

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    	public function delete($id){
     
    				$st=$this->db->prepare("DELETE FROM exercice  WHERE id = ?");
    				$st->execute(array($id));
    				echo "Exercice  supprimé avec  Succés";
    			}
     
     
    		}

  15. #35
    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
    On ne fait pas un echo avant un header
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  16. #36
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    J'ai fait le changement mais toujours pas de redirection vers mon formulaire, je vais continuer à fouiller.

  17. #37
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Il faut retirer echo du delete, et mettre return $st->rowCount();
    Le bienfait n'est jamais perdu

  18. #38
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    J'avoue que je ne comprends pas trop la manip de devoir compter pour que la redirection se fasse mais ça fonctionne très bien, grand merci

    A contrario le header du "non" ne redirige toujours pas vers le même formulaire que le bouton "oui" qui fonctionne à présent

    Dernière chose, comment faire apparaître mes echos sur mon premier formulaire ?
    Je m'explique :
    J'ai un premier formulaire qui demande les titres auteurs et dates des exercices. A chaque exercice entré je n'ai pas l'echo de confirmation.
    En ce qui concerne les formulaires d'ajout ou de suppression, je voudrais que les echos apparraissent sur le premier formulaire, celui où l'on entre les données.
    Je ne sais pas si mon explication est vraiment claire
    En gros je voudrais notifier à chaque fois que l'exercice est bien enregistré, supprimé ou modifié.

  19. #39
    Membre éprouvé Avatar de Willy_k
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    540
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Côte d'Ivoire

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 540
    Points : 1 067
    Points
    1 067
    Par défaut
    Pour comprendre, faut lire la doc sinon effectivement vous risquez d'être perdu. C'est bien de copier les codes mais les comprendre c'est encore mieux.
    Pour les messages, il y a plusieurs possibilités, faites une recherche sur les messages flash avec les sessions en PHP vous aurez une piste.
    Le bienfait n'est jamais perdu

  20. #40
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2016
    Messages
    51
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Dordogne (Aquitaine)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Mai 2016
    Messages : 51
    Points : 15
    Points
    15
    Par défaut
    Ben, je fais pas mal de recherches sur le web et j'avoue que je vais lire la doc mais que je ne la comprends pas forcèment.
    Merci pour la piste sur les messages flash avec les sessions.
    En gros il faut que je trouve le moyen de mettre des
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    $_SESSION['message']='message;
    // puis
    echo $_Session['message'];
    pour que mes echos aboutissent. J'espère ne pas dire une grosse bêtise, si oui, veuillez m'en excuser.

Discussions similaires

  1. Probléme sur un formulaire
    Par grizlie dans le forum Modélisation
    Réponses: 2
    Dernier message: 19/05/2007, 08h59
  2. Probléme sur un formulaire
    Par jojo57 dans le forum Access
    Réponses: 6
    Dernier message: 31/05/2006, 17h55
  3. Problème sur un formulaire
    Par flo64 dans le forum Access
    Réponses: 5
    Dernier message: 31/05/2006, 14h35
  4. [DatasheetBackColor ] problème sur un formulaire
    Par herendel dans le forum Access
    Réponses: 3
    Dernier message: 23/05/2006, 11h31
  5. problème sur un formulaire de modification
    Par puppusse79 dans le forum Access
    Réponses: 13
    Dernier message: 14/04/2006, 16h48

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