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 :

[PHP-JS] 1ere page = verif , deux = traiter le cas sur la base de donnée


Sujet :

Langage PHP

  1. #1
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut [PHP-JS] 1ere page = verif , deux = traiter le cas sur la base de donnée
    Bonjour , je vous explique mon pb.
    J'aimerai créer un formulaire en php:
    _ sur la 1ère page du formulaire , des champs de demande d'un url, d'un titre et d'un nombre de mot clé
    Quand on appuie sur le bouton submit , il vérifie si tous les champs ont bien été rempli , si c ok il va sur la "2ème page du formulaire" , et si c pas ok il réaffiche le formulaire avec les informations précédemment choisie et écrit en rouge a coté de chaque information pas remplis qu'elle n'a pas été rempli
    _sur la 2ème page , il récupère ces informations et les envoies dans la base de donnée

    J'ai aucun problème en tout ce qui concerne l'ouverture et l'écriture sur la base de donnée.
    Mon problème est plutôt basé sur "la vérification des données" , puis sur le passage vers la 2ème page.

    En effet , quand on utilise la méthode post :
    _soit quand on fait un post il va vers la 2ème page directement donc je ne peut pas vérifié.
    _soit on fait un post vers la 1ère page elle même , pour vérifier les donnée , et éventuellement la réafficher. mais si tt est ok , on peut pas aller directement vers la 2ème page


    Voila le code de la 1ère page (sans aucune vérification)
    Code HTML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <html>
        <body>
                  <form action="ajouterDocument.php" method="post"> 
                  Titre du site<input type="text" name="info[titre]"></br>
                  url du site<input type="text" name="info[url]"></br>
                  mot clé du site<input type="text" name="info[motcle]"></br>
                  <input type="submit" name="Ok">
                  </form>
        </body>   
    </html>


    le code de la 2ème page est du type (je ne détaille pas tout ce qui relève de la connexion à la base de donnée , écriture .. etc, car ya aucun pb sur ça)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <? php
                  $titre = $_POST['info']['titre'];
                  $url = $_POST['info']['url'];
     
                  // Connexion à la base de donnée
                  //Ecriture  , modif ... ect sur la base de donnée
                  // Fermeture de la base de donnée
    ?>

    Si quelqu'un aurait quelque solution
    _ il y en aurait une en Java script , mais je préfèrerait en php
    _ il y a la solution de tout mettre dans une seule page , mais c'est un exercice de cour relevé , où ils exigent de séparer en 2 pages.

  2. #2
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Salut,
    tu peux faire ca avec les sessions et une redirection avec un header, tu fais toutes tes vérif en haut de page :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    if(isset($_POST['submit']) && check($_POST['info'])) {
    $_SESSION['info'] = $_POST['info'];
    header("Location: traitement.php");
    }
    else{
    afficheFormulaire();
    }
    Sans oublier de supprimer les variables de session à la fin de ton traitement.
    Sans JS et pas en GET, il me semble que c'est la solution la plus simple.
    Bye
    Vive les roues en pierre

  3. #3
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Marche pas
    La redirection ne fonctionne pas sur mon site , je c pas si ça vient de l'hébergeur : multimania , car ils insèrent des pubs dans la page , ça bloque peut être la redirection.
    Désespéré , quels sont les autres méthodes pour vérifié et passer à l'autre page (get , java ... ? ) et qu'elle est leurs fiabilité?
    merçi

  4. #4
    Membre averti Avatar de sohnic
    Femme Profil pro
    bioinfo
    Inscrit en
    Mai 2003
    Messages
    426
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : bioinfo

    Informations forums :
    Inscription : Mai 2003
    Messages : 426
    Points : 434
    Points
    434
    Par défaut
    Bonjour,
    L'autre solution est de faire un fichier unique qui contient le formulaire et sa reponse.
    En te basant sur les sessions et quelques if, tu peux dire à ton script soit d'afficher le formulaire (vide ou prérempli), soit de traiter les données reçues.

    Sohnic
    http://www.noctinfo.fr/

    (\ _ /)
    (='.'=) Voici Lapinou. Aidez-le à conquérir le monde en le reproduisant.
    (")-(")

  5. #5
    Membre émérite Avatar de Djakisback
    Profil pro
    Inscrit en
    Février 2005
    Messages
    2 021
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 2 021
    Points : 2 278
    Points
    2 278
    Par défaut
    Il faut pas qu'il y ait de html avant un header, normalement tu as un warning quand c'est le cas mais les erreurs sont sans doute désactivées. Tu peux essayer de mettre que le header dans une page pour être sur que le problème vient de là :

    unpage.php--
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <?php
    header("Location: uneautrepage.php");
    ?>
    si ca fonctionne c'est que tu as surement envoyé du html avant le header. (à moins que tu sois sur que la fonction header soit désactivée ^^)
    Vive les roues en pierre

  6. #6
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut Autre technique préférable
    Ben j'ai essayé avec rien dedans et ça bug, vu k'ils rajoutent des pubs dans mon code , jpense que c'est normal. Conclusion la redirection complique et engendre trop de problème , donc je v plutot tout mettre dans une seule page , et si jamé ça leurs convients pas , soit :
    _ pas de vérification
    _ utilisation du javascript (mais ça j'y connait pas grand chose , et je trouve moin efficace , et ça peut poser des problèmes pour ceux qui n'ont pas de javascript installé ou fonctionnel)

    merçi quand même

    Ou alors si kan tout est vérifié sur la première page , j'affiche un récapitulatif de la page , avec un post qui dirige vers la 2ème page (qui envoie les donnée à la base ) et un seul bouton submit avec du genre "confirmer les informations

    Voici les 2 codes (en y mettant , sans détaillé , juste pour traiter le pb)

    Code de la premère page (saisie.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
    <html>
        <body>
                  if( //tout est ok)
                  {
                  <form action="ajouterDocument.php" method="post"> 
                  echo "votre titre est :";
                  echo $_POST['info']['titre'];
                     //etc pour tte les infos
                  <input type="submit" name="Valider">
                  }
                  else
                  {
                  //Je ne détaille pas les vérification et les réafichage , je montre 
                  //juste le code nécessaire
                  <form action="saisie.php" method="post"> 
                  Titre du site<input type="text" name="info[titre]"></br>
                  url du site<input type="text" name="info[url]"></br>
                  mot clé du site<input type="text" name="info[motcle]"></br>
                  <input type="submit" name="Ok">
                   }
                  </form>
        </body>   
    </html>
    Code de la 2ème page (ajouterDocument.php):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <? php
                  $titre = $_POST['info']['titre'];
                  $url = $_POST['info']['url'];
     
                  // Connexion à la base de donnée
                  //Ecriture  , modif ... ect sur la base de donnée
                  // Fermeture de la base de donnée
    ?>
    Mais es ce que cela fonctionne ? vu que j'accede à la page avec le 2ème post , qui n'a aucun input. Les infos du premier post sont elles récupérés ?? Ou alors dois je obligatoirement passé par une autre méthode pour aller à la 2ème page (variable de saision ???)

  7. #7
    Futur Membre du Club
    Inscrit en
    Mai 2007
    Messages
    9
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 9
    Points : 7
    Points
    7
    Par défaut
    J'ai fait un test avec 2 pages :
    _ test.php qui est la 1ère page
    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
    <html>   
        <body>
    	    <?php
    		if($_POST['info']['titre'] <> "")
    		{
    			echo "<form action=\"reponse.php\" method=\"post\"><br>";
    			echo "	Votre titre est ";
    			echo $_POST['info']['titre'];
    			echo ", voules vous confirmer ?<br>";
    			echo "	<input type=\"submit\" name=\"valide\">";
    			echo "</form>";
    		}
    		else
    		{
    			echo "<form action=\"test.php\" method=\"post\">";
    			echo "	Titre du site<input type=\"text\" name=\"info[titre]\"></br>";
    			echo "<input type=\"submit\" name=\"Ok\">";
    		}
    		?>
        </body>   
    </html>
    _ reponse.php qui est la 2ème page
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    <html>   
        <body>
    		<?php
    		echo "Vous avez dit : ";
    		echo $_POST['info']['titre'];
    		echo " comme titre !";
    		?>
    	</body>   
    </html>
    Et conclusion la variable $_POST['info']['titre'] n'est pas récupéré dans la 2ème page. Donc je vais devoir tout mettre dans la 1ère page , sauf si quelqu'un d'autre a une autre solution.

  8. #8
    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 : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    salut

    Tu peux utiliser les champs cachés pour renvoyer les variables sur ton formulaire après vérification. En reprenant ton code test.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
    <html> 
    <body>
    <?php
    if($_POST['info']['titre'] <> "")
    {
    echo "<form action=\"reponse.php\" method=\"post\"><br>";
    echo " Votre titre est ";
    echo $_POST['info']['titre'];
    echo ", voules vous confirmer ?<br>";
    echo "<input type=\"hidden\" name=\"info[titre]\" value=\"$_POST['info']['titre']\">";
    echo " <input type=\"submit\" name=\"valide\">";
    echo "</form>";
    }
    else
    {
    echo "<form action=\"test.php\" method=\"post\">";
    echo " Titre du site<input type=\"text\" name=\"info[titre]\"></br>";
    echo "<input type=\"submit\" name=\"Ok\">";
    }
    ?>
    </body> 
    </html>
    Et au fait
    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]

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

Discussions similaires

  1. Deux sites pour accéder à la meme base de données
    Par boukhali dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 29/09/2011, 15h26
  2. Réponses: 2
    Dernier message: 07/05/2010, 11h28
  3. Réponses: 4
    Dernier message: 08/09/2009, 17h07
  4. Réponses: 10
    Dernier message: 25/11/2007, 10h30
  5. [AJAX] lier deux listes déroulantes alimenté par une base de données (Mysql)
    Par arnaudperfect dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 23/04/2007, 01h06

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