اذهب إلى المحتوى

السؤال

نشر

احتاج الى كود... فيه 5  خيارات كل خيار عنده الضغط عليه يظهر حقل إضافة صورة وعند ارسال الصورة كل صورة تذهب إلى عامود محدد... يعني أيضآ نحتاج 5 حقول مع سلكت 5 خيارات فيه... 

العامود الأول hoos1 

العامود الثاني hoos2

العامود الثالث hoos3

العامود الرابع hoos4

العامود الخامس hoos5

Recommended Posts

  • 0
نشر

ستحتاج إلى حلقة للتكرار وعرض الخيارات الخمسة، ثم حلقة أخرى في PHP للتكرار على تلك الحقول، وعليك تحديث البيانات الخاصة باستعلام قاعدة البيانات لوضع الصورة في العمود المناسب.

<body>

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  for ($i = 1; $i <= 5; $i++) {

    if (isset($_FILES["image" . $i]) && $_FILES["image" . $i]["error"] == 0) {

      $image_name = $_FILES["image" . $i]["name"];
      $image_tmp = $_FILES["image" . $i]["tmp_name"];

      move_uploaded_file($image_tmp, "uploads/" . $image_name);

      $sql = "UPDATE table_name SET hoos" . $i . " = '$image_name' WHERE id = id_name";

      if ($conn->query($sql) === TRUE) {
        echo "تم تحميل الصورة " . $i . " بنجاح.<br>";
      } else {
        echo "حدث خطأ أثناء تحميل الصورة " . $i . ": " . $conn->error . "<br>";
      }
    }
  }

  $conn->close();
}

?>

<form method="post" enctype="multipart/form-data">
  <?php
  
  for ($i = 1; $i <= 5; $i++) {
    echo "
      <label for='option" . $i . "'>الخيار " . $i . ":</label>
      <select name='option" . $i . "'>
        <option value=''>اختر</option>
        <option value='option1'>الخيار 1</option>
        <option value='option2'>الخيار 2</option>
        <option value='option3'>الخيار 3</option>
      </select>
      <input type='file' name='image" . $i . "'><br><br>
    ";
  }
  ?>
  <input type="submit" value="إرسال">
</form>

</body>

Snag_148698f0.png.f1582e7baee89e837676c6acf2dddecb.png

عامًة وجود خمسة أعمدة منفصلة (hoos1، hoos2، ... hoos5) لخمس صور محتملة تصميم غير مرن وغير قابل للتطوير مستقبلاً.

  • 0
نشر

لماذا تريد 5 حقول مع 5 إختيارات ؟! إذا كان فقط سيتم رفع ملف واحد وإختيار خيار واحد حيث أن هذا النظام خاطئ وليس جيدا من حيث قاعدة البيانات التي تحجز أعمدة فارغة دون داعي ومن حيث كتابة أكواد كثيرة جدا ومستقبلا إذا أردت إضافة خيار جديد سيتوجب عليك إضافة عمود في قاعدة البيانات مع إضافة خيار أخر وحقل أخر و إضافة رفع الملف الجديد في الخادم .

يمكنك إضافة فقط عمودين في قاعدة البيانات عمود خاص بالإختيار الذى تم إختياره وعمود أخر بمكان الصورة . أى مثلا عمود option مع عمود hoss .

والآن هذا ملف الواجهة الأمامية html :

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <label for="option">من فضلك إختر من التالي:</label>
        <select id="option" name="option">
            <option value="">اختر...</option>
            <option value="1">الخيار الأول</option>
            <option value="2">الخيار الثاني</option>
          <option value="3">الخيار الثاني</option>
          <option value="4">الخيار الثاني</option>
          <option value="5">الخيار الثاني</option>
        </select>

        <div>
            <label for="image">حقل الصورة:</label>
            <input type="file" name="image" accept="image/*">
        </div>

        <button type="submit">إرسال</button>
    </form>
</body>
</html>

وهذا هو كود الواجهة الخلفية upload.php :

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $option = $_POST["option"];
    if ($option !in_array($option, [1,2,3,4,5])) {
        echo "من فضلك إختر خيار صحيح";
        die();
    }
  
    $path = "img". $option ."/";
    $targetFile = $path . basename($_FILES["image"]["name"]);
 
    // الاتصال بقاعدة البيانات
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "db_name";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("فشل الاتصال: " . $conn->connect_error);
    }

   
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $targetFile)) {
        $sql = "INSERT INTO table_name (hoss$option) VALUES ('$targetFile')";

        if ($conn->query($sql) === TRUE) {
            echo "تم رفع الملف بنجاح";
        } else {
            echo "عذراً، حدث خطأ أثناء رفع الملف.";
            die();
        }
        $conn->close();
    } else {
        echo "عذراً، حدث خطأ أثناء رفع الملف.";
    }
}

 

  • 0
نشر
بتاريخ 14 دقائق مضت قال محمد عاطف17:

لماذا تريد 5 حقول مع 5 إختيارات ؟! إذا كان فقط سيتم رفع ملف واحد وإختيار خيار واحد حيث أن هذا النظام خاطئ وليس جيدا من حيث قاعدة البيانات التي تحجز أعمدة فارغة دون داعي ومن حيث كتابة أكواد كثيرة جدا ومستقبلا إذا أردت إضافة خيار جديد سيتوجب عليك إضافة عمود في قاعدة البيانات مع إضافة خيار أخر وحقل أخر و إضافة رفع الملف الجديد في الخادم .

يمكنك إضافة فقط عمودين في قاعدة البيانات عمود خاص بالإختيار الذى تم إختياره وعمود أخر بمكان الصورة . أى مثلا عمود option مع عمود hoss .

والآن هذا ملف الواجهة الأمامية html :

<!DOCTYPE html>
<html lang="ar">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
    <form action="upload.php" method="post" enctype="multipart/form-data">
        <label for="option">من فضلك إختر من التالي:</label>
        <select id="option" name="option">
            <option value="">اختر...</option>
            <option value="1">الخيار الأول</option>
            <option value="2">الخيار الثاني</option>
          <option value="3">الخيار الثاني</option>
          <option value="4">الخيار الثاني</option>
          <option value="5">الخيار الثاني</option>
        </select>

        <div>
            <label for="image">حقل الصورة:</label>
            <input type="file" name="image" accept="image/*">
        </div>

        <button type="submit">إرسال</button>
    </form>
</body>
</html>

وهذا هو كود الواجهة الخلفية upload.php :

<?php
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    $option = $_POST["option"];
    if ($option !in_array($option, [1,2,3,4,5])) {
        echo "من فضلك إختر خيار صحيح";
        die();
    }
  
    $path = "img". $option ."/";
    $targetFile = $path . basename($_FILES["image"]["name"]);
 
    // الاتصال بقاعدة البيانات
    $servername = "localhost";
    $username = "root";
    $password = "";
    $dbname = "db_name";

    $conn = new mysqli($servername, $username, $password, $dbname);

    if ($conn->connect_error) {
        die("فشل الاتصال: " . $conn->connect_error);
    }

   
    if (move_uploaded_file($_FILES["image"]["tmp_name"], $targetFile)) {
        $sql = "INSERT INTO table_name (hoss$option) VALUES ('$targetFile')";

        if ($conn->query($sql) === TRUE) {
            echo "تم رفع الملف بنجاح";
        } else {
            echo "عذراً، حدث خطأ أثناء رفع الملف.";
            die();
        }
        $conn->close();
    } else {
        echo "عذراً، حدث خطأ أثناء رفع الملف.";
    }
}

 

شكرآ جزيلاً على توضيح لكن حقيقة كل خيار يحتاج عامود توضع فيه الصورة الخاصة فيه كل خيار يختلف عن الاخر 

بتاريخ 25 دقائق مضت قال Mustafa Suleiman:

ستحتاج إلى حلقة للتكرار وعرض الخيارات الخمسة، ثم حلقة أخرى في PHP للتكرار على تلك الحقول، وعليك تحديث البيانات الخاصة باستعلام قاعدة البيانات لوضع الصورة في العمود المناسب.

<body>

<?php

if ($_SERVER["REQUEST_METHOD"] == "POST") {

  for ($i = 1; $i <= 5; $i++) {

    if (isset($_FILES["image" . $i]) && $_FILES["image" . $i]["error"] == 0) {

      $image_name = $_FILES["image" . $i]["name"];
      $image_tmp = $_FILES["image" . $i]["tmp_name"];

      move_uploaded_file($image_tmp, "uploads/" . $image_name);

      $sql = "UPDATE table_name SET hoos" . $i . " = '$image_name' WHERE id = id_name";

      if ($conn->query($sql) === TRUE) {
        echo "تم تحميل الصورة " . $i . " بنجاح.<br>";
      } else {
        echo "حدث خطأ أثناء تحميل الصورة " . $i . ": " . $conn->error . "<br>";
      }
    }
  }

  $conn->close();
}

?>

<form method="post" enctype="multipart/form-data">
  <?php
  
  for ($i = 1; $i <= 5; $i++) {
    echo "
      <label for='option" . $i . "'>الخيار " . $i . ":</label>
      <select name='option" . $i . "'>
        <option value=''>اختر</option>
        <option value='option1'>الخيار 1</option>
        <option value='option2'>الخيار 2</option>
        <option value='option3'>الخيار 3</option>
      </select>
      <input type='file' name='image" . $i . "'><br><br>
    ";
  }
  ?>
  <input type="submit" value="إرسال">
</form>

</body>

Snag_148698f0.png.f1582e7baee89e837676c6acf2dddecb.png

عامًة وجود خمسة أعمدة منفصلة (hoos1، hoos2، ... hoos5) لخمس صور محتملة تصميم غير مرن وغير قابل للتطوير مستقبلاً.

شكراً جزيلاً جزاك الله خير الجزاء 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...