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 :

Ajout de text dans une bd


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut Ajout de text dans une bd
    Bonjour, bonsoir

    Je suis en ce moment méme en train de coder un forum, cependant je me retrouve face a un probléme.
    Voilà ne codant pas pour moi méme je me doit de faire une option pour ajouter des catégories de façon simple, cependant mon code n'enregistre ni le titre ni le descriptif de la catégorie dans la base de donné.

    Voici le code php :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $categorie = $_POST['categorie'];
    $description = $_POST['Description'];
    $req = $bdd->prepare('INSERT INTO catégorie(titre, description) VALUES(:categorie, :description)');
    $req->execute(array('titre' => $categorie, 'description' => $description));
    Ceci dis, chose étonnante, j'ai utilisé a peut prés le méme code pour l'inscription des membres a savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $req = $bdd->prepare('INSERT INTO membre(pseudo, pass, email, age) VALUES(:pseudo, :pass, :email, :age)');
    $req->execute(array(
        'pseudo' => $pseudo,
        'pass' => $pass_hache,
        'email' => $email,
        'age' => $age));
    Et cela fonctionne a merveille .

    C'est pourquoi je vous demande de l'aide en vous remerciant d'avance pour vos réponse.

  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
    1 - active les exceptions PDO quand tu developpes
    2 - ne mets pas d'accents à tes élements PHP ou Mysql (variables, nom de table, de colonnes etc.)
    3 - Met de préférence les : dans le tableau de paramètre aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $req->execute(array(':titre' => $categorie, ':description' => $description));
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  3. #3
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Merci pour cette réponse si rapide.

    J'ai réglé les problémes 2 et 3, ça ne fonctionne pas.
    Quand tu dis d'activer les extension PDO tu parle de faire un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(!empty($_POST['Valider'])){
    	try{
    		$bdd = new PDO("mysql:host=localhost;dbname=forum;charset=utf8", "root", "");
    	}
    	catch(Exception $e){
    		die("Erreur : ".$e->getMessage());
    	}
    par exemple ?

    Si oui c'est déjà fait au dessus, si non je ne suis pas contre un lien vers une explication si tu as.

  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
    http://php.net/manual/fr/pdo.error-handling.php
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Je veut bien que l'erreur vienne de là mais dans ce cas comment ce fait il que l'inscription fonctionne ?

    En tout cas merci encore pour tes réponse.

  6. #6
    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
    Activer les exceptions sert à voir les erreurs.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  7. #7
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Et bien il n'y a aucun changement, ceci dit depuis quelques jours, j'ai bien ce message d'erreur qui s'affiche :

    Fatal error: Call to a member function fetch() on boolean in /opt/lampp/htdocs/site/forum.php on line 24
    Cependant je ne pensais pas jusqu'a présent que c'était lié a mon probléme et je pensais réglé ça plus tard.

    En tout cas voici ma ligne 24 de mon forum.php :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while ($donnees = $reponse->fetch()){
    	echo '<div class="blmessage">
    	<h3>'. $donnees['categorie'] .'<h3>
    	<h10>'.$donnees['description'].'<h10>
    	</div>';
    }
    Au final peut étre que le probléme vient de là.

  8. #8
    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
    Tu peux nous montrer le code entier ?
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    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
     
    <html>
    <head>
        <meta charset="utf-8"/>
        <link href="css/style.css"/>
        <meta name="Auteur" content="..."/>
        <title>Onirique forum</title>
        <link rel="stylesheet" media="screen" href="css/style.css"/>
    </head>
     
    <body>
    	<?php
    	include('php/base.php');
    	include('php/nouveau_sujet.php');
     
    		try
    		{
    		$bdd = new PDO("mysql:host=localhost;dbname=forum;charset=utf8", "root", "");
    		}
    		catch(Exception $e)
    		{
    		die("Erreur : ".$e->getMessage());
    		}
    	$reponse = $bdd->query('SELECT categorie AND description FROM forum');
    	while ($donnees = $reponse->fetch())
    	{
    		echo '<div class="blmessage">
    		<h3>'. $donnees['categorie'] .'<h3>
    		<h10>'.$donnees['description'].'<h10>
    		</div>
    		';
    	}
    	?>
     
    <div class = "blmessage">
    	<div class = "prfmessage">
    	</div>
    	<div class = "message">
    	</div>
    </div>
     
    </body>
    </html>
    Voilà, enfin si c'est bien celui de forum.php que tu voulais.

    La partie aprés le code php n'est pas encore utile.

  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
    Points : 44 155
    Points
    44 155
    Par défaut
    C'est , pas AND
    Tu vois ce genre de problème par exemple tu l'aurais vu si tu avais activé les exceptions.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $reponse = $bdd->query('SELECT categorie, description FROM forum');
    Heu non c'était celui du premier problème que je voulais, un problème à la fois.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  11. #11
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Merci quand méme pour celui là, effectivement je ferais plus attention au exeption, enfin j'essayerai.

    Et voici le premier probléme :

    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
     
    <?php
    	if (isset($_SESSION['id']) AND isset($_SESSION['pseudo']))
    	{
    	echo'<form method="post" action="">
    	<input type="submit" value="Nouveau Sujet" name="newsujet" id="newsujet"/>
    	</form>';
    	}
    	if (!empty($_POST['newsujet']))
    	{
    		echo '<div class="blmessage" style="margin-left:15%">
    		<form method="post" action="">
    		<TEXTAREA name="Titre" id="Titre" rows=1 cols=45>Taper le titre</TEXTAREA> </form>
    		<form method="post" action="">
    		<TEXTAREA name="text" id="text" rows=10 cols=90>Taper votre message</TEXTAREA> </form>
    		<form method="post" action="">
    		<input type="submit" value="Annuler" name="annuler" /></form>
    		<form method="post" action="">
    		<input type="submit" value="Valider" name="poster" />
    		</form>
    		</div>' ;
    		if(!empty($_POST['poster']))
    		{
    			try
    			{
    				$bdd = new PDO("mysql:host=localhost;dbname=forum;charset=utf8", "root", "");
    			}
    			catch(Exception $e)
    			{
    				die("Erreur : ".$e->getMessage());
    			}
    			$pseudo = $_POST['pseudo'];
    			$titre = $_POST['Titre'];
    			$text = $_POST['text'];
    			$req = $bdd->prepare('INSERT INTO forum(pseudo, titre, text) VALUES(:pseudo, :titre, :text)');
    			$req->execute(array('pseudo' => $pseudo, 'titre' => $titre, 'text' => $text));
    		}
    	}
    	if (isset($_SESSION['id']) AND isset($_SESSION['pseudo'])) 
    	{
    	echo'<form method="post" action="">
    	<input type="submit" value="Nouvelle Catégorie" name="newcat" id="newcat"/>
    	</form>';
    	}
    	if(!empty($_POST['newcat']))
    	{
    		echo '<div class="blmessage" style="margin-left:15%">
    		<form method="post" action="">
    		<TEXTAREA name="categorie" id="categorie" rows=1 cols=45>Taper le titre</TEXTAREA> </form>
    		<for method="post" action="">
    		<TEXTAREA name="description" id="description" rows=2 cols=90>Description</TEXTAREA></form>
    		<form method="post" action="">
    		<input type="submit" value="Annuler" name="annuler" /></form>
    		<form method="post" action="">
    		<input type="submit" value="Valider" name="Valider" />
    		</form>';
     
    			if(!empty($_POST['Valider']))
    			{
    			try
    			{
    				$bdd = new PDO("mysql:host=localhost;dbname=forum;charset=utf8", "root", "");
    				$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    			}
    			catch(Exception $e)
    			{
    				die("Erreur : ".$e->getMessage());
    			}
    			$categorie = $_POST['categorie'];
    			$description = $_POST['Description'];
    			$req = $bdd->prepare('INSERT INTO categorie(titre, description) VALUES(:categorie, :description)');
    			$req->execute(array(':titre' => $categorie, ':description' => $description));
     
    			$resultat = $req->fetch();
    			}
    	} 
    ?>
    Je ne m'intéraisse que a la nouvelle catégorie pour le moment, de toute façon c'est a peut prés le méme code.

  12. #12
    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
    - Il me manque session_start(); au début.
    - Tu n'as pas activé les exceptions PDO.
    - le fetch() à la fin ne sert à rien puisque tu viens de faire un INSERT
    - tu as mis "Description" au lieu de "description"
    - tu as deux </form> qui se ballade en plein milieu du formulaire

    Comme pour PDO, il faut activer l'affichage de toutes les erreurs PHP ; tu aurais eu une erreur pour "Description"
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  13. #13
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Le session_start(); est dans base.php qui est inclus dans toutes mes pages donc dans celle ou est inclu nouveau_sujet.php que tu viens de voir et si il n'y était pas je ne pourrais pas passer le .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (isset($_SESSION['id']) AND isset($_SESSION['pseudo']))
    et je ne verai pas le bouton nouvelle catégorie.

    Je n'ai pas trouvé les deux </form> qui ce ballade.

    J'ai enlever le fetch(), en le voyant je me suis également demandé ce qu'il fesais là.

    En revanche je ne suis pas sur de savoir activer les exeptions PDO, j'essay comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    try{
    	$bdd = new PDO("mysql:host=localhost;dbname=forum;charset=utf8", "root", "");
    	$bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    }
    catch(PDOException $e){
    	die("Erreur : ".$e->getMessage());
    }
    Mais ça ne m'affiche rien.

    J'ai bien modifier le description mais le proléme persiste.

  14. #14
    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
    et je ne verai pas le bouton nouvelle catégorie.
    Qu'est-ce j'en sais moi si tu le vois ou pas ?

    Ah mais c'est pire que tu </form> qui se balladent c'est des formulaires entier qui se balladent :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <form method="post" action="">
    	<textarea name="Titre" id="Titre" rows="1" cols="45">Taper le titre</textarea>
    	<textarea name="text" id="text" rows="10" cols="90">Taper votre message</textarea>
    	<input type="submit" value="Annuler" name="annuler" />
    	<input type="submit" value="Valider" name="poster" />
    </form>

    et pareil pour le formulaire suivant.

    Les exceptions PDO s'affichent quand il y se produit une exception PDO.
    Tu peux également ajouter au début de tes pages :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    error_reporting(E_ALL);
    pour avoir toutes les erreurs PHP (independant de PDO).

    Il y a un problème de logique dans ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    if(!empty($_POST['newcat'])){
    	..... 
    	if(!empty($_POST['Valider']))
    "newcat" et "Valider" ne sont pas dans le même formulaire, les deux conditions ne s'imbriquent donc jamais.
    Au passage "Valider" ce n'est pas très parlant comme nom, surtout que tu as un autre submit dans le même script qui s'appelle "poster".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  15. #15
    Membre à l'essai
    Homme Profil pro
    Étudiant
    Inscrit en
    Mars 2015
    Messages
    31
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mars 2015
    Messages : 31
    Points : 20
    Points
    20
    Par défaut
    Qu'est-ce j'en sais moi si tu le vois ou pas ?
    Et bien c'est érit dans le code que tu as lus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if (isset($_SESSION['id']) AND isset($_SESSION['pseudo'])){
    	echo'<form method="post" action="">
    	<input type="submit" value="Nouvelle Catégorie" name="newcat" id="newcat"/>
    	</form>';
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    if(!empty($_POST['newcat'])){
    	echo '<div class="blmessage" style="margin-left:15%">
    		<form method="post" action="">
    		<TEXTAREA name="categorie" id="categorie" rows=1 cols=45>Taper le titre</TEXTAREA> </form>
    		<for method="post" action="">
    		<TEXTAREA name="description" id="description" rows=2 cols=90>Description</TEXTAREA></form>
    		<form method="post" action="">
    		<input type="submit" value="Annuler" name="annuler" /></form>
    		<form method="post" action="">
    		<input type="submit" value="Valider" name="Valider" />
    		</form>';
    	if(!empty($_POST['Valider']))
                ....
    On appuis sur "newcat" pour que le formulaire s'affiche, on le remplis et on l'envoie a la dben cliquant sur "Valider". Je ne trouve pas ça illogique.

    Si il n'y a pas de formulaire a remplir, je n'aurais pas a les envoyés a la db et donc il n'y aurais pas de probléme.

    Au départ je veut juste savoir pourquoi la méme procédure fonctionne pour inscritpion.php et ne fonctionne pas pour nouveau_sujet.php.

    J'ai essayer "error_reporting(E_ALL);" ça ne change rien.

    Merci quand méme pour avoir essayer de m'aider, je vais essayer de réglé le probléme moi méme.

Discussions similaires

  1. Ajouter du texte dans une edit box
    Par raf_gug dans le forum MFC
    Réponses: 10
    Dernier message: 23/05/2013, 10h00
  2. [JGraph] ajouter du texte dans une cellule
    Par publicStaticVoidMain dans le forum AWT/Swing
    Réponses: 0
    Dernier message: 10/11/2009, 16h44
  3. [IE]Ajout de texte dans une value
    Par Molos dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 21/03/2008, 22h37
  4. Ajouter du texte dans une ListBox sans sauter de ligne
    Par walid_kerkoub dans le forum Composants VCL
    Réponses: 2
    Dernier message: 03/03/2008, 15h42
  5. Réponses: 1
    Dernier message: 25/10/2006, 22h03

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