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 :

Bug Formulaire PHP-MySQL


Sujet :

PHP & Base de données

  1. #1
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut Bug Formulaire PHP-MySQL
    Salut
    Je fais des formulaires PHP pour gérer une base de données MySQL, et j'ai une erreur quand je poste mon formulaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Parse error: parse error, expecting `T_STRING' or `T_VARIABLE' or `T_NUM_STRING' in d:\interfaceadminbdd\modifyproject-sendtodb.php on line 6
    Le script PHP ou se trouve l'erreur est le suivant :

    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
     
    <?php
    	if(isset($_POST["Project"])){
    		mysql_connect("localhost","root","tulaurapamoncode");
    		mysql_select_db("database");
    		$query="UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt
    				SET p.Name=$_POST["ProjectName"],
    				p.PrgMgrID=$_POST["ProgramManager"],
    				p.PrjMgrID=$_POST["ProjectManager"],
    				p.BusOrgID=$_POST["BusOrg"],
    				p.RDOrgID=$_POST["RDOrg"],
    				p.CustomerID=$_POST["Customer"],
    				p.PlatformID=$_POST["Platform"],
    				p.Type=$_POST["Type"],
    				p.Archived=$_POST["Archived"]
    				WHERE	p.ProjectID=$_POST["Project"]
    				DELETE FROM siteprj WHERE ProjectID=$_POST["Project"];
    				INSERT INTO siteprj
    				VALUES($_POST["RDSite"], $_POST["Project"]);";
    		mysql_query($query);
    	}
    ?>
    l'erreur actuelles est à la ligne SET p.Name=$_POST["ProjectName"],
    ProjectName correspond à l'attribut "name" d'un input de type "text" et p.Name est un VarChar(200) dans ma Bdd.

    Auriez vus une idée de là d'ou peut venir mon erreur ?
    Merci !

  2. #2
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Points : 156
    Points
    156
    Par défaut
    utilise plutot la variable $_POST avec des guillemet simple comme ceci $_POST['ProjectName']

  3. #3
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    ou tu peux placer ta requete entre des ' ' à la place de " " à toi de voir
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  4. #4
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    Merci !
    Malheureusement la modif ne change rien à mon problème, d'ailleurs dans d'autres parties ça marche avec des double quotes partout...

    [edit] C'est pour la lisibilité ?

  5. #5
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    en fait non il faut que tu remplace toutes tes variables $_POST ou plus simple tu mets ta requete entre ' ' .
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  6. #6
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    je l'ai fait j'ai mis toutes mes variables post comme ça :
    $_POST['Var']

    Mais ça n'a pas fait évoluer le bin's...

  7. #7
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Points : 156
    Points
    156
    Par défaut
    essaie comme cela
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
          $query="UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt
                SET p.Name=".$_POST['ProjectName'].", 
                p.PrgMgrID=".$_POST['ProgramManager'].", .....

  8. #8
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Il y a des trucs louche dans ta requête :

    - j'ai pas trop compris le DELETE et INSERT dans ta clause WHERE

    - il te faut des quotes pour ton p.Name

    Essaye ce code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $query="UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt 
                SET p.Name='".$_POST["ProjectName"]."', 
                p.PrgMgrID=".$_POST["ProgramManager"].", 
                p.PrjMgrID=".$_POST["ProjectManager"].", 
                p.BusOrgID=".$_POST["BusOrg"].", 
                p.RDOrgID=".$_POST["RDOrg"].", 
                p.CustomerID=".$_POST["Customer"].", 
                p.PlatformID=".$_POST["Platform"].", 
                p.Type='".$_POST["Type"]."', 
                p.Archived='".$_POST["Archived"]."'  
                WHERE   p.ProjectID=".$_POST["Project"];

  9. #9
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    ok merci !
    Le delete et le insert c'est deux autres requetes je voulais tester si je pouvais mettre les trois ensemble... Mais ça vient pas de là si ?

  10. #10
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Ton problème non, mais le fait de faire comme tu l'as fait deja ce n'est pas correct, et ca ne te donnera aucuns résultats, et c'est logique, ca veut rien dire ^^

    Fait tes requetes séparement

  11. #11
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    ok donc j'ai remis comme tu l'as dit et séparé les requete

    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
     
    1 <?php
    2 	if(isset($_POST['Project'])){
    3 		mysql_connect("localhost","root","t4r4t4t4");
    4 		mysql_select_db("pmodatabase");
    5 		$query="UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt
    6				SET p.Name='".$_POST['ProjectName']."',
    7				p.PrgMgrID=".$_POST['ProgramManager'].",
    8				p.PrjMgrID=".$_POST['ProjectManager'].",
    9				p.BusOrgID=".$_POST['BusOrg'].",
    10				p.RDOrgID=".$_POST['RDOrg'].",
    11				p.CustomerID=".$_POST['Customer'].",
    12				p.PlatformID=".$_POST['Platform'].",
    13				p.Type='".$_POST['Type']."',
    14				p.Archived='".$_POST['Archived']."'
    15				WHERE	p.ProjectID=."$_POST['Project']".";
    16		mysql_query($query);
    17		$query="DELETE FROM siteprj WHERE ProjectID=."$_POST['Project'];
    18		mysql_query($query);
    19		$query="INSERT INTO siteprj	VALUES($_POST['RDSite'], $_POST['Project]);";
    20		mysql_query($query);
    21	}
    22 ?>
    Et ça a evolué. L'erreur est maintenant la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: parse error in d:\interfaceadminbdd\modifyproject-sendtodb.php on line 15
    Il me semblait manquer une " et un . et meme en les ajoutant ça n'a rien changé. A moins que je ne les aie mal mis..

    Au cas ou vous ne l'ayez pas compris je fais mon autoformation alors n'ayez pas peur de ma signaler des trucs qui vous semblent évidents !

  12. #12
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    essaie sa:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $query='UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt 
                SET p.Name="'.$_POST['ProjectName'].'", 
                p.PrgMgrID="'.$_POST['ProgramManager'].'", 
                p.PrjMgrID="'.$_POST['ProjectManager'].'", 
                p.BusOrgID="'.$_POST['BusOrg'].'", 
                p.RDOrgID="'.$_POST['RDOrg'].'", 
                p.CustomerID="'.$_POST['Customer'].'", 
                p.PlatformID="'.$_POST['Platform'].'", 
                p.Type="'.$_POST['Type'].'", 
                p.Archived="'.$_POST['Archived'].'" 
                WHERE   p.ProjectID="'.$_POST['Project'].'"';
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  13. #13
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    ok donc j'ai remis comme tu l'as dit et séparé les requete

    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
     
    <?php
    	if(isset($_POST['Project'])){
    		mysql_connect("localhost","root","t4r4t4t4");
    		mysql_select_db("pmodatabase");
    		$query="UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt
    				SET p.Name='".$_POST['ProjectName']."',
    				p.PrgMgrID=".$_POST['ProgramManager'].",
    				p.PrjMgrID=".$_POST['ProjectManager'].",
    				p.BusOrgID=".$_POST['BusOrg'].",
    				p.RDOrgID=".$_POST['RDOrg'].",
    				p.CustomerID=".$_POST['Customer'].",
    				p.PlatformID=".$_POST['Platform'].",
    				p.Type='".$_POST['Type']."',
    				p.Archived='".$_POST['Archived']."'
    15 -->			WHERE	p.ProjectID=."$_POST['Project']".";
    		mysql_query($query);
    		$query="DELETE FROM siteprj WHERE ProjectID=."$_POST['Project']".";
    		mysql_query($query);
    		$query="INSERT INTO siteprj	VALUES(."$_POST['RDSite']".,." $_POST['Project]".);";
    		mysql_query($query);
    	}
    ?>
    Et ça a evolué. L'erreur est maintenant la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Parse error: parse error in d:\interfaceadminbdd\modifyproject-sendtodb.php on line 15
    Il me semblait manquer une " et un . et meme en les ajoutant ça n'a rien changé. A moins que je ne les aie mal mis..

    Au cas ou vous ne l'ayez pas compris je fais mon autoformation alors n'ayez pas peur de ma signaler des trucs qui vous semblent évidents !

    [edit] Doublé par Yobs !

  14. #14
    Membre éclairé Avatar de Yobs
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    675
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2004
    Messages : 675
    Points : 846
    Points
    846
    Par défaut
    essaie sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $query='UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt 
                SET p.Name="'.$_POST['ProjectName'].'", 
                p.PrgMgrID="'.$_POST['ProgramManager'].'", 
                p.PrjMgrID="'.$_POST['ProjectManager'].'", 
                p.BusOrgID="'.$_POST['BusOrg'].'", 
                p.RDOrgID="'.$_POST['RDOrg'].'", 
                p.CustomerID="'.$_POST['Customer'].'", 
                p.PlatformID="'.$_POST['Platform'].'", 
                p.Type="'.$_POST['Type'].'", 
                p.Archived="'.$_POST['Archived'].'" 
                WHERE   p.ProjectID="'.$_POST['Project'].'"';
    Chaque problème a une solution, mais il est plus facile de répondre si le problème est correctement renseignés

  15. #15
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    Merci ! ça fonctionne !! merci merci merci !
    reste un dernier ptit bug

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Notice: Undefined index: Archived in d:\thomson\interfaceadminbdd\modifyproject-sendtodb.php on line 14
    Archived désigne un checkbox. Quel sont les valeurs renvoyées par une checkbox ? Dans ma base de donnée j'ai mis 1 ou 0 mais c'est vrai que je ne sais pas si la checkbox renvoie ça...

  16. #16
    Membre habitué
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    137
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2005
    Messages : 137
    Points : 125
    Points
    125
    Par défaut
    Citation Envoyé par Yobs
    essaie sa
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    $query='UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt 
                SET p.Name="'.$_POST['ProjectName'].'", 
                p.PrgMgrID="'.$_POST['ProgramManager'].'", 
                p.PrjMgrID="'.$_POST['ProjectManager'].'", 
                p.BusOrgID="'.$_POST['BusOrg'].'", 
                p.RDOrgID="'.$_POST['RDOrg'].'", 
                p.CustomerID="'.$_POST['Customer'].'", 
                p.PlatformID="'.$_POST['Platform'].'", 
                p.Type="'.$_POST['Type'].'", 
                p.Archived="'.$_POST['Archived'].'" 
                WHERE   p.ProjectID="'.$_POST['Project'].'"';
    Normalement on ne doit pas mettre de " ou ' pour des caractères numériques.

    Bizarre que tu ai une erreur avec ce que je t'ai donné, il n'y avait pas besoin de ." à la fin car il n'y a plus besoin de faire de concaténation.

    PS : @Davboc : Quand tu parle d'ID, ce sont des numériques ou alpha-numériques ?

  17. #17
    Membre habitué
    Inscrit en
    Août 2005
    Messages
    142
    Détails du profil
    Informations forums :
    Inscription : Août 2005
    Messages : 142
    Points : 156
    Points
    156
    Par défaut
    un checkbox renvoi "on" quand il est coché
    si tu veux renvoyé 1 ou 0 suivant qu'il est coché ou pas tu peut faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    if ( isset($_POST['checkbox'])  ){
    echo "1"; //coché
    }else{
    echo "0"; //pas coché
    }

  18. #18
    Membre habitué Avatar de Davboc
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    266
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Novembre 2005
    Messages : 266
    Points : 168
    Points
    168
    Par défaut
    les id sont numeriques ce sont les clés de mes tables, de type int(10)

    [edit] Merci zulkifli ! je viens à l'instant de tomber sur un article là dessus
    http://www.globalissa.com/articles/articleCheckbox.php


    Voilà ca marche !
    Le code est là pour ceux que ça interessera :
    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
    <?php
    	if(isset($_POST['Project'])){
    		if ( isset($_POST['Archived'])  ){
    			$Archive=1; //checked
    		}
    		else{
    			$Archive=0; //not checked
    		} 
    		mysql_connect("localhost","root","votremotdepasse");
    		mysql_select_db("votredatabase");
    		$query='UPDATE project p, prgmgr prg, prjmgr prj, busorg b, rdorg ro, customer c, platform pt
                SET p.Name="'.$_POST['ProjectName'].'",
                p.PrgMgrID="'.$_POST['ProgramManager'].'",
                p.PrjMgrID="'.$_POST['ProjectManager'].'",
                p.BusOrgID="'.$_POST['BusOrg'].'",
                p.RDOrgID="'.$_POST['RDOrg'].'",
                p.CustomerID="'.$_POST['Customer'].'",
                p.PlatformID="'.$_POST['Platform'].'",
                p.Type="'.$_POST['Type'].'",
                p.Archived="'.$Archive.'"
                WHERE   p.ProjectID="'.$_POST['Project'].'"'; 
    		mysql_query($query);
    		$query='DELETE FROM siteprj WHERE ProjectID="'.$_POST['Project'].'"';
    		mysql_query($query);
    		$query='INSERT INTO siteprj	VALUES("'.$_POST['RDSite'].'","'.$_POST['Project'].'");';
    		mysql_query($query);
    	}
    ?>

    Merci à tout ceux qui ont répondu de l'avoir fait si vite et si gentiment !

    Maintenant il faut que je trouve comment stocker des chemins informatiques dans ma database et c'est bon pour ce formulaire !

Discussions similaires

  1. [MySQL] Formulaire PHP ->MySQL
    Par shub dans le forum PHP & Base de données
    Réponses: 14
    Dernier message: 09/02/2010, 22h42
  2. [MySQL] Formulaire PHP MySQL
    Par clovis991 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 27/02/2008, 16h18
  3. [MySQL] Probléme de apostrophe a mettre en formulaire php/mysql
    Par mecmec dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 02/06/2007, 20h42
  4. [MySQL] Formulaire PHP --> MySQL
    Par Badaboumpanpan dans le forum PHP & Base de données
    Réponses: 11
    Dernier message: 23/06/2006, 17h19
  5. Formulaire PHP-MySQL
    Par fara morgana dans le forum Langage
    Réponses: 11
    Dernier message: 09/05/2006, 15h46

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