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

Langage PHP Discussion :

Formulaire : id dans Url et emploi des conditions


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut Formulaire : id dans Url et emploi des conditions
    Bonjour,

    je modifie ma demande puisqu'en fouinant j'ai un peu mieux identifier mes problématiques.
    Je reformule en complétant et en espérant votre aide.
    D'avance Merci.

    ce que je veux obtenir :

    1 page qui affiche une liste de documents

    ->acces base de données (ok)
    ->affichage des lignes etc (ok)
    ->affichage bouton créer (ok)

    => tout ça j'ai réussi à le faire

    1 page pour ajouter/editer un document :

    -> mise en place d'un formulaire (ok)
    -> vérification des saisies (ok)
    -> redirection vers une autre page (ok)

    => tout ça j'ai réussi à le faire

    1 page pour visualiser/traiter les infos :

    -> afficher un résumé des informations saisies (ok)
    -> implementer la bdd et donner un message de confirmation (ok)

    => tout ça j'ai réussi à le faire

    Problematique : Je souhaiterais aussi que si :

    --> il manque des informations --> l'utilisateur ne soit pas redirigé, mais que le formulaire se reaffiche avec les champs pre-remplis et la liste des informations manquantes.
    --> si les informations sont ok alors redirection vers la page qui affichera et traitera les données.

    Mon problème principal intervient donc au niveau des conditions

    1 page pour voir les documents :

    -> avec possibilité de recuperer l'id dans l'url (ça je sais pas faire)
    -> acceder a la bdd pour afficher les informations liées à l'id (je sais pas faire non plus)

    C'est mon deuxième problème je ne sais pas comment coder ça !

    -> 1 bouton qui permette de modifier ce document

    1 page qui permette de modifier un document :

    -> identique à la page de saisie je suppose
    -> recup de l'id dans l'url (je sais pas faire)
    -> affichage pre-rempli des zones de saisies (je sais faire mais selon la methode _Post et pas selon l'id que je ne sais pas recuperer)

    -> un bouton "mise à jour du document"

    Idée :
    J'ai pensé à utiliser une même page pour la creation ou l'edition de document.
    avec les differences suivantes.:

    -> en creation :
    l'url est nouveau_document.php
    zones de saisies vide et implementation de la base par un INSERT
    -> en modification :
    l'url comporte l'id (je sais pas faire)
    zones de saisies pre-rempli selon l'id et implementation de la base par un UPDATE

    En résumé je bloque sur cette page de creation/edition de document.
    Et notament avec les conditions et la récupération/utilisation de l'Id.

    Je peux vous poster des extraits de code si vous le souhaitez.

    Merci d'avance pour votre aide.

  2. #2
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut
    Je vais vous poster les extraits de code que j'utilise mais j'ai du mal à "conditionner" :

    verification des champs à saisie obligatoire :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    if (empty($_POST['champ']))
      $message .= "champ : <br/>";
    // si un champ est vide, on affiche le message d'erreur
    if (strlen($message) > strlen($msg_erreur)) {
     
      echo $message;
     
    // sinon c'est ok
    } else {

    Implementation de la base :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
      $sql = "INSERT INTO document VALUES ('', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$fin."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$panne."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', '".$champ."', now())";
      $res = mysql_query($sql);
     
      if ($res) {
        echo $msg_ok;
      } else {
        echo mysql_error();
      }

    Affichage des informations saisies :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    <?php
    if (isset($_POST['champ'])) {
    ?>
        ID :
        <b><?php echo $_POST['champ']; ?></b>
        <br/>
    <?php

    Merci encore j'ai essayé de faire le plus clair possible.

  3. #3
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut
    J'aimerais ajouter que j'ai fouiné et trouvé comment recupérer l'id du dernier enregistrement.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    //recuperation de l'ID, le dernier crée a priori !
    mysql_query("INSERT INTO incident (product) values ('kossu')");
    printf("Le dernier ID inséré dans est le id %d\n", mysql_insert_id());
    ?>
    Ca m'empeche de comprendre comment recuperer l'id de l'enregistrement que je veux editer (en cliquant dessus dans une liste), ou autrement qu'en considérant qu'il est le dernier implémenté (si plus documents sont crées en même temps on peut imaginer une confusion non ?)

    Merci encore.

  4. #4
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    mysql_insert_id() est valable pour la connexion courante, donc si tu l'utilises juste après ta requête, tu auras le bon id

    Mais je comprend pas bien le fait d'utiliser cette fonction et ce que tu veux faire.

  5. #5
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut
    Bonjour Xunil .

    Je n'ai pas d'authentification sur ma page.
    Le seuil id présent dans ma base est l'id auto-attribué, pour chaque nouveau document.

    Donc quand le formulaire est validé, et implémenté dans la base, un id est attribué.
    Je le recupère grace au mysql_insert_id(), qui reprend le dernier id attribué.
    Je suis un peu parano je me suis imaginé que 2 personnes validaient un formulaire en même temps et que ça pouvait melanger les id , mais oublions et admettons que mysql_insert_id() me convienne.

    J'ai besoin de cet id :
    --> l'inscrire dans l'url (url rewriting)
    --> afficher les informations du document correspondant à l'id
    --> pre-remplir les champs du formulaire si un id est bien précisé, et realiser un update, plutôt qu'un creation (insert).

    et je sais pas comment faire

    désolé si je suis pas clair.

  6. #6
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Salut,

    C'est moi qui suis désolé, car je ne comprend pas pourquoi après une insertion, tu désires l'éditer juste après, j'ai pas du bien comprendre ce que tu veux faire.

  7. #7
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut
    Effectivement c'est plus simple si je t'explique le côté utilisateur

    1) etape 1, il remplit le formulaire
    2) etape 2, après verification des infos saisies, il recupere un resumé des infos saisies...
    3) il en a besoin pour les copier/coller dans une autre interface.
    4) cette interface va lui renvoyer un numero, une reference, qu'il doit inscrire sur le document, via le formulaire, qu'il faudra donc editer quasiement juste après.

    5) une fois le document complété avec cette reference, il clique et met à jour le document.

    precision : l'update n'est pas obligatoire, mais se fera dans 90 % des cas.
    Donc si pas d'update, j'aimerais que le document soit cree et l'update possible mais pas obligatoire.

    j'ai donc besoin de recuperer l'id pour afficher les bonnes infos, celles qui correspondent, et reediter juste derriere si besoin.

    C'est plus clair ?

    Merci encore en tout cas.

  8. #8
    Membre éclairé
    Inscrit en
    Septembre 2006
    Messages
    685
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 685
    Points : 658
    Points
    658
    Par défaut
    Donc, il faudrait que tu passes l'id dans une variable GET, ou POST(hidden).

    Mais c'est risqué, tu devrais quand même te servir d'une authentification par sessions, car n'importe qui bidouillant l'url ou modifiant le formulaire pourrait éditer n'importe quel ligne de la table.

  9. #9
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par Xunil
    Donc, il faudrait que tu passes l'id dans une variable GET, ou POST(hidden).
    oui mais je sais pas comment faire ?
    j'ai reussi à faire tout ce que je decris au dessus mais grace aux forums et tutoriels, sinon je suis carrément debutant et ça me parle pas ce que tu me proposes

    Citation Envoyé par Xunil
    Mais c'est risqué, tu devrais quand même te servir d'une authentification par sessions, car n'importe qui bidouillant l'url ou modifiant le formulaire pourrait éditer n'importe quel ligne de la table.
    cet outil que je met en place sera utilisé en interne par des collègues, donc pas de mauvaises intentions.
    dans un premier temps et comme je debute j'ai mis en priorité la fonctionnalité, quand ça marchera et que j'en aurais compris davantage je vais me pencher sur la securité, la mise ne place d'une authentification etc

  10. #10
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut Formulaire : Creer ou Editer ? + Transmettre id
    Bonjour à tous et merci d'avance pour votre aide.
    Je débute en php/mysql mais voilà ou j'en suis après quelques nuits de recherche et tentatives de conception.

    ce que je souhaite obtenir :

    1 page nouveau_doc.php (formulaire)

    Utilité : creer un nouveau doc

    a) si "première visite" sur le formulaire
    --> formulaire (champs vides)
    --> bouton validation qui renvoi vers voir_doc.php
    b) si arrivée par le boutton retour de la page de traitement
    --> formulaire avec champs pre-remplis


    1 page edition_doc.php (formulaire pre-rempli)

    utilité : mettre à jour un document/enregistrement

    --> formulaire (champs pre-rempli)
    --> bouton validation qui renvoi vers voir_doc.php


    1 page voir_doc.php (visualisation + traitement)

    utilité : traiter le formulaire, visualiser le resultat

    ==> si verification des champs NOK :
    --> affichage des champs indispensables/manquants (comme dans la page
    precédente)

    --> bouton de retour vers nouveau_doc.php avec champs pre-remplis !

    ==> si verification des champs ok :
    --> creation nouveau doc dans la bdd
    --> affichage resumé des informations saisies

    --> bouton de modification qui renvoi vers edition_doc.php avec les champs
    pre-remplis et recuperés dans la bdd !


    ==> si le traitement concerne une edition, j'aimerais qu'il realise un UPDATE et non un INSERT dans ma base.

    ---------------------------------------------------------
    Mon problème intervient donc au niveau des conditions
    (si ceci alors cela)
    Et au niveau de la transmission d'informations.

    Exemple concret des problèmes qui me bloquent :


    comment faire en sorte que lorsque je clique sur "modifier" (je suis sur voir_doc.php), il transmettre l'id de l'enregistrement en cours à ma page editer_doc.php, et que celle-ci puisse ainsi pre-remplir les champs correspondant à cet id ?

    mon fichier nouveau_doc.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
     
    <form action="voir_doc.php"  method="post">
     
    <p class="titre">Impact</p>
     
    <fieldset id="impact">
      <label>Criticite : </label>
        <select name="criticite">
          <option value="majeur" selected="selected">Majeur</option>
          <option value="mineur">Mineur</option>
          <option value="critique">Critique</option>
        </select><br />
      <label>Type de Panne : </label>
        <select name="panne">
          <option value="degrade">Service Degradé</option>
          <option value="totale">Perte Totale de Service</option>
          <option value="inconnue">Non Definie</option>
        </select><br />
    </fieldset>
     
    <p class="titre">References</p>
     
    <fieldset id="references">
      <label>Ticket TTM </label>
        <input type="text" name="ticketttm" size="30" /><br />
      <label>Ticket FT </label>
        <input type="text" name="ticketft" size="30" /><br />
    </fieldset>
     
     <p id="buttons">
      <input type="submit" value="Valider" />
    </p>
    </form>
    mon fichier voir_doc.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
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
     
    <?php
    //conexion a la base
    include('connection.php');
     
    //Gestion des messagfes d'erreur
    $msg_erreur = "Les informations suivantes sont indispensables pour déclarer un incident :<br/><br/>";
    $msg_ok = "L'incident a bien été déclaré !";
    $message = $msg_erreur;
     
    // vérification des champs
    if (empty($_POST['signal']))
      $message .= "Date & Heure de Signalement<br/>";
    if (empty($_POST['delai']))
      $message .= "Estimation du délai de Resolution<br/>";
    if (empty($_POST['criticite']))
      $message .= "criticite<br/>";
    if (empty($_POST['services']))
      $message .= "services impactes<br/>";
    if (empty($_POST['clients']))
      $message .= "nombre de clients impactes<br/>";
    if (empty($_POST['zone']))
      $message .= "zone geographique impactee<br/>";
    if (empty($_POST['panne']))
      $message .= "type de panne<br/>";
    if (empty($_POST['symptomes']))
      $message .= "symptomes probables pour le client<br/>";
     
    // si un champ est vide, on affiche le message d'erreur
    if (strlen($message) > strlen($msg_erreur)) { //Il suffit de faire une comparaison de longueur de chaine au lieu de revérifier par les empty. Si $message > $msg_erreur, c'est qu'il y a toujours l'erreur//
     
      echo $message;
     
    } else {
     
      foreach($_POST as $index => $valeur) {
        $$index = mysql_real_escape_string(trim($valeur));// on enleve les slashes et espace inutiles
      }
     
    //donnes a choix multiples (cumul des valeurs)
    $type = $_POST['type'];
    $sqltype = '';
    for ($i=0; $i<count($type); $i++)
    {
      $sqltype .= $type[$i];
      $sqltype .= ', ';
    }
     
    $slots = $_POST['slots'];
    $sqlslots = '';
    for ($i=0; $i<count($slots); $i++)
    {
      $sqlslots .= $slots[$i];
      $sqlslots .= ', ';
    }
     
    $services = $_POST['services'];
    $sqlservices = '';
    for ($i=0; $i<count($services); $i++)
    {
      $sqlservices .= $services[$i];
      $sqlservices .= ', ';
    }
     
    $symptomes = $_POST['symptomes'];
    $sqlsymptomes = '';
    for ($i=0; $i<count($symptomes); $i++)
    {
      $sqlsymptomes .= $symptomes[$i];
      $sqlsymptomes .= ', ';
    }
      //Si tout est bon, on insère dans la base de données//
      $sql = "INSERT INTO incident VALUES ('', '".$statut."', '".$signal."', '".$debut."', '".$delai."', '".$fin."', '".$criticite."', '".$element."', '".$sqltype."', '".$sqlslots."', '".$sqlservices."', '".$panne."', '".$clients."', '".$zone."', '".$sqlsymptomes."', '".$ticketttm."', '".$ticketft."', '".$alcatel."', '".$ticketneuft."', '".$ticketautre."', '".$comments."', now())";
      //On créé une variable $res qui vaut l'insertion dans la base de données//
      $res = mysql_query($sql);
     
      if ($res) {
        echo $msg_ok;
    ?>
      <br/><br/>
    RECAPITULATIF <br/><br/>
    <?php
    if (isset($_POST['id'])) {
    ?>
        ID :
        <b><?php echo $_POST['id']; ?></b>
        <br/>
    <?php
    }
    if (isset($_POST['element'])) {
    ?>
        Element Impacte :
        <b><?php echo $_POST['element']; ?></b>
        <br/>
    <?php
    }
    if (isset($_POST['signal'])) {
    ?>
        Heure de Signalisation
        <b><?php echo $_POST['signal']; ?></b>
        <br/>
    <?php
    }
    if (isset($_POST['sqlslots'])) {
    ?>
        Slots En Defaut :
        <b><?php echo $_POST['sqlslots']; ?></b>
        <br/>
    <?php
    }
    if (isset($_POST['delai'])) {
    ?>
        Delai Estime :
        <b><?php echo $_POST['delai']; ?></b>
        <br/>
    <?php
    }
    if (isset($_POST['ticketttm'])) {
    ?>
        TTM :
        <b><?php echo $_POST['ticketttm']; ?></b>
        <br/>
    <?php
    }
    ?>
    <?php
    if (isset($_POST['type'])) {
        echo "Type d'Equipement :";
        for ($i = 0, $c = count($_POST['type']); $i < $c; $i++) {
            echo " <b>" . $_POST['type'][$i] . "</b>";
        }
    }
     
    // Renvoie vrai si $option fait partie du résultat
    function est_selectionne($option) {
        if (!isset($_POST['type'])) {
                return FALSE;
        }
        for ($i = 0, $c = count($_POST['type']); $i < $c; $i++) {
            if ($_POST['type'][$i] == $option) {
                return TRUE;
            }
        }
        return FALSE;
    }
    ?>
    <br/>
    <?php
    $statut = isset($_POST['statut']) ? $_POST['statut'] : '';
     
    if ($statut) {
    ?>
        Statut :
        <b><?php echo $statut; ?></b>
        <br/><br/>
    <form action="edition_doc.php" method="post">
    <input type="submit" value="Modifier" />
    </form>
    <?php
    }
      } else {
        echo mysql_error();
      }
     
    }
    ?>
    mon fichier edition_doc.php

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?php
    //conexion a la base
    include('connection.php');
    ?>
    Je sais pas vraiment quoi mettre dedans pour récuperer les infos.

    J'aimerais bien transmettre l'id auto-incrémenter de page en page mais je n'y parviens pas.

    Merci d'avance.

  11. #11
    Futur Membre du Club
    Inscrit en
    Avril 2007
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 25
    Points : 5
    Points
    5
    Par défaut
    J'ai reussi a passer l'id dans l'url grace a la methode get... et a arriver dans un edition_document.php avec mes les données de l'enregistrement.

    Je reviens vers vous j'aurais forcement d'autres questions.
    Merci

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

Discussions similaires

  1. [AC-2007] Comment gérer des conditions dans un champ texte de formulaire?
    Par glooping dans le forum IHM
    Réponses: 17
    Dernier message: 28/07/2009, 18h05
  2. Réponses: 5
    Dernier message: 10/10/2007, 13h54
  3. Réponses: 1
    Dernier message: 10/03/2006, 22h50
  4. Réponses: 3
    Dernier message: 15/09/2004, 15h01

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