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

السؤال

نشر

سلام عليكم

عندي مشكلتين مخي وقف عن ايجاد حل لهم

الاولى 

<label>نوع الألياف</label>

<div class="input-group">

<div class="input-group-prepend">

<span class="input-group-text" id="inputGroupPrepend"><i class="fa fa-th"></i></span>

</div>

<select class="form-control fiber-thread"  name="fiber-thread">

<option selected disabled value="<?php echo $user['fibersID']; ?> "><?php echo $user['fibersName']; ?> </option>

<?php

$result = $conn->query("SELECT * FROM fibers");

while ($row = $result->fetch_assoc()) {
	
echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>';

}

?>

</select>

دي صفحة ال update و انا حاطط انها يعرضلي نوع الالياف المختار قبل ذلك عادي جدا 

لما بحب اجي اغير اي حاجة تانية في الملف ، مثلا 

<div class="input-group">

<div class="input-group-prepend">

<span class="input-group-text" id="inputGroupPrepend"><i class="fa fa-th"></i></span>

</div>

<input type="text" class="form-control num-thread" required="required" name="num-thread" value="<?php echo $user['num']; ?>">

</div>

يغير النمرة عادي لكن يرجعلي تاني قيمة حقل نوع الالياف اللي هو موجود اصلا قبل كده و متحدد و مش عاوز اغيره من القايمه ، يرجعهولي صفر في الداتابيز ، بيشيله من الداتابيز خالص

يعني عشان اغير النمرة لازم افتح القائمه بتاعه نوع الالياف و اختار حاجة جديدة تتسجل في الداتابيز 

طيب يا سيدي الكود انا لا اريد ذلك ، طالما لم اقم بتغيير نوع الالياف من القائمة فضلا احتفظ بالاختيار القديم لا تقم بتغييره و قم بتعديل ما قمت به فقط

هذه هي المشكلة الأولى

المشكلة الثانية

<label>صورة</label>

<div class="input-group">

<div class="input-group-prepend">

<span class="input-group-text" id="inputGroupPrepend"><i class="fa fa-th"></i></span>

</div>

<input type="file" class="form-control thread-image" accept="image/*" >

</div>

نفس مشكلة القائمة ، لو لم اقم بتحديد صورة فالبرنامج لا يتعرف على المتغير image من الاساس و يقوم بحذف الصورة 

و هذا الخطأ من ال consol

Undefined variable: image in <b>C:\xampp\htdocs\gtms\functions\addAccessories.php</b> on line <b>103</b><br />

كيف استطيع اقناع الكود انه اقبل كل التعديلات و ما لم اقم بتعديله فاحتفظ ببياناته السابقة ؟؟

كود jQuery لتمرير البيانات

<script>//        thread
        (function() {

            'use strict';

            window.addEventListener('load', function() {

                var forms = document.getElementsByClassName('needs-validation-thread');

                var validation = Array.prototype.filter.call(forms, function(form) {

                    form.addEventListener('submit', function(event) {

                        // console.log(form.reportValidity());

                        if (form.checkValidity() === false) {

                            event.preventDefault();

                            event.stopPropagation();

                        } else {

                            var form_data = new FormData();


                           var name = $(".name").val(),
							
							   fiber = $(".fiber-thread").val(),

                                num = $(".num-thread").val(),

                                color = $(".degree-code[data='thread']").val(),

                                pantone = $(".panton-code[data='thread']").val(),

                                height = $(".height-thread").val(),

                                weight = $(".weight-thread").val(),

                                factory = $(".factory-thread").val(),

                                tprice = $(".tPrice-thread").val(),

                                mprice = $(".mPrice-thread").val();

                            var file_data = $(".thread-image").prop('files')[0];

                            form_data.append('type', "updatethread");
						    form_data.append('id', <?php echo $id; ?>);
							form_data.append('name', name);
                            form_data.append('fiber', fiber);
                            form_data.append('num', num);
                            form_data.append('color', color);
                            form_data.append('pantone', pantone);
                            form_data.append('height', height);
                            form_data.append('weight', weight);
                            form_data.append('factory', factory);
                            form_data.append('tprice', tprice);
                            form_data.append('mprice', mprice);
                            form_data.append('image', file_data);

                            //console.log(form_data);


                            $.ajax({

                                url: "functions/addAccessories.php",

                                dataType: 'text',

                                cache: false,

                                contentType: false,

                                processData: false,

                                data: form_data,

                                type: 'post',

                                success: function(data) {

                                    if (data == "done") {

                                        Swal.fire({

                                            icon: 'success',

                                            title: 'عمل رائع - تم التعديل ينجاح',

                                            confirmButtonText: 'موافق',

                                            showCloseButton: true

                                        }).then((result) => {

                                            if (result.isConfirmed) {

                                                location.reload();

                                            }

                                        })

                                    } else {

                                        Swal.fire({

                                            icon: 'error',

                                            title: 'حدث خطأ حاول مجددا',

                                            confirmButtonText: 'حسنا',

                                            showCloseButton: true

                                        });

                                        console.log(data);

                                    }

                                }

                            });

                        }

                        form.classList.add('was-validated');

                    }, false);

                });

            }, false);

        })();
        function added() {}

        $(".tPrice-thread , .height-thread , .weight-thread , .total-weight").on("keyup", function() {

            if ($(".moth[value='one']").is(":checked")) {

                var price = $(".tPrice-thread").val(),

                    height = $(".height-thread").val();

                $(".mPrice-thread").val(price / height);

            }else {

                var price = $(".tPrice-thread").val(),

                    weight = $(".weight-thread").val(),

                    total = $(".total-weight").val();

                var height = (10/weight)*total;

                $(".height-thread").val(height);

                $(".mPrice-thread").val(price / height);

            }


        });
		
		        $(".moth").change(function() {

            var moth = $(this).val();

            if (moth == "one") {

                $(".one").show();

                $(".two").hide();

                $(".height-thread").removeAttr("disabled");

            } else {

                $(".one").show();

                $(".two").show();

                $(".height-thread").attr("disabled","disabled");

            }

        });
		
		        $(".factories").change(function() {

            var factory = $(this).val();

            $(".factory-thread").val(factory);

            document.getElementsByClassName('close-factory')[0].click();


        });
		</script>

