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 :

modifications dans base de données


Sujet :

PHP & Base de données

  1. #1
    Invité
    Invité(e)
    Par défaut modifications dans base de données
    Bonjour,

    Je souhaiterai modifier des données qui sont présentes dans une base de données, via php. Dans un premier temps, je dois donc sélectionner le nom de la personne dont je souhaite modifier.

    Donc dans un premier temps, je souhaiterai afficher le résultat où le nom serait "mariette" par exemple. ET ça ne va pas...
    Nom : Capture.JPG
Affichages : 166
Taille : 72,6 Ko

    J'ai droit au message d'erreur suivant:


    Warning: PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Nouveau dossier (2)\modification.php on line 68


    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
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Site</title>
    		<header>
    		 <?php include ("entete.php"); ?>
    		</header>
    <link rel="stylesheet" type="text/css" href="style.css">
        </head>
     
        <body>
      <nav>
       <?php include("menus.php"); ?>
    	</nav>
    <p>
    Sélectionnez le nom de la personne dont vous souhaitez modifier les données.
    </p>
    <center>
    <form>
    <input type="text" id="nom" name="nom" />
    <input type="submit"  value="ok" /></center>
    </form>
     
     
    <?php
     
    try
    {
    	// On se connecte à MySQL
    	$bdd = new PDO('mysql:host=localhost;dbname=fonctions;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
    	// En cas d'erreur, on affiche un message et on arrête tout
            die('Erreur : '.$e->getMessage());
    }
     
     
     
     
    		?>
           <center>
        <table border=1 width=50%>
     
            <tr>
              <th>
    Nom
    </th>	
       <th>
    Prénom
    </th>     <th>
    E-mail
    </th>   
     
    </tr>
    <tr>
     
    		<td width=12%>
     
    		<?php
     
     
     
     
    		$reponse = $bdd->prepare('SELECT * FROM abonnes WHERE
        nom=:nom'); 
    	$reponse->execute();
      ?>
    		</td>
    		<td width=3% align="center">
    		<?php $reponse = $bdd->query('SELECT nom FROM abonnes WHERE
        nom=nom'); 
       while ($donnees = $reponse->fetch())
    {
            echo $donnees['nom'];
    }
     
    ?>	
     
     
    		</td>
    		<td width=15%>
    		<?php $donnees = $bdd->query('SELECT nom FROM abonnes WHERE
        nom=:nom)');?>
    	<?php
      while ($donnees = $reponse->fetch())
    {
            echo $donnees['nom'];
    }
     
    ?>
    		</td>
     
     
     
     
            </tr>
    		</center>
     
     
     
       </table>
    </center>
     
     
     
     <?php
    $reponse->closeCursor(); 
     
    ?>
    </body> 
     
     
     
       <?php include("pied_de_page.php"); ?>
     
    </html>

    Une idée du soucis?


    D'avance merci!
    Dernière modification par sabotage ; 16/10/2015 à 19h01.

  2. #2
    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
    Hum... cette erreur se produit en général lorsqu'on construit une requête avec des paramètres et qu'on oublie de les renseigner à l'exécution. Sauf que je ne vois aucune requête avec paramètre dans ce code.
    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]

  3. #3
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Bonjour,

    est-ce vraiment le code de modification.php qui est présenté ? La ligne 68 est "</th>", je doute qu'elle puisse entraîner une erreur PHP.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Pardon, je me suis trompé. J'avais essayé de résoudre le problème sur une autre page et je me suis trompé en postant ce sujet. J'ai modifié.


    voici le code défectueux:

    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
    <!DOCTYPE html>
    <html>
        <head>
            <meta charset="utf-8" />
            <title>Site</title>
    		<header>
    		 <?php include ("entete.php"); ?>
    		</header>
    <link rel="stylesheet" type="text/css" href="style.css">
        </head>
     
        <body>
      <nav>
       <?php include("menus.php"); ?>
    	</nav>
    <p>
    Sélectionnez le nom de la personne dont vous souhaitez modifier les données.
    </p>
    <center>
    <form>
    <input type="text" id="nom" name="nom" />
    <input type="submit"  value="ok" /></center>
    </form>
     
     
    <?php
     
    try
    {
    	// On se connecte à MySQL
    	$bdd = new PDO('mysql:host=localhost;dbname=fonctions;charset=utf8', 'root', '');
    }
    catch(Exception $e)
    {
    	// En cas d'erreur, on affiche un message et on arrête tout
            die('Erreur : '.$e->getMessage());
    }
     
     
     
     
    		?>
           <center>
        <table border=1 width=50%>
     
            <tr>
              <th>
    Nom
    </th>	
       <th>
    Prénom
    </th>     <th>
    E-mail
    </th>   
     
    </tr>
    <tr>
     
    		<td width=12%>
     
    		<?php
     
     
     
     
    		$reponse = $bdd->prepare('SELECT * FROM abonnes WHERE
        nom=:nom;'); 
    	$donnees->execute();
     
      ?>
    		</td>
    		<td width=3% align="center">
    		<?php $reponse = $bdd->query('SELECT nom FROM abonnes WHERE
        nom=nom'); 
       while ($donnees = $reponse->fetch())
    {
            echo $donnees['nom'];
    }
     
    ?>	
     
     
    		</td>
    		<td width=15%>
    		<?php $donnees = $bdd->query('SELECT nom FROM abonnes WHERE
        nom=:nom)');?>
    	<?php
      while ($donnees = $reponse->fetch())
    {
            echo $donnees['nom'];
    }
     
    ?>
    		</td>
     
     
     
     
            </tr>
    		</center>
     
     
     
       </table>
    </center>
     
     
     
     <?php
    $reponse->closeCursor(); 
     
    ?>
    </body> 
     
     
     
       <?php include("pied_de_page.php"); ?>
     
    </html>
    Ce serait donc un problème ici :
    Notice: Undefined variable: donnees in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Nouveau dossier (2)\modification.php on line 68

    Fatal error: Call to a member function execute() on a non-object in C:\Program Files (x86)\EasyPHP-DevServer-14.1VC11\data\localweb\projects\Nouveau dossier (2)\modification.php on line 68
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
     
     
     
    		$reponse = $bdd->prepare('SELECT * FROM abonnes WHERE
        nom=:nom;'); 
    	$donnees->execute();
      ?>
    Le problème viendrait du fait que je ne renseigne pas les paramètres lors de l'exécution?

    Si je prends pour exemple ceci qui provient de php.net
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <?php
     
    $db = new SQLite3;
    $statement = $db->prepare('SELECT * FROM table WHERE id = :id;');
    $statement->bindValue(':id', $id);
     
    $result = $statement->execute();
     
    ?>
    et que je réctifie en

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $reponse = $bdd->prepare('SELECT * FROM abonnes WHERE
        nom=:nom;'); 
    	$reponse->bindValue(':nom', $nom);
    	$donnees->execute();
    ça ne marche pas non plus

  5. #5
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Je ne vois rien dans le code qui laisse penser que $nom a une valeur. Pouvez-vous vérifier, en l'affichant par exemple ?
    Pour plus d'explications, il y a un très bon tutoriel sur dvp.

  6. #6
    Invité
    Invité(e)
    Par défaut
    effectivement, si je fais un echo $nom, ça me dit que $nom n'existe pas. Pourtant, dans le html, il y a <input type="text" id="nom" name="nom" />

  7. #7
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Regardez le tutoriel, il vous manque les bases. Une balise HTML n'affecte pas automatiquement une valeur à une variable PHP. Il faut valider le formulaire et récupérer la valeur en PHP.

  8. #8
    Invité
    Invité(e)
    Par défaut
    ah donc je dois obligatoirement faire deux pages : une en html et l'autre en php?

  9. #9
    Membre éprouvé
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2003
    Messages
    1 309
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2003
    Messages : 1 309
    Par défaut
    Pas obligatoirement, prenez le temps de suivre le tutoriel il est très bien fait.

    bon weekend.

  10. #10
    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
    Par défaut
    Si 'nom' vient d'un formulaire POST :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse->bindValue(':nom', $_POST['nom']);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. erreur récupération des données depuis base de données dans une liste
    Par amintoraa dans le forum Développement Web en Java
    Réponses: 3
    Dernier message: 25/04/2014, 23h41
  2. [MySQL] inserer donnée dans base de donnée
    Par groskanel dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 19/06/2009, 11h57
  3. Impossible d'ajouter données dans base de données
    Par spartaxhit dans le forum Requêtes
    Réponses: 1
    Dernier message: 14/01/2008, 02h58
  4. methodologie pour Supprimer données dans base de données
    Par elkhy dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 26/04/2006, 18h30
  5. insertion de données dans Base de données Oracle 9
    Par hottnikks_79 dans le forum SQL
    Réponses: 2
    Dernier message: 16/03/2006, 00h07

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