Mission Carthage

الرئيسية › الدروس › PHP: الاستمارات (formulaires)

PHP: الاستمارات و$_GET و$_POST والتثبّت من المعطيات

الفصل 31 · باك علوم الإعلامية

استقبل المعطيات متاع formulaire بـ $_POST و $_GET، ثبّت فيها، واربط برشا صفحات بـ require، روابط و redirections.

دروس هذا الفصل

  1. نبعثو formulaire
  2. نثبّتو في المعطيات
  3. برشا صفحات

الدرس 31.1 : نبعثو formulaire

12 دقيقة

الـ formulaire HTML يبعث الـ champs متاعو لصفحة PHP. الـ attribut action يقول أنهي صفحة تاخذهم، و method كيفاش (post ولا get)، وكل champ يتحطّ تحت الـ attribut name متاعو.

<form action="traitement.php" method="post">
  <input type="text" name="prenom">
  <input type="submit" name="envoyer" value="Envoyer">
</form>
<?php
$prenom = $_POST["prenom"];
echo "Bonjour $prenom";
?>

انتبه : الاسم في $_POST["..."] لازمو يكون بالضبط الـ attribut name متاع الـ champ. وإلّا PHP يكتب « Warning: Undefined array key ».

بـ PHP

شغّل السيت، عمّر الـ formulaire وابعثو: traitement.php تاخو الـ champs. زيد champ ville للـ formulaire وورّيه في traitement.php.

<?php
$nom = $_POST["nom"];
$prenom = $_POST["prenom"];
echo "<h1>Merci $prenom $nom</h1>";
echo '<p><a href="index.html">Retour au formulaire</a></p>';
?>

الدرس 31.2 : نثبّتو في المعطيات

12 دقيقة

الـ serveur عمرو ما يثق في اللي يوصلو: الـ champ ينجم يكون فارغ، فيه espaces، ولا نص في بلاصة عدد. نثبّتو قبل ما نستعملو.

<?php
$prenom = trim($_POST["prenom"]);
$note = $_POST["note"];
if (empty($prenom)) {
  echo "Le prénom est obligatoire";
} elseif (!is_numeric($note)) {
  echo "La note doit être un nombre";
} else {
  echo "Merci $prenom";
}
?>

نصيحة : الـ JavaScript يثبّت زادا في الـ formulaire قبل ما يتبعث، أما ينجم يتعدّى: التثبيت بـ PHP، في الـ serveur، هو اللي يحسب.

بـ PHP

هوني الـ formulaire يتبعث لنفس الصفحة متاعو. ابعثو فارغ، وبعد بعدد مكتوب بالحروف، وبعد بالصحيح.

<!DOCTYPE html>
<html lang="fr">
<head><meta charset="utf-8"><title>Contrôle</title></head>
<body>
<form action="" method="post">
  <p>Prénom : <input type="text" name="prenom"></p>
  <p>Note : <input type="text" name="note"></p>
  <p><input type="submit" name="envoyer" value="Envoyer"></p>
</form>
<?php
if (isset($_POST["envoyer"])) {
  $prenom = trim($_POST["prenom"]);
  $note = $_POST["note"];
  if (empty($prenom)) {
    echo "<p>Le prénom est obligatoire</p>";
  } elseif (!is_numeric($note)) {
    echo "<p>La note doit être un nombre</p>";
  } else {
    echo "<p>Merci $prenom</p>";
  }
}
?>
</body>
</html>

الدرس 31.3 : برشا صفحات

12 دقيقة

ندخّلو fichier: require

require "fonctions.php"; يدخّل fichier PHP آخر في البلاصة هاذيكا: الـ fonctions والمتغيّرات متاعو يوليو ينجمو يتستعملو. نحطّو فيه اللي يخدم في برشا صفحات (الاتصال بالـ base، الـ fonctions المشتركة). كان الـ fichier ناقص، الصفحة توقف.

روابط بـ paramètres

<?php
echo '<a href="detail.php?id=3">Voir le produit 3</a>';
?>

الرابط ينجم يهزّ قيم: detail.php?id=3. الصفحة detail.php تقراهم في $_GET["id"]. هكّا قائمة توصّل للصفحة متاع كل عنصر.

نحوّلو: header

<?php
header("Location: accueil.php");
exit;
?>

انتبه : header("Location: …") يبعث المتصفّح لصفحة أخرى. حطّ exit; بعدو مباشرة: وإلّا باقي السكريبت يتخدم زادا.

بـ PHP

شغّل السيت: index.php تستعمل fonction من fonctions.php، وكل رابط يحلّ detail.php بالـ id متاعو. زيد منتوج للجدول متاع fonctions.php.

<?php
require "fonctions.php";
echo "<h1>Nos produits</h1>";
foreach (produits() as $id => $p) {
  echo '<p><a href="detail.php?id=' . $id . '">' . $p . '</a></p>';
}
?>

تدرّب مجانًا

كل درس فيه 3 تمارين مجانية مع تلميحات باش تطبّق الفصل هذا مع هنّيبوت.

افتح الفصل في Mission Carthage جرّب في الكومبيلاتور أونلاين

← الفصل اللي قبل : PHP: أوّل السكريبتات · الفصل اللي بعد : PHP و MySQL →

كل الفصول · شوف فروض 2 تكنولوجيا المصلّحة

الدروس كتبناها لـ Mission Carthage على أساس البرنامج الرسمي. الأستاذ متاعك يبقى المرجع.