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 :

Récupération de variable [Débutant(e)] [MySQL]


Sujet :

PHP & Base de données

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut Récupération de variable
    Alors voilà, je suis débutante donc il ne faut pas m'en vouloir si mes problèmes et questions sont finalement idiotes...
    Donc j'ai fait un champ classique en mode html avec un bouton envoyer, et je met le contenue du champ dans une variable, mais quand j'affiche ce qu'il y a dans la variable, il n'y a rien...
    donc voilà mon code (par la suite (fin du code) je souhaites mettre ce qu'il y a dans le champ dans la bdd.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <input name="com_auteur" type="text"><input type="submit">
     
    <?php
    $com_auteur=fct_post("com_auteur");
    echo "com_auteur=$com_auteur" ;
     
    if ($com_auteur != "")
    {
    $sql="insert into commentaires ($auteur) values (com_auteur)";
    fct_execute($connexion,$sql);
    }
     
    }?>
    Ma fonction post est celle-ci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    function fct_post($name) 
    {
    if (isset($_POST[$name])) //on regarde si le champs qui s'appelle $name existe
     
    	$r=$_POST[$name]; // si oui, $r prend pour valeur $name
    	else $r=""; //sinon $r reste vide
    	return $r;
     
    }
    ma fonction execute est celle-ci (elle transfère donc les données dans la bdd) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function		fct_execute	(	$connexion,	$sql	) // execute la requete $sql
    	{
    		$flag	= 1 ;
    		mysql_query	(	$sql	) or	die	( "<br>Echec query : <b>$sql</b><br>" . mysql_error() . "<br>" ) ;
    		if 	( $flag == 0 )
    		{
    			echo "<br>Erreur SQL (query) = <br>$sql<br>" . mysql_error() . "<br>" ;
    		}
    		return		$flag ;
    	}
    donc pour l'instant au niveau de echo "com_auteur=$com_auteur" ; ça ne m'affiche que com_auteur=
    Merci d'avance pour votre aide

  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
    Bonjour

    Ce n'est peut-être pas de là que vient le problème, mais dans la fonction j'aurais mis $_POST["$name"] plutôt que $_POST[$name]
    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 averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    apparement le problème ne vient pas de là... je me demande si ça vient pas de mon champ et de bouton, faudrait peut-être ajouter quelque chose mais en fait je vois pas quoi...

  4. #4
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Bonjour,

    Sans entrer dans les détails, je dirais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $com_auteur=fct_post($_POST['com_auteur']);
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    function fct_post($name) 
    { 
    if (isset($name])) //on regarde si le champs qui s'appelle $name existe
      $r = $name; // si oui, $r prend pour valeur $name  
    else 
      $r = ""; //sinon $r reste vide  
    return $r; 
    }

  5. #5
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Pour la fonction fct_post() ca ne fonctionnera pas, le but de cette fonction est de dire "si mon paramètre existe alors ... sinon ...
    or, si le paramètre n'existe pas on aura une erreur a l'appel de la fonction puisqu'on passe un paramètre qui n'existe pas.
    Ca rejoint ce post

  6. #6
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    J'ai précisé :
    Sans entrer dans les détails
    car je ne vois vraiment pas l'intérêt de cette fonction. En effet :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $com_auteur = (isset($_POST['com_auteur'])) ? $_POST['com_auteur'] : '';
    fait le même chose.

  7. #7
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Oui oui je sais bien, c'était juste une nouvelle précision par rapport a son code, histoire d'enlever petit à petit tout ce qui semble ou risque de poser problème.

    PAr ailleurs, petite question bete, dans le premier script de ta liste, tu définis un champ et un bouton mais pas du tout de formulaire. Est-ce un oubli dans le code?

  8. #8
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    rooo j'ecris comme un escargot....

    la bave en moins

    peux tu mettre le code de ton formulaire ?? qui devrait ressembler a

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    <form name=\"essai\" action=\"".$PHP_SELF."\" method=\"post\">
    <input name="com_auteur" type="text"><input type="submit"></form>

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    mon forumulaire commence bien par ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <form name="essai"  method="post">
    (j'ai du le bouffer à la copie du code)
    par contre j'ai pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    action=\"".$PHP_SELF."\"
    je n'ai jamais vu ça en fait...
    En fait, ce que je voulais faire c'est un système de commentaires, genre on tape un truc dans un champ et après on valide et ça s'affiche en dessous (y a bien le code pour afficher les comm après qui sont dans la bdd). Quand j'ai demandé à quelqu'un qui s'y connait, il m'a dit d'utiliser cette focntion post, ce qui n'est pas très judicieux apparemment...

  10. #10
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    En fait, action="" sert a dire quel script php executer quand on cliquer sur un des boutons.
    Quand tu es censée relancer le meme script, il suffit de ne pas mettre ce paramètre.
    C'est le comportement par défaut quoi.

  11. #11
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    Ce serait mieux avec :
    Tous les détails sur les variables prédéfinies ici :
    http://www.php.net/manual/fr/languag...predefined.php

  12. #12
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    En fait, c'est tout bête, j'avais fait une erreur dans le form (j'ai vérifié avec vos remarques du coup...)
    donc finalement après avoir bien regardé, mon code donne ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if ($com_auteur != "")
    {
    $sql="insert into commentaires (auteur) values ($com_auteur)";
    fct_execute($connexion,$sql);
    }
    et quand je lance ma page, il 'affiche une erreur que je ne sais pas interprétée :
    if ($com_auteur != "")
    {
    $sql="insert into commentaires (auteur) values ($com_auteur)";
    fct_execute($connexion,$sql);
    }

  13. #13
    Membre Expert
    Inscrit en
    Janvier 2005
    Messages
    2 291
    Détails du profil
    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 291
    Par défaut
    Tu es bien entre les balises <?php et ?> ?

  14. #14
    Membre éprouvé Avatar de LeXo
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    1 147
    Détails du profil
    Informations personnelles :
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 147
    Par défaut
    post ton erreur

    sinon fais un echo de ta requete pour voir si tu passes bien les parametres

    je ne comprends pas ta fonction fct_execute

    tu passes $connection et tu t'en sers pas
    tu initialises $flag et tu fais un test juste apres ?? c pour la langue

    t'as ouvert une connexion persistante a ta base de donnée MySQL?

  15. #15
    Membre Expert

    Profil pro
    Inscrit en
    Août 2002
    Messages
    1 060
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2002
    Messages : 1 060
    Par défaut
    La colonne 'auteur' doit être de type char, donc, il faut des guillemets.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $sql = 'insert into commentaires (auteur) 
            values (\'' . $com_auteur . '\')';

  16. #16
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    je viens de vérifier et oui je suis bien entre les balises <?php et ?>

  17. #17
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Effectivement, déjà sans les balises <form> ca marche moins bien

    Moi voila ce que j'en dit;

    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
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post">
    	<input name="com_auteur" type="text">
    	<input type="submit">
    </form>
     
    <?php
    if(!empty($_POST))//On verifie qu'il y ai bien un envoi de formulaire
    {	
    	$com_auteur=fct_post("com_auteur");
    	//echo "com_auteur=$com_auteur" ;  //Et si $com_auteur contien abc"def"ghi"klm, ca va planter !
    	echo "com_auteur=".$com_auteur;
     
    	if (!empty($com_auteur)) //je pense que c'est mieux que -> if($com_auteur  != "")
    	{
    		$sql="INSERT INTO commentaires(auteur) values ('".$_POST['com_auteur']."')";
    		/* Juste pour expliquer:
    			-	commentaires(auteur) plutôt que commentaires($auteur), car tu ne dois pas donner une variable ici,
    				mais tu dois donner le nom du champ de ta table. Donc simplement le nom !
    			-	values (com_auteur) ne marche pas ! Tu dois donner ici une valeur, et elle doit etre
    				entre deux ->   '   <-, sinon elle ne prend pas. Le point (.) permete de concatener les données.
    		*/
    		//fct_execute($connexion,$sql); ici tu ne te sers pas de $connexion dans ta fonction. Ca ne sert donc a rien !
    		$connexion = mysql_connect("localhost", "login", "password");
    		mysql_select_db("nom_de_la_bdd");
     
    		fct_execute($sql);
                    mysql_close($connexion);
    	}
     
    }
     
     
    function fct_post($name) 
    { 	
    	if(isset($_POST[$name])) 
    	{	$r = $_POST[$name];}
    	else
    	{	$r = "";}
    	return $r;
    }
     
    function fct_execute($sql)
    {
    	mysql_query($sql) or die("<br>Echec query : <b>$sql</b><br>".mysql_error()."<br>");
    	return true; 	//Ca sert un peu a rien mais bon. Ca te renverra toujours true ou 1 puisque si c'est pas le cas, 
    					//c'est que la fonction die() c'est executée
    }
     
    ?>
    Voila j'espère pas avoir mis trop d'âneries ^^

    ++ j'espère t'avoir aidé

    PS (edit): Dsl pour les gens qui ont postés avant moi et qui du coup je répète, mais ca m'a pris un peu de temps d'ecrire tout ca ^^ Cool la ptite communauté

  18. #18
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Alors voilà mon erreur :
    Echec query : insert into commentaires (auteur) values ( gdfgfdg )
    jeca, ça change rien si je met ce que tu as mis entre guillemets...

  19. #19
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    18
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2006
    Messages : 18
    Par défaut
    Voilà, j'ai juste changé mon code est mis ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sql="INSERT INTO commentaires(auteur) values ('".$_POST['com_auteur']."')";
    comme tu me l'as mis bigltnt, ça s'affiche, ya plus d'erreurs, et ça rentre dans la bdd ! hiphiphip hourra lol
    Merci d'avoir aidé une débutante comme moi c'est vraiment gentil surtout que bon, vous devait vous dire que mon problème était limite !

  20. #20
    Membre confirmé Avatar de bigltnt
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    227
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 227
    Par défaut
    Bah on débute tous un jour !

    Pis moi j'avais rien a faire alors ca m'a bien occupé

    N'oublies pas de cliquer le bouton "resolu" si ta question est répondu (ou ton problème résolu), et n'hésite pas à aider les autres quand tu peux les aider !

    ++

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [C#] Récupération des variables system...
    Par smyley dans le forum Windows Forms
    Réponses: 7
    Dernier message: 04/08/2005, 12h39
  2. [VC++] Récupération de variables d'environnement
    Par LeonardDev dans le forum MFC
    Réponses: 2
    Dernier message: 02/03/2005, 12h09
  3. [VB.NET] Problem de récupération de variable avec une DLL
    Par ludovic85 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 19/01/2005, 12h37
  4. Récupération de variable
    Par Fred- dans le forum ASP
    Réponses: 13
    Dernier message: 17/06/2004, 21h13
  5. Récupération de variables dynamiques complexes
    Par ludoboy dans le forum ASP
    Réponses: 7
    Dernier message: 24/05/2004, 18h51

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