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 :

Problème PHP et variables.


Sujet :

PHP & Base de données

  1. #1
    Membre à l'essai
    Homme Profil pro
    freelance
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : freelance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 10
    Points
    10
    Par défaut Problème PHP et variables.
    Bonjour à tous.

    Je suis un très grand débutant en php, mysql et, pour mon travail, j'ai un besoin impératif de réaliser un formulaire d'encodage ainsi qu'une page de consultation et de modification.
    J'ai suivis beaucoup de cours et tutoriels PHP sur le sujet ( developpez.com, etc ... ) avec lesquels j'ai réussi, de façon très sale je suis sûr, à faire mon formulaire d'encodage.

    Ma base de donnée reçois bien ce que j'encode mais je n'arrive pas à réaliser une page similaire à mon formulaire mais pour la consultation et la modification.
    Les variables me bloquent, je n'arrive pas à afficher sauf avec un fetch() ce qui ne me va pas.

    Si une âme charitable pouvais m'aider je serais ravis de lui fournir toutes les info qu'il aura besoin pour me sortir de cette panade.


    Merci d'avance.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    commence déjà par nous montrer :
    • ton code d'INSERT
    • la structure de la table


    • Pour la consultation : requête SELECT + fetch() + while{...}
    • Pour la modification : requête UPDATE + nécessité d'avoir l'id de la ligne à modifier
    • Pour la suppression: requête DELETE+ nécessité d'avoir l'id de la ligne à supprimer

  3. #3
    Membre à l'essai
    Homme Profil pro
    freelance
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : freelance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    Ok, mais ne me tapez pas pour ce que vous allez voir !! je suis un TRES grand débutant dans le code ( c'est mon premier code php ) :

    Ceci est mon code Insert ( très sale et sans aucune protection mais bon c'est pour du local ) qui fonctionne bien.
    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
     
    <p> <a href="index.php">clique ici</a></p>
    <?php
     
    try {
        $bdd = new PDO('mysql:host=localhost;dbname=immo;charset=utf8', 'root', '');
    } catch (Exception $e) {
        die('Erreur : ' . $e->getMessage());
    }
     
     
     
    <?php
     
    $response = $bdd->query("INSERT INTO `biens` (`Code-Bien`,`Agence`, `Type-Vente`, `Type-Bien`, `Date-F`, `Date-Immo`, `Date-Expiration`, `Actif`, `Etat`, `Certif-PEB`, `Photos`, `Plan`, `PDF-Plan`, `Modif-Plan`, `Fichier-Plan`, `Date-Reception`, `Date-Creation`, `Date-Envoie`, `Date-Corrections`, `Date-Publication`, `Remarques`)
     VALUES ('" . $_POST["codebien"] . "', '" . $_POST["agence"] . "', '" . $_POST["typevente"] . "', '" . $_POST["typebien"] . "', '" . $_POST["datef"] . "', '" . $_POST["dateimmo"] . "', '" . $_POST["dateexpir"] . "', '" . $_POST["actif"] . "', '" . $_POST["etat"] . "', '" . $_POST["certifpeb"] . "', '" . $_POST["photo"] . "', '" . $_POST["plan"] . "', '" . $_POST["newpdf"] . "', '" . $_POST["modif"] . "', '" . $_POST["fichier"] . "', '" . $_POST["reception"] . "', '" . $_POST["creation"] . "', '" . $_POST["dateagence"] . "', '" . $_POST["correction"] . "', '" . $_POST["publication"] . "', '" . $_POST["remarque"] . "');");
     
    if ($response == true) {
     
        echo "insert OK";
    }
     
    ?>
    Ce qui me bloque c'est d'appeler dans une page de consult et modif qui ont le même format que mon formulaire les variables de mon code 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
    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
    <form method="post" action="bdd3.php" class="register">
                
                        <h1>Consultation des Biens </h1>
                <fieldset class="row1"> <legend>Détails du bien </legend>
                    <p> <label style="width: 100px;">Code bien </label> 
                        <input name="codebien" type="search" style="width: 100px;" /> 
                        <label style="width: 100px;">Type de Vente</label>
                        <input type="text" name="typevente"style="width: 100px">
                           
                        <label style="width: 100px;">Type de Bien </label>
                        <input type="text" name="typebien"style="width: 100px;">
                           
                    <p> <label style="width: 100px;">Agence </label>
                        <input type="text"name="agence"style="width: 100px;"/>
                        
                        <label style="width: 100px;">Actif </label>
                        <input type="text" name="actif"style="width: 100px;">
                          
                        <label style="width: 100px;">Etat </label>
                        <input type="text" name="etat"style="width: 100px;">
                           
                    </p>
                    <p> <label style="width: 100px;">Date fiks.be </label> 
                        <input name="datef" type="text"style="width: 100px;" id="datef" /> 
                        <label style="width: 100px;"id="dateimmo">Date Immo </label> 
                        <input name="dateimmo" type="text" style="width: 100px;"id="dateimmo" /> 
                        <label style="width: 100px;" id="dateexpir">Date expiration </label> 
                        <input name="dateexpir" type="text" style="width: 100px;" id="dateexpira" />
                    </p>
                    <p> Remarques :<textarea class="remarque" name="remarque" row="24" cols="45" style="height: 80px; width: 600px;"></textarea>
                </fieldset>
                <fieldset class="row2"> <legend>Plans </legend>
                    <p style="text-align: left;">* 
                        <label>Plan</label> 
                        <input name="plan" type="checkbox" value="oui" /> 
                        <label class="gender">Oui</label> 
                        <input name="plan" type="checkbox" value="non" /> 
                        <label class="gender">Non</label> </p>
    
    
                    <p> <label>Nouveau PDF</label> <input name="newpdf"style="width:100px;" type="text" class="long"  />
                        <label>Date reception</label> <input name="reception"style="width:100px;" type="text" />	</p>
                    <p> <label>Modif PDF </label> <input name="modif"style="width:100px;" type="text" class="long"  />
                        <label>Date creation</label> <input name="creation"style="width:100px;" type="text" />		</p>
                    <p> <label>Fichier plan</label> <input name="fichier"style="width:100px;" type="text" class="long" />
                        <label>Date agence</label> <input name="dateagence"style="width:100px;" type="text" /> </p>
                    <p> <label>Date corrections</label> <input name="correction"style="width:100px;" type="text" />
                        <label>Date publication</label> <input name="publication"style="width:100px;" type="text" /> </p>
    
                </fieldset>
                <fieldset class="row3"> <legend>Autre Informations </legend>
                    <p> <label>Numéro PEB</label> <input name="certifpeb"type="text"  /></p>
                    <p> <label> ID BDD</label> <input name="idbdd"type="text" /></p>
                    <p> <label> Photos </label> <input name="photo"type="text"/></p>
    
    
    
                    
                </fieldset>
    
                <div><input class="button" type="submit" value="Valider »"/></div>
        
            </form>
    Quand à la structure de ma table (si elle est correct pour mes besoin ) la voici :
    Nom : bdd.jpg
Affichages : 141
Taille : 165,1 Ko



    Je travail pour des agences immo différentes et j'ai un réel besoin de tout centraliser afin de ne pas me perdre et me rendre plus efficace. mais je n'ai aucune notion en sql et php.

    Encore désolé si j'ai codé ceci comme un manche

  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
    Il n'y a pas que la securité en jeu : si quelqu'un met un guillemet dans une valeur, la requête va planter.
    Il faut donc utiliser la préparation de requête :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $response = $bdd->prepare('INSERT INTO `biens` (`Code_Bien`,`Agence`, `Type_Vente`, `Type_Bien`, .........)  VALUES (:Code_bien, :Agence, :Type_Vente, Type_Bien, ....);');
    $response->execute(array(':Code_Bien'=>$_POST['codebien'], ':Agence'=> $_POST['agence'], ':Type_Vente'=>$_POST['typevente'], ':Type_Bien'=>$_POST['typebien'], .....));
    Je te déconseille de mettre des tirets dans tes nommages. Le tiret c'est le symbole arithmétique moins, donc c'est source de problèmes.
    Uniformise tes nommages, si ta colonne est 'Code_Bien' ne met pas 'codebien' dans le formulaire, encore une fois c'est source d'erreurs.

    Sinon, étant donné que tu as déjà réussi à écrire le formulaire et la requête pour l'insertion, je ne vois pas ce qui te bloque pour refaire pareil pour la lecture et pour la modification.

    Si tu avais en tête de n'écrire qu'un seul formulaire dynamique pour les trois cas, ca sera plus simple pour toi de simplement faire un code HTML pour chaque cas.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  5. #5
    Membre à l'essai
    Homme Profil pro
    freelance
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : freelance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    J'ai remplacé
    Ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $response = $bdd->query("INSERT INTO `biens` (`Code-Bien`,`Agence`, `Type-Vente`, `Type-Bien`, `Date-Fiks`, `Date-Immoweb`, `Date-Expiration`, `Actif`, `Etat`, `Certif-PEB`, `Photos`, `Plan`, `PDF-Plan`, `Modif-Plan`, `Fichier-Plan`, `Date-Reception`, `Date-Creation`, `Date-Envoie`, `Date-Corrections`, `Date-Publication`, `Remarques`)
     VALUES ('" . $_POST["codebien"] . "', '" . $_POST["agence"] . "', '" . $_POST["typevente"] . "', '" . $_POST["typebien"] . "', '" . $_POST["datefiks"] . "', '" . $_POST["dateimmo"] . "', '" . $_POST["dateexpir"] . "', '" . $_POST["actif"] . "', '" . $_POST["etat"] . "', '" . $_POST["certifpeb"] . "', '" . $_POST["photo"] . "', '" . $_POST["plan"] . "', '" . $_POST["newpdf"] . "', '" . $_POST["modif"] . "', '" . $_POST["fichier"] . "', '" . $_POST["reception"] . "', '" . $_POST["creation"] . "', '" . $_POST["dateagence"] . "', '" . $_POST["correction"] . "', '" . $_POST["publication"] . "', '" . $_POST["remarque"] . "');");
    Par cela :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    $response = $bdd->prepare('INSERT INTO `biens` (`Code_Bien`,`Agence`, `Type_Vente`, `Type_Bien`, `Date_Fiks`, `Date_Immoweb`, `Date_Expiration`, `Actif`, `Etat`, `Certif_PEB`, `Photos`, `Plan`, `PDF_Plan`, `Modif_Plan`, `Fichier_Plan`, `Date_Reception`, `Date_Creation`, `Date_Envoie`, `Date_Corrections`, `Date_Publication`, `Remarques`)  
    VALUES (:Code_bien, :Agence, :Type_Vente, :Type_Bien, :Date_Fiks, :Date_Immoweb, :Date_Expiration, :Actif, :Etat, :Certif_PEB, :Photos, :Plan, :PDF_Plan, :Modif_Plan, :Fichier_Plan, :Date_Reception, :Date_Creation, :Date_Envoie, :Date_Corrections, :Date_Publication, :Remarques....);');
    $response->execute(array(':Code_Bien'=>$_POST['codebien'], ':Agence'=> $_POST['agence'], ':Type_Vente'=>$_POST['typevente'], ':Type_Bien'=>$_POST['typebien'], ':Date_fiks'=>$_POST['datefiks'], ':Date_Immoweb'=>$_POST['dateimmo'], ':Date-Expiration'=>$_POST['dateexpir'], ':Actif'=>$_POST['actif'], ':Etat'=>$_POST['etat'], ':Certif-PEB'=>$_POST['certifpeb'], ':Photos'=>$_POST['photo'], ':Plan'=>$_POST['plan'], ':PDF_Plan'=>$_POST['newpdf'], ':Modif_Plan'=>$_POST['modif'], ':Fichier_Plan'=>$_POST['fichier'], ':Date_Reception'=>$_POST['reception'], ':Date_Creation'=>$_POST['creation'], ':Date_Envoie'=>$_POST['dateagence'], ':Date_Corrections'=>$_POST['correction'], ':Date_Publication'=>$_POST['publication'], ':Remarques'=>$_POST['remarque'] ));

    Mais maintenant j'ai une erreur " PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in bdd.php on line 17 "
    Ma ligne 17 correspond à la ligne execute.

    J'ai pourtant 21 champs en INTERT INTO et 21 en VALUES.

    J'ai également pris note et changé tout les signes Moins en underscore afin de ne pas avoir de soucis plus tard

  6. #6
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    • ':Date-Expiration' au lieu de ':Date_Expiration'.
    • idem pour ':Certif-PEB'.

    • :Remarques....);'); : pourquoi les points de suspension ?? 8O


    => il faut te relire, ou mieux, écrire la requête de façon lisible (sur plusieurs lignes) :
    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
    $response = $bdd->prepare( 'INSERT INTO `biens` (
    	`Code_Bien`,
    	`Agence`, 
    	`Type_Vente`, 
    	`Type_Bien`, 
    	`Date_Fiks`, 
    	`Date_Immoweb`, 
    	`Date_Expiration`, 
    	`Actif`, 
    	`Etat`, 
    	`Certif_PEB`, 
    	`Photos`, 
    	`Plan`, 
    	`PDF_Plan`, 
    	`Modif_Plan`, 
    	`Fichier_Plan`, 
    	`Date_Reception`, 
    	`Date_Creation`, 
    	`Date_Envoie`, 
    	`Date_Corrections`, 
    	`Date_Publication`, 
    	`Remarques`
     
    	) VALUES (
     
    	:Code_bien, 
    	:Agence, 
    	:Type_Vente, 
    	:Type_Bien, 
    	:Date_Fiks, 
    	:Date_Immoweb, 
    	:Date_Expiration, 
    	:Actif, 
    	:Etat, 
    	:Certif_PEB, 
    	:Photos, 
    	:Plan, 
    	:PDF_Plan, 
    	:Modif_Plan, 
    	:Fichier_Plan, 
    	:Date_Reception, 
    	:Date_Creation, 
    	:Date_Envoie, 
    	:Date_Corrections, 
    	:Date_Publication, 
    	:Remarques
    	);' );
     
    $response->execute( array(
    	':Code_Bien'=>$_POST['codebien'], 
    	':Agence'=> $_POST['agence'], 
    	':Type_Vente'=>$_POST['typevente'], 
    	':Type_Bien'=>$_POST['typebien'], 
    	':Date_fiks'=>$_POST['datefiks'], 
    	':Date_Immoweb'=>$_POST['dateimmo'], 
    	':Date_Expiration'=>$_POST['dateexpir'], 
    	':Actif'=>$_POST['actif'], 
    	':Etat'=>$_POST['etat'], 
    	':Certif_PEB'=>$_POST['certifpeb'], 
    	':Photos'=>$_POST['photo'], 
    	':Plan'=>$_POST['plan'], 
    	':PDF_Plan'=>$_POST['newpdf'], 
    	':Modif_Plan'=>$_POST['modif'], 
    	':Fichier_Plan'=>$_POST['fichier'], 
    	':Date_Reception'=>$_POST['reception'], 
    	':Date_Creation'=>$_POST['creation'], 
    	':Date_Envoie'=>$_POST['dateagence'], 
    	':Date_Corrections'=>$_POST['correction'], 
    	':Date_Publication'=>$_POST['publication'], 
    	':Remarques'=>$_POST['remarque']
    	) );
    On y voit tout de suite plus clair !

  7. #7
    Membre à l'essai
    Homme Profil pro
    freelance
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : freelance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    Merci bcp !

    J'ai vérifié l'orthographe de mes champs Name="" pour correspondre aux champs $_POST['']
    J'ai vérifié également ceux de ma BDD
    mais j'ai toujours une erreur
    PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in bdd.php on line 87 qui correspond à :
    dans le paragraphe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     $response->execute( array(
    Et en effet JREAUX62 c'est clairement plus lisible ainsi.

  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
    Cela signifie que tu n'as pas les mêmes paramètres dans le execute et dans la requête.
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

  9. #9
    Membre à l'essai
    Homme Profil pro
    freelance
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : freelance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    Oui ! je dois bien faire attention à la casse ! une majuscule oubliée et rien ne fonctionne !

    Je n'arrive vraiment pas a intégrer la logique du php avec mysql ...


    Merci beaucoup pour votre aide mon formulaire d'encodage fonctionne est à un code beaucoup plus propre !
    Mais je reste dans le noir pour la suite des opérations .... Les solutions glanées sur le net pour lire la base de donnée ne fonctionne pas dans mon cas à cause des fetch() et des while .

  10. #10
    Invité
    Invité(e)
    Par défaut
    Rien à voir avec de la "logique".

    Il s'agit essentiellement d'être RIGOUREUX dans l'écriture, de prendre de bonnes habitudes et de s'y tenir.

  11. #11
    Membre à l'essai
    Homme Profil pro
    freelance
    Inscrit en
    Octobre 2015
    Messages
    27
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Belgique

    Informations professionnelles :
    Activité : freelance

    Informations forums :
    Inscription : Octobre 2015
    Messages : 27
    Points : 10
    Points
    10
    Par défaut
    Merci à vous, grâce à vos conseils mon formulaire fonctionne au poil et est devenue beaucoup plus lisible !

    Je passe donc ce sujet en Résolu.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 6
    Dernier message: 30/01/2011, 23h50
  2. [MySQL] Problème avec php/mysql, variables du même nom
    Par Naxosy dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 13/01/2008, 15h31
  3. [PHP-JS] problème avec une variable
    Par schats dans le forum Langage
    Réponses: 14
    Dernier message: 15/04/2007, 13h54
  4. [PHP-JS] Problème récupération de variable
    Par frog43 dans le forum Langage
    Réponses: 8
    Dernier message: 23/03/2007, 11h48
  5. Problème avec les variables en PHP
    Par King_T dans le forum Langage
    Réponses: 3
    Dernier message: 06/05/2006, 23h46

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