2 votes

PHP $_POST n'affiche pas les données - Exemple de code affiché

Je suis nouveau à PHP, j'ai essayé de travailler w3 écoles exemple de l'affichage des données sur les formulaires .

Il ne fonctionne jamais pour moi ... la page web n'affiche aucune donnée, j'ai essayé plusieurs forums et aussi SO qui n'ont jamais aidé ... Je continue à avoir la page vide !

Exemple #1 : Un simple contact de - code HTML

<form action="action.php" method="post">
 <p>Your name: <input type="text" name="name" /></p>
 <p>Your age: <input type="text" name="age" /></p>
 <p><input type="submit" /></p>
</form>

Exemple n° 2 : impression des données de notre formulaire

Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

La sortie attendue de ce script peut être :

Hi Joe. You are 22 years old.

Sortie réelle :

Hi . You are years old

Le paramètre Post n'affiche pas les données Toute aide est vraiment appréciée.

1voto

MonkeyZeus Points 4218

Dans votre <form> le tag "action" est l'endroit où vos données POST sont envoyées. Votre structure de fichier ressemble-t-elle à ceci ?

//index.php
<form action="action.php" method="POST"> // <-- make sure to capitalize method="POST" as well
 <p>Your name: <input type="text" name="name" /></p>
 <p>Your age: <input type="text" name="age" /></p>
 <p><input type="submit" /></p>
</form>

.

//action.php
Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

EDITAR

Il semble que vous obteniez des erreurs en PHP qui sont désactivées. Essayez ceci dans action.php et soumettez à nouveau la page.

//action.php
<?php
error_reporting(E_ALL);
?>
Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

EDIT 2

Il semblerait que vous obteniez des erreurs en PHP qui sont désactivées. Essayez ceci dans action.php et soumettez à nouveau la page.

//action.php
<?php
error_reporting(E_ALL);
?>
Hi <?php echo $_POST['name']; ?>.
You are <?php echo $_POST['age']; ?> years old.

1voto

Fred -ii- Points 23477

Quoi W3Schools (Traitement des formulaires en PHP) omettent de mentionner que que les (2) corps de code entiers doivent être soit dans un seul fichier, soit dans 2 fichiers distincts pour que cela fonctionne comme prévu.

Cependant, le code de W3Schools et celui de l'OP ne sont pas identiques et ont été modifiés, en utilisant les éléments suivants htmlspecialchars y (int)

Si vous souhaitez faire usage de htmlspecialchars faites ce qui suit dans votre welcome.php fichier :

<?php
$fname = htmlspecialchars($fname);
?>

Welcome <?php echo $_POST["fname"]; ?>!<br>
You are <?php echo (int)$_POST['age']; ?> years old.

Forme utilisée :

<html>
<body>

<form action="welcome.php" method="post">
Name: <input type="text" name="fname">
Age: <input type="text" name="age">
<input type="submit">
</form>

</body>
</html> 

Je n'ai vu aucune mention sur le site web de W3Schools concernant l'utilisation de htmlspecialchars o (int)

Hi <?php echo htmlspecialchars($_POST['name']); ?>.
You are <?php echo (int)$_POST['age']; ?> years old.

Si vous souhaitez faire usage de htmlspecialchars alors vous devez utiliser la syntaxe suivante :
$fname = htmlspecialchars( $fname ); Et placé dans <?php y ?> des balises telles que :

<?php
$fname = htmlspecialchars( $fname );
?>

NOTE : Je ne connais pratiquement rien au fonctionnement d'un serveur Web à partir de mon propre ordinateur, mais d'après les informations que j'ai trouvé ici sur SO mentionne que pour accéder à vos fichiers PHP, vous devez taper dans http://localhost dans la barre d'adresse de votre navigateur Web et le dossier dans lequel se trouve votre fichier.


Veuillez visiter cette réponse

StackOverflow ne m'a pas laissé insérer les codes sur cette page, pour une raison ou une autre.

0voto

Rahul Points 719
  1. "post o POST Les deux fonctionnent bien dans la balise de formulaire.

  2. Les éléments suivants devraient se trouver dans action.php

     Hi <?php echo htmlspecialchars($_POST['name']); ?>.
    
     You are <?php echo (int)$_POST['age']; ?> years old.
  3. Si vous obtenez toujours ceci, allez à php.ini et définissez vos erreurs à E_ALL et E_STRICT

et vérifiez quelle est l'erreur.

Il est fort probable que cela fonctionne maintenant...

0voto

Dans votre formulaire, vérifiez qu'il n'envoie pas de valeurs vides.

ÉTAPE 1 copier et coller le code suivant dans votre éditeur de texte et l'exécuter. Il vous permettra de tester les valeurs du formulaire sans rediriger la page.

Le code suivant doit se trouver dans index.php

<form action="action.php" method="POST" onsubmit="return validate()">
    <p>Your name: <input type="text" name="name" id="name"/></p>
    <p>Your age: <input type="text" name="age" id="age"/></p>
    <p><input type="submit" /></p>
</form>

<script type="text/javascript">
    function validate(){
        var name=document.getElementById("name").value;
        var age=document.getElementById("age").value;
        alert ("Name="+name+" age="+age);
        return false;
    }
</script>

Ce code vérifiera si les valeurs sont saisies correctement sans rediriger la page vers action.php.

Étape 2 Si vous obtenez le résultat souhaité avec le code précédent, vous pouvez remplacer la fonction de validation par le code ci-dessous. ( remplacer tout ce qui se trouve entre les balises script. )

    function validate(){
        var name=document.getElementById("name").value;
        var age=document.getElementById("age").value;
        if (name==null || name==""){
            return false;
        }
        if (age==null || age==""){
            return false;
        }
        return true;
    }

Si le nom et l'âge sont tous deux remplis dans le formulaire, l'envoi sera maintenant redirigé vers action.php.

Étape 3 Dans action.php, utilisez le code suivant.

<?
//These code goes in action.php
extract ($_POST);
echo "Hi $name. You are $age years old";
?>

édité avec des instructions à la demande de l'OP

0voto

mobilis Points 1

Assurez-vous simplement que votre formulaire est exécuté à partir de votre serveur ( http://localhost. .) et non l'emplacement du formulaire lui-même (file:///C:xampp..). Bon codage

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X