كود تعريف المتغيرات و امر update 

$id = $_POST['id'];

$name = $_POST['name'];

$fiber = $_POST['fiber'];

$num = $_POST['num'];

$color = $_POST['color'];

$pantone = $_POST['pantone'];

$height = $_POST['height'];

$weight = $_POST['weight'];

$factory = $_POST['factory'];

$tprice = $_POST['tprice'];

$mprice = $_POST['mprice'];

if (isset($_FILES['image']['name'])) {

$image = time() . $_FILES['image']['name'];

move_uploaded_file(

$_FILES["image"]["tmp_name"],

"../assets/images/threads/" . $image

);

$imageAdds = ",image='".$image."'";

}else {

$imageAdds = "";

}

$q = "UPDATE `thread` SET `name`='$name',`fiber`='$fiber',`num`='$num',`color`='$color',`pantone`='$pantone',`height`='$height',`weight`='$weight',`factory`='$factory',`tPrice`='$tprice',`mPrice`='$mprice',`image`='$image' WHERE thread.id =".$id.";";
$result = $conn->query($q);


if ($result) {

echo "done";

}

انتظر المساعدة فضلا

Recommended Posts

  • 1
نشر

لاحظ الإستعلام:

$q = "UPDATE `thread` SET `name`='$name',`fiber`='$fiber',`num`='$num',`color`='$color',`pantone`='$pantone',`height`='$height',`weight`='$weight',`factory`='$factory',`tPrice`='$tprice',`mPrice`='$mprice',`image`='$image' WHERE thread.id =".$id.";";

في حالة عدم تحقق الشرط:

