Mission Carthage

الرئيسية › الدروس › PHP و MySQL

PHP وMySQL بـ mysqli: القراءة والإضافة والتعديل والحذف

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

اربط صفحة PHP بـ base MySQL بـ MySQLi: اقرا أسطر وورّيهم، زيد، بدّل وفسّخ أسطر من formulaire.

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

  1. نتّصلو ونقراو table
  2. نزيدو، نبدّلو، نفسّخو
  3. سيت صغير كامل

الدرس 32.1 : نتّصلو ونقراو table

14 دقيقة

صفحة PHP تحكي مع MySQL في ثلاثة مراحل: تتّصل بالـ base، تبعث requête SQL، وبعد تقرا النتيجة سطر بسطر.

<?php
$cnx = mysqli_connect("localhost", "root", "", "ecole");
$res = mysqli_query($cnx, "SELECT nom, prenom FROM eleve");
echo mysqli_num_rows($res) . " élèves";
while ($ligne = mysqli_fetch_array($res)) {
  echo "<p>" . $ligne["prenom"] . " " . $ligne["nom"] . "</p>";
}
mysqli_close($cnx);
?>

انتبه : النتيجة متاع requête موش جدول: echo $res["nom"] تعطي « Cannot use object of type mysqli_result as array ». لازم تقرا سطر بـ mysqli_fetch_array الأوّل.

بـ PHP

شغّل السيت: base.sql يصنع الـ base، وبعد index.php تورّي التلامذة في جدول. بدّل الـ requête باش تخلّي كان التلامذة اللي عندهم على الأقل 10.

<!DOCTYPE html>
<html lang="fr">
<head><meta charset="utf-8"><title>Élèves</title></head>
<body>
<h1>Les élèves</h1>
<?php
$cnx = mysqli_connect("localhost", "root", "", "ecole");
$res = mysqli_query($cnx, "SELECT nom, prenom, moyenne FROM eleve ORDER BY moyenne DESC");
echo "<p>" . mysqli_num_rows($res) . " élèves</p>";
echo "<table border='1'>";
while ($ligne = mysqli_fetch_array($res)) {
  echo "<tr><td>" . $ligne["nom"] . "</td><td>" . $ligne["prenom"] . "</td><td>" . $ligne["moyenne"] . "</td></tr>";
}
echo "</table>";
mysqli_close($cnx);
?>
</body>
</html>

الدرس 32.2 : نزيدو، نبدّلو، نفسّخو

14 دقيقة

<?php
$cnx = mysqli_connect("localhost", "root", "", "ecole");
$nom = $_POST["nom"];
$prenom = $_POST["prenom"];
mysqli_query($cnx, "INSERT INTO eleve (nom, prenom) VALUES ('$nom', '$prenom')");
echo mysqli_affected_rows($cnx) . " élève ajouté";
mysqli_close($cnx);
?>

كي يرفض MySQL

كان الـ requête غالطة (table موش معروفة، قيمة ممنوعة)، PHP 8 يوقف بـ « Uncaught mysqli_sql_exception » والميساج متاع MySQL. بـ mysqli_report(MYSQLI_REPORT_OFF); في الأوّل، mysqli_query ترجّع false في بلاصتها، و mysqli_error($cnx) تعطي الميساج.

نصيحة : اسم فيه apostrophe (L'Aube) يكسّر الـ requête: mysqli_real_escape_string($cnx, $titre) يحميه. هذا زادا اللي يمنع مستعمل ذكي من إنّو يدخّل SQL متاعو (injection SQL).

بـ PHP

شغّل السيت، زيد تلميذ بالـ formulaire، وبعد فسّخو بالرابط « supprimer » متاعو: القائمة تتبدّل، خاطر الـ base تبقى هي هي بين الصفحات.

<!DOCTYPE html>
<html lang="fr">
<head><meta charset="utf-8"><title>Élèves</title></head>
<body>
<form action="ajout.php" method="post">
  Nom : <input type="text" name="nom"> Prénom : <input type="text" name="prenom">
  <input type="submit" value="Ajouter">
</form>
<?php
$cnx = mysqli_connect("localhost", "root", "", "ecole");
$res = mysqli_query($cnx, "SELECT id, nom, prenom FROM eleve");
while ($l = mysqli_fetch_array($res)) {
  echo "<p>" . $l["prenom"] . " " . $l["nom"] . " <a href='supprimer.php?id=" . $l["id"] . "'>supprimer</a></p>";
}
?>
</body>
</html>

الدرس 32.3 : سيت صغير كامل

14 دقيقة

سيت الباك براتيك يجمع كل شي: صفحة HTML فيها formulaire (يتثبّت بالـ JavaScript)، صفحة PHP تسجّلو في الـ base، وصفحة تورّي ولا تلوّج في المعطيات.

نلوّجو بـ LIKE

<?php
$cnx = mysqli_connect("localhost", "root", "", "ecole");
$mot = $_POST["mot"];
$res = mysqli_query($cnx, "SELECT nom FROM eleve WHERE nom LIKE '%$mot%'");
if (mysqli_num_rows($res) == 0) {
  echo "Aucun élève trouvé";
}
while ($l = mysqli_fetch_row($res)) {
  echo $l[0] . "<br>";
}
?>

انتبه : سكّر الاتصال بـ mysqli_close($cnx) كان في الآخر: requête بعد التسكير تعمل غلطة.

بـ PHP

شغّل السيت ولوّج على Ben، وبعد a، وبعد اسم موش موجود.

<?php
$cnx = mysqli_connect("localhost", "root", "", "ecole");
$mot = $_POST["mot"];
$res = mysqli_query($cnx, "SELECT nom FROM eleve WHERE nom LIKE '%$mot%'");
if (mysqli_num_rows($res) == 0) {
  echo "Aucun élève trouvé";
}
while ($l = mysqli_fetch_row($res)) {
  echo $l[0] . "<br>";
}
echo '<p><a href="index.html">Nouvelle recherche</a></p>';
mysqli_close($cnx);
?>

تدرّب مجانًا

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

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

← الفصل اللي قبل : PHP: الاستمارات (formulaires)

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

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