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 :

(erreur de syntaxe?) pour UPDATER une table


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    -
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Par défaut (erreur de syntaxe?) pour UPDATER une table
    Bonjour,

    J'espère être au bonne endroit pour poser ma question! Il y a beaucoup trop de sections et sous-sections Je suis nouveau ici et débute en programmation web.

    Je fais un site où j'aimerais avoir une page administrative pour modifier le contenu de mes pages. Elles sont stockées dans une base de donnée MariaDB (mySQL). on dit un site dynamique je crois? J'arrive déjà afficher le contenu de ma table grâce à ce code dans ma page d'accueil:

    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
    <div id="corps">
     
    	<?php
    		$reponse = $bdd->prepare('SELECT * FROM pages WHERE adresse = ?');
    		$reponse->execute(array($page));
     
    		$donnees = $reponse->fetch();
    	?>
     
    	<h1><?php echo htmlspecialchars($donnees['titre']); ?></h1>
     
    	<p><?php echo htmlspecialchars($donnees['contenu']); ?></p>
     
    	<?php
    		$reponse->CloseCursor();
    	?>
     
    </div>
    J'ai fait une page pour modifier le contenu de ma table grâce à un formulaire:
    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
    <div id="corps">
     
    	<?php
    		$reponse = $bdd->query('SELECT * FROM pages WHERE adresse = \'accueil.php\'');
    		$donnees = $reponse->fetch();	
     
    		$titre = $donnees['titre'];
    		$contenu = $donnees['contenu'];
     
    		$reponse->CloseCursor();
    	?>
     
    	<form action="modifierpage_db.php" method="post">
     
    		<p><label for="titre">Titre: </label><input type="text" name="titre" id="titre" value="<?php echo $titre; ?>" /></p>
     
    		<p><label for="contenu">Contenu: </label><textarea name="contenu" id="contenu" rows="10" cols="50" ><?php echo $contenu; ?></textarea></p>
     
    		<p><input type="submit" value="Envoyer"></p>
    	</form>
     
    </div>
    Et voici modifierpage_db.php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?php
     
    	$reponse = $bdd->prepare('UPDATE pages SET titre = :nvtitre, contenu = :nvcontenu WHERE adresse = \'accueil.php\'');
    	$reponse->execute(array(
    		'nvtitre' => $_POST['titre'], 
    		'nvcontenu' => $_POST['contenu']
    	));
    	$reponse->closeCursor();
     
    	echo 'La page à bien été modifiée';
    	header('Location: index.php?page=modifierpage.php');
     
    ?>
    Malheureusement, il ne modifie rien et je commence à sécher sur mon problème. J'ai mis des marqueurs et j'en ai conclu que ça plantais sur les premières lignes. Quelqu'un à une idée de ce que je fais faux?

    Merci pour vos futurs réponses
    Salutation

  2. #2
    Modérateur

    Avatar de MaitrePylos
    Homme Profil pro
    DBA
    Inscrit en
    Juin 2005
    Messages
    5 505
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : Belgique

    Informations professionnelles :
    Activité : DBA
    Secteur : Service public

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 505
    Par défaut
    Bonjour,
    Je ne pense pas que cela changera grand chose, mais essayer ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    $reponse = $bdd->prepare("UPDATE pages SET titre = ?, contenu = ? WHERE adresse = 'accueil.php' ");
    	$reponse->execute([$_POST['titre'],$_POST['contenu'] ] );
    Maintenant avez-vous un message d'erreur ?

  3. #3
    Membre habitué
    Homme Profil pro
    -
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Par défaut
    Bonjour,

    Merci pour la réponse. Je viens d'essayer de copier le code et non il ne me génère pas d'erreur. Je me demande si je ne gère pas mal les erreur. J'ai crée un nouveau poste car je me demande la meilleurs solution pour me connecter à une base de donnée: http://www.developpez.net/forums/d15...nee-plusieurs/

    Car j'ai fait comme ça mon fichier index.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
    <body>
     
    	<?php
    		try{
    			include("connectionmysql.php");			
     
    			include("header.php");
     
    			include("menu.php");
     
    			$page = $_GET['page'];
    			if (!empty($page)) {
    				include($page);
    			}
    			else {
    				$page = 'accueil.php';
    				include('accueil.php');
    			}
     
    			include("footer.php");
     
    		}
    		catch(Exception $e){
    			die('Erreur : ' . $e->getMessage());		
    		}
    	?>
     
    </body>
    Merci et salutation

  4. #4
    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
    La source du problème :il manque des ":" devant les noms des paramètres dans l'exécution de la requête.
    Code x : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $reponse = $bdd->prepare('UPDATE pages SET titre = :nvtitre, contenu = :nvcontenu WHERE adresse = \'accueil.php\'');
    $reponse->execute(array(
    	':nvtitre' => $_POST['titre'], 
    	':nvcontenu' => $_POST['contenu']
    ));
    Comme le code de MaitrePylos utilise des marqueurs à la place des paramètres nommés, ça supprime le problème
    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]

  5. #5
    Membre habitué
    Homme Profil pro
    -
    Inscrit en
    Mai 2016
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Mai 2016
    Messages : 13
    Par défaut
    Je me suis inspiré d'un tuto pour le faire et il n'y a pas les :, pourquoi?

    En rajoutant les :, j'ai toujours le même problème, une page blanche. Pourquoi il me crache pas d'erreur? Y-a-t-il une solution pour avoir des infromations d'erreur?

    Merci

  6. #6
    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
    Tu peux activer les exceptions à la connexion :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    PDO - Gestion des erreurs

    Quant au tuto de nos amis d'OC, ben... a priori, il y a une coquille dedans La documentation officielle est assez claire :
    Pour une requête préparée utilisant des marqueurs nommés, ce sera le nom du paramètre sous la forme :name
    Manuel - PDOStatement::execute
    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]

Discussions similaires

  1. Problème pour récupérer une table
    Par Flow_75 dans le forum Débuter
    Réponses: 4
    Dernier message: 01/02/2013, 16h08
  2. Réponses: 2
    Dernier message: 09/08/2010, 18h30
  3. problème pour separer une table avec une procedure
    Par mathieu38 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/04/2009, 09h25
  4. problème pour créer une table
    Par zyriuse dans le forum Installation
    Réponses: 11
    Dernier message: 16/11/2007, 11h26
  5. problème pour updater une BD
    Par yoda_style dans le forum ASP
    Réponses: 6
    Dernier message: 17/03/2005, 10h56

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