if (isset($_FILES['image']['name'])) {

فإن المُتغير image لن يتم تعريفه لذلك أعطاك ذلك الخطأ.

و الحل إنشاء الإستعلام على أساس الصورة إن كانت موجودة فإن الإستعلام سيتضمن حقل الصورة إن لم تكن الصورة موجودة في الطلب فلا تقم بتضمين حقل الصورة في الإستعلام.

يعني ببساطة بهذا الشكل:

$id = $_POST['id'];

$name = $_POST['name'];

$fiber = $_POST['fiber'];

$num = $_POST['num'];

$color = $_POST['color'];

$pantone = $_POST['pantone'];

$height = $_POST['height'];

$weight = $_POST['weight'];

$factory = $_POST['factory'];

$tprice = $_POST['tprice'];

$mprice = $_POST['mprice'];

$q = "UPDATE `thread` SET `name`='$name',`fiber`='$fiber',`num`='$num',`color`='$color',`pantone`='$pantone',`height`='$height',`weight`='$weight',`factory`='$factory',`tPrice`='$tprice',`mPrice`='$mprice'";

if (isset($_FILES['image']['name'])) {
  
  // rename and upload image
  
  $q .= ",`image`='$image'";
  
}

$q .= " WHERE thread.id =".$id.";";

$result = $conn->query($q);


if ($result) {
  echo "done";
}


  

تقسيم الإستعلام و إنشاؤه بحيث يتضمن حقل الصورة إن كانت هناك صورة جديدة إن لم تكن هناك صورة جديدة لا نضيف الحقل للإستعلام. أعتقد أن المُشكلة الأولى نفس الفكرة.

  • 1
نشر
بتاريخ 9 دقائق مضت قال محمد المصري5:

رائع جدا استاذنا

اتصلحت مشكلة الصورة

لكن مشكلة القائمة ما زالت قائمة

قمت بتقليد الكود كالتالي

لكن اعطاني نفس الخطأ

 

قيمة المتغير fiber ماذا تكون في حالة لم تُعدل على القائمة؟ 

  • 0
نشر

للاسف لم تضبط

و اعتقد اننا بعيد ما عن الحل الصحيح في هذا الامر

السؤال لماذا لا يقرأ الكود القيمة الموجودة و المحددة مسبقا في القائمة

<option selected disabled value="<?php echo $user['fibersID']; ?> "><?php echo $user['fibersName']; ?> </option>

في مشكلة الصورة كنت اتلق خطئا من console و لا يتم ادخال الصورة اصلا

لكن مشكلة القائمة انه يعطي رسالة نجاح العملية لكن فعليا يقوم يتغيير القيمة في حقل fiber بالقيمة 0 (لانه حقل رقمي) و لا ادري من اين يأتي بهذه القيمة 

  • 0
نشر
بتاريخ 18 دقائق مضت قال محمد المصري5:

للاسف لم تضبط

و اعتقد اننا بعيد ما عن الحل الصحيح في هذا الامر

السؤال لماذا لا يقرأ الكود القيمة الموجودة و المحددة مسبقا في القائمة


<option selected disabled value="<?php echo $user['fibersID']; ?> "><?php echo $user['fibersName']; ?> </option>

في مشكلة الصورة كنت اتلق خطئا من console و لا يتم ادخال الصورة اصلا

لكن مشكلة القائمة انه يعطي رسالة نجاح العملية لكن فعليا يقوم يتغيير القيمة في حقل fiber بالقيمة 0 (لانه حقل رقمي) و لا ادري من اين يأتي بهذه القيمة 

هل قمت بحذف جزء التعديل الخاص بحقل fiber من الإستعلام لأني أظن أنك نسيته بنفس فكرة الصورة مسحناها من الإستعلام الأول و أضفناها في حال تحقق الشرط.

بخصوص القائمة 

بتاريخ 24 دقائق مضت قال محمد المصري5:

<option selected disabled value="<?php echo $user['fibersID']; ?> "><?php echo $user['fibersName']; ?> </option>

 

لماذا تضع له value وتقوم بتحديده؟

  • 0
نشر

اتحلت بفضل الله اخي

<option selected disabled 

المفروض اشيل disabled عشان اسمح للمتغير يقرا القيمة اللي معروضة 

و فعلا ظبطت بمجرد ما شلتها الحمد لله

و لو انه فعليا هي لم تحل لانه المتغير يأخذ نفس القيمة المعروضة و يقوم باعادة ادخالها من جديد

لكن القيمة لم تعد صفر

  • 0
نشر

هذا ما فهمته من المشكلة وهذا الحل حسب فهمي بفرض ان القيمة قبل التعديل تكون مخزنة في user['fibersID']$

<select class="form-control fiber-thread"  name="fiber-thread">

  <option disabled value="">Choose here</option>

  <?php

  $result = $conn->query("SELECT * FROM fibers");

  while ($row = $result->fetch_assoc()) {

    if($row['id'] == $user['fibersID']) {
      echo '<option selected value="' . $row['id'] . '">' . $row['name'] . '</option>';
    } else {
      echo '<option value="' . $row['id'] . '">' . $row['name'] . '</option>';
    }

  }

  ?>

</select>

و في ملف ال php تقوم بنفس الفكرة:

$id = $_POST['id'];

$name = $_POST['name'];

$fiber = $_POST['fiber'];

$num = $_POST['num'];

$color = $_POST['color'];

$pantone = $_POST['pantone'];

$height = $_POST['height'];

$weight = $_POST['weight'];

$factory = $_POST['factory'];

$tprice = $_POST['tprice'];

$mprice = $_POST['mprice'];

$q = "UPDATE `thread` SET `name`='$name',`num`='$num',`color`='$color',`pantone`='$pantone',`height`='$height',`weight`='$weight',`factory`='$factory',`tPrice`='$tprice',`mPrice`='$mprice'";

if (isset($fiber) && !empty($fiber)) {
  $q .= ",`fiber`='$fiber'";
}

if (isset($_FILES['image']['name'])) {
  
  // rename and upload image
  
  $q .= ",`image`='$image'";
  
}

$q .= " WHERE thread.id =".$id.";";

$result = $conn->query($q);


if ($result) {
  echo "done";
}

 

  • 0
نشر

الامر كله كان في اني مدي لاوبشن العرض قيمة و ده خطأ ، القيمة المفروض في اوبشن الاختيار لو حبيت احدث و ده انا عامله فعلا

تعطيل ال option الخاص بالعرض مع وجود value خلى المتغير مش عارف يقرا value ده عشان يدخله جوا الداتابيز فبالتالي بيعتبر ان القيمة صفر او فاضية لانه مش عارف يقراها 

لما اتفتحت له سكة يقرا ال value و خصوصا ان زي حضرتك ما تفضلت و سألتني انا ليه عامل العرض selected  و ده غلط

هو شايف فيه اوبشن معمول سيليكت و محطوط له قيمة قام حاططها في الداتابيز 

لكن لما شلت ال disabled و ال selected و كمان ال value ما لاقاش قيمة يدخلها و لا حتى صفر 

فبالتالي ساب الداتابيز في حالها و الحمد لله

 

اخيرا اشكر لك معروفك و صنيعك و طول بالك و جزاكم الله خيرا اخي الفاضل :)

 

  • 1
