عبدالله العبدالله نشر 12 نوفمبر 2023 أرسل تقرير نشر 12 نوفمبر 2023 لدي جدول واريد الاستعلام يقوم بالبحث عن المواد المتبقية للطالب مثلا طالب لديه مقرر1 ومقرر2 ومقرر3 ومقرر4 عند الضعط على بحث يقوم بطباعة الطلاب الذين لديهم مقرر1و2و3و4 مثل الي في الصورة شرح المطلوب <?php $host="localhost"; $user="root"; $pass=""; $db="res"; $con=mysqli_connect($host,$user,$pass,$db); ?> <div align='center'> <form action='' method='post'> <input type='text' name='search'><br> <input type='text' name='search1'><br> <input type='text' name='search2'><br> <input type='text' name='search3'><br> <input type='submit' name='btn_search' value='Search'> </form> <?php if (isset($_POST["btn_search"])) { ?> <table border='5'> <tr> <th>رقم المتدرب </th> <th>اسم المتدرب</th> <th>التخصص </th> <th>المعدل </th> <th>رمز المقرر </th> <th>اسم المقرر </th> <th>الواحدات المعتمدة </th> </tr> <?php $str = $_POST["search"]; $str1 = $_POST["search1"]; $str2 = $_POST["search2"]; $str3 = $_POST["search3"]; $sh=mysqli_query($con,"SELECT id_trainee,name,specialty,gpa,ramz,name_mogrr,credit FROM `tr1` WHERE ramz IN ($str2,'$str3') "); //$sh=mysqli_query($con,"SELECT id_trainee,name,specialty,gpa,ramz,name_mogrr,credit FROM `tr1` WHERE id_trainee like '%$str%' and ramz in like'%$str2%','%$str3%' "); // $sh=mysqli_query($con,"SELECT id_trainee,name,specialty,gpa,ramz,name_mogrr,credit FROM `tr1` WHERE id_trainee between '$str' and '$str1' and '$str2'"); while($row = mysqli_fetch_array($sh)){ ?> <tr> <td> <?php echo $row['id_trainee']?></td> <td> <?php echo $row['name']?></td> <td> <?php echo $row['specialty']?></td> <td> <?php echo $row['gpa']?></td> <td> <?php echo $row['ramz']?></td> <td> <?php echo $row['name_mogrr']?></td> <td> <?php echo $row['credit']?></td> </tr> <?php } } ?> test1.php 1 اقتباس
0 Khaled Osama3 نشر 12 نوفمبر 2023 أرسل تقرير نشر 12 نوفمبر 2023 الاستعلام الحالي يبحث فقط عن الطلاب المسجلين في مقررين محددين، لكن للبحث عن الطلاب الذين يدرسون جميع المقررات المحددة هناك يلزم تعديل الاستعلام لكي يتمكن من العثور على الطلاب المسجلين في جميع المقررات المذكورة، بدلا من البحث عن مقررين فقط. <?php $host="localhost"; $user="root"; $pass=""; $db="res"; $con=mysqli_connect($host,$user,$pass,$db); ?> <div align='center'> <form action='' method='post'> <input type='text' name='search'><br> <input type='text' name='search1'><br> <input type='text' name='search2'><br> <input type='text' name='search3'><br> <input type='submit' name='btn_search' value='Search'> </form> <?php if (isset($_POST["btn_search"])) { ?> <table border='5'> <tr> <th>رقم المتدرب </th> <th>اسم المتدرب</th> <th>التخصص </th> <th>المعدل </th> <th>رمز المقرر </th> <th>اسم المقرر </th> <th>الواحدات المعتمدة </th> </tr> <?php $str = $_POST["search"]; $str1 = $_POST["search1"]; $str2 = $_POST["search2"]; $str3 = $_POST["search3"]; $sh=mysqli_query($con, "SELECT id_trainee, name, specialty, gpa, ramz, name_mogrr, credit FROM `tr1` WHERE id_trainee LIKE '%$str%' AND ramz IN ('$str', '$str1', '$str2', '$str3') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 4"); while($row = mysqli_fetch_array($sh)){ ?> <tr> <td> <?php echo $row['id_trainee']?></td> <td> <?php echo $row['name']?></td> <td> <?php echo $row['specialty']?></td> <td> <?php echo $row['gpa']?></td> <td> <?php echo $row['ramz']?></td> <td> <?php echo $row['name_mogrr']?></td> <td> <?php echo $row['credit']?></td> </tr> <?php } } ?> </table> </div> هذا التعديل يستخدم `GROUP BY` مع `HAVING COUNT(DISTINCT ramz) = 4` للبحث عن الطلاب الذين لديهم جميع المقررات المحددة. اقتباس
0 عبدالله العبدالله نشر 13 نوفمبر 2023 الكاتب أرسل تقرير نشر 13 نوفمبر 2023 بتاريخ On 12/11/2023 at 15:05 قال khaleddoosama: الاستعلام الحالي يبحث فقط عن الطلاب المسجلين في مقررين محددين، لكن للبحث عن الطلاب الذين يدرسون جميع المقررات المحددة هناك يلزم تعديل الاستعلام لكي يتمكن من العثور على الطلاب المسجلين في جميع المقررات المذكورة، بدلا من البحث عن مقررين فقط. <?php $host="localhost"; $user="root"; $pass=""; $db="res"; $con=mysqli_connect($host,$user,$pass,$db); ?> <div align='center'> <form action='' method='post'> <input type='text' name='search'><br> <input type='text' name='search1'><br> <input type='text' name='search2'><br> <input type='text' name='search3'><br> <input type='submit' name='btn_search' value='Search'> </form> <?php if (isset($_POST["btn_search"])) { ?> <table border='5'> <tr> <th>رقم المتدرب </th> <th>اسم المتدرب</th> <th>التخصص </th> <th>المعدل </th> <th>رمز المقرر </th> <th>اسم المقرر </th> <th>الواحدات المعتمدة </th> </tr> <?php $str = $_POST["search"]; $str1 = $_POST["search1"]; $str2 = $_POST["search2"]; $str3 = $_POST["search3"]; $sh=mysqli_query($con, "SELECT id_trainee, name, specialty, gpa, ramz, name_mogrr, credit FROM `tr1` WHERE id_trainee LIKE '%$str%' AND ramz IN ('$str', '$str1', '$str2', '$str3') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 4"); while($row = mysqli_fetch_array($sh)){ ?> <tr> <td> <?php echo $row['id_trainee']?></td> <td> <?php echo $row['name']?></td> <td> <?php echo $row['specialty']?></td> <td> <?php echo $row['gpa']?></td> <td> <?php echo $row['ramz']?></td> <td> <?php echo $row['name_mogrr']?></td> <td> <?php echo $row['credit']?></td> </tr> <?php } } ?> </table> </div> هذا التعديل يستخدم `GROUP BY` مع `HAVING COUNT(DISTINCT ramz) = 4` للبحث عن الطلاب الذين لديهم جميع المقررات المحددة. احسنت الله يجزاك خير لو بغيت اضافةشرط اخرى على عمود name_mogrr حيث يحدد خيار اسم التخصص لكي يستعبد التخصص الاخرى المشابهه لنفس المواد 1 اقتباس
0 Mustafa Suleiman نشر 13 نوفمبر 2023 أرسل تقرير نشر 13 نوفمبر 2023 بتاريخ 4 دقائق مضت قال عبدالله العبدالله: احسنت الله يجزاك خير لو بغيت اضافةشرط اخرى على عمود name_mogrr حيث يحدد خيار اسم التخصص لكي يستعبد التخصص الاخرى المشابهه لنفس المواد استخدم EXISTS لفحص وجود تخصص آخر يحتوي على نفس المواد، أي تحديث الاستعلام كالتالي: <?php $host="localhost"; $user="root"; $pass=""; $db="res"; $con=mysqli_connect($host,$user,$pass,$db); ?> <div align='center'> <form action='' method='post'> <input type='text' name='search'><br> <input type='text' name='search1'><br> <input type='text' name='search2'><br> <input type='text' name='search3'><br> <input type='text' name='search_specialty'><br> <input type='submit' name='btn_search' value='Search'> </form> <?php if (isset($_POST["btn_search"])) { ?> <table border='5'> <tr> <th>رقم المتدرب </th> <th>اسم المتدرب</th> <th>التخصص </th> <th>المعدل </th> <th>رمز المقرر </th> <th>اسم المقرر </th> <th>الواحدات المعتمدة </th> </tr> <?php $str = $_POST["search"]; $str1 = $_POST["search1"]; $str2 = $_POST["search2"]; $str3 = $_POST["search3"]; $str_specialty = $_POST["search_specialty"]; $sh=mysqli_query($con, "SELECT t1.id_trainee, t1.name, t1.specialty, t1.gpa, t1.ramz, t1.name_mogrr, t1.credit FROM `tr1` t1 WHERE t1.id_trainee LIKE '%$str%' AND t1.ramz IN ('$str', '$str1', '$str2', '$str3') AND EXISTS ( SELECT 1 FROM `tr1` t2 WHERE t2.id_trainee = t1.id_trainee AND t2.name_mogrr = '$str_specialty' AND t2.ramz IN ('$str', '$str1', '$str2', '$str3') ) GROUP BY t1.id_trainee HAVING COUNT(DISTINCT t1.ramz) = 4"); while($row = mysqli_fetch_array($sh)){ ?> <tr> <td> <?php echo $row['id_trainee']?></td> <td> <?php echo $row['name']?></td> <td> <?php echo $row['specialty']?></td> <td> <?php echo $row['gpa']?></td> <td> <?php echo $row['ramz']?></td> <td> <?php echo $row['name_mogrr']?></td> <td> <?php echo $row['credit']?></td> </tr> <?php } } ?> </table> </div> تم إضافة متغير search_specialty لاستيفاء اسم التخصص الإضافي الذي تريد البحث عنه، ثم استخدام EXISTS في الاستعلام للتحقق مما إذا كان هناك تخصص آخر يحتوي على نفس المواد. اقتباس
0 عبدالله العبدالله نشر 17 نوفمبر 2023 الكاتب أرسل تقرير نشر 17 نوفمبر 2023 شاكر لك جزيل الشكر فضلا المساعدة حيث الكود التالي يعمل لكن بدون not in والمطلوب في not in هو استبعاد المواد التي داخل not in حيث يستعلم بشكل ادق ( مثال على ذلك اريد الطلاب الذي لديهم مواد التاليه داعم وانجل وداعم واسلم وشبكا بشرط ان لايوجد لديهم المواد التاليه حاسب وانجل وانجل وحاسب وحاسب) كيف الطريقة؟ <link rel="stylesheet" href="main.css"> <?php $host="localhost"; $user="root"; $pass=""; $db="res"; $con=mysqli_connect($host,$user,$pass,$db); ?> <div align='center'> <form action='' method='post'> <input class="button"type='submit' name='btn_search' value='مستوى رابع دعم فني '> <br><br> <button class="button" onclick="myfunction()">تصدير </button> <br><br> <a href="main.html" class="button">الرئــيـــســيــة</a> <br><br> </form> <?php if (isset($_POST["btn_search"])) { ?> <table border='5'> <tr> <th>رقم المتدرب </th> <th>اسم المتدرب</th> <th>التخصص </th> <th>المعدل </th> </tr> </tr> <?php $sh=mysqli_query($con, "SELECT id_trainee, name, specialty, gpa FROM `tr1` WHERE id_trainee LIKE '%4432%' AND ramz IN ( 'داعم - 221', 'انجل - 204', 'داعم - 151','اسلم - 101','شبكا - 121') AND ramz NOT IN('حاسب - 102', 'انجل - 102', 'انجل - 101','حاسب - 101','حاسب - 121') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 5"); while($row = mysqli_fetch_array($sh)){ ?> <tr> <td> <?php echo $row['id_trainee']?></td> <td> <?php echo $row['name']?></td> <td> <?php echo $row['specialty']?></td> <td> <?php echo $row['gpa']?></td> </tr> <?php } } ?> </table> </div> اقتباس
0 Mohammad Jumaa نشر 28 نوفمبر 2023 أرسل تقرير نشر 28 نوفمبر 2023 لإدراج المتغيرات $_POST في استعلامك، يجب أن تتأكد من أن القيم المدخلة من المستخدم تُعقم بشكل صحيح لمنع الهجمات من نوع SQL Injection والاستعلام الصحيح سيكون هو if (isset($_POST["btn_search"])) { $str = mysqli_real_escape_string($con, $_POST["search"]); $str1 = mysqli_real_escape_string($con, $_POST["search1"]); $str2 = mysqli_real_escape_string($con, $_POST["search2"]); $str3 = mysqli_real_escape_string($con, $_POST["search3"]); $query = " SELECT id_trainee, name, specialty, gpa FROM `tr1` WHERE ramz IN ('$str', '$str1', '$str2', '$str3') GROUP BY id_trainee HAVING COUNT(DISTINCT ramz) = 4 AND COUNT(*) = 4; "; $result = mysqli_query($con, $query); } اقتباس
السؤال
عبدالله العبدالله
لدي جدول واريد الاستعلام يقوم بالبحث عن المواد المتبقية للطالب مثلا طالب لديه مقرر1 ومقرر2 ومقرر3 ومقرر4 عند الضعط على بحث يقوم بطباعة الطلاب الذين لديهم مقرر1و2و3و4 مثل الي في الصورة
شرح المطلوب
test1.php
5 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.