نشر

نعم هذا هو الأمر، لكن توضيح أخير فقط اول اوبشن تستخدم لتنبيه المستخدم و يرفق معها نص كالرجاء الإختيار او اي شيء توضيحي نضع لها الخاصية disabled حتى لا يتم اختيارها و لا نضع لها قيمة في الخاصية value 

و من باقي الخيارات نحدد التي نريد جعلها selected و ستجد انني وضعت شرط بداخل الحلقة في حالة ما إذا كان الخيار الحالي هو الموجود في قاعدة البيانات قم بتحديده.

بالتوفيق

  • 0
نشر (معدل)

لاحظت اخي الفاضل اننا فقط حطينا شرط انه لو مفيش صورة اعمل تحديث عادي

لكن لو وضعنا صورة فبالتالي يبحث عن متغير image و يقول انه غير معرف ، مع العلم اني فعلا معرفه

 

بتاريخ 14 ساعات قال عبود سمير:

لاحظ الإستعلام:


$q = "UPDATE `thread` SET `name`='$name',`fiber`='$fiber',`num`='$num',`color`='$color',`pantone`='$pantone',`height`='$height',`weight`='$weight',`factory`='$factory',`tPrice`='$tprice',`mPrice`='$mprice',`image`='$image' WHERE thread.id =".$id.";";

في حالة عدم تحقق الشرط:


if (isset($_FILES['image']['name'])) {

فإن المُتغير image لن يتم تعريفه لذلك أعطاك ذلك الخطأ.

و الحل إنشاء الإستعلام على أساس الصورة إن كانت موجودة فإن الإستعلام سيتضمن حقل الصورة إن لم تكن الصورة موجودة في الطلب فلا تقم بتضمين حقل الصورة في الإستعلام.

يعني ببساطة بهذا الشكل:


$id = $_POST['id'];

$name = $_POST['name'];

$fiber = $_POST['fiber'];

$num = $_POST['num'];

$color = $_POST['color'];

$pantone = $_POST['pantone'];

$height = $_POST['height'];

$weight = $_POST['weight'];

$factory = $_POST['factory'];

$tprice = $_POST['tprice'];

$mprice = $_POST['mprice'];

$q = "UPDATE `thread` SET `name`='$name',`fiber`='$fiber',`num`='$num',`color`='$color',`pantone`='$pantone',`height`='$height',`weight`='$weight',`factory`='$factory',`tPrice`='$tprice',`mPrice`='$mprice'";

if (isset($_FILES['image']['name'])) {
  
  // rename and upload image
  
  $q .= ",`image`='$image'";
  
}

$q .= " WHERE thread.id =".$id.";";

$result = $conn->query($q);


if ($result) {
  echo "done";
}


  

تقسيم الإستعلام و إنشاؤه بحيث يتضمن حقل الصورة إن كانت هناك صورة جديدة إن لم تكن هناك صورة جديدة لا نضيف الحقل للإستعلام. أعتقد أن المُشكلة الأولى نفس الفكرة.

 

تم التعديل في بواسطة محمد المصري5

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...