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

[mysql] فحص جميع حقول الجدول ما عدا واحد فقط

محمد المصري12

السؤال

سلام عليكم

SELECT * FROM tenders WHERE code = 1810 OR ref = 5555-55555 OR con_number = 50 AND id =! 8

المفترض اني بقوله حددلي الكل من جدول tenders لما ال code يساوي القيمة اللي قدامه (أو) ال ref يساوي القيمة اللي قدامه الخ

ابحث في كله بشرط ان ال ID ما يساويش 8

( ده بيانات unique ما ينفعش تتكرر و عاوز اجبره لما يحب يعدل يبص لي على الجدول كله هل فيه قيم مشابهة و لا لأ لو لقى ان القيمة اللي هايعدلها موجودة في اي حقل تاني يرفض و يبعتله رساله خطأ)

و ده كود الباك ايند

// First step --- chk for duplicated data

$chk = $conn->query("SELECT * FROM tenders WHERE code = $code OR ref = $ref OR con_number = $con_number AND id <> $id");

if(!$chk){
    echo 'CHK Error';
    die();
}
else{
if (mysqli_num_rows($chk) > 0){
   echo 'dub';
    die();
}
}
// Start update Data

        $stmt = $conn->prepare("UPDATE tenders SET CODE = ?, monafsa_name=?,ref=?,
    con_number = ?,
    exe = ?,
    order_production_location = ?,
    con_date = ?,
    platform = ?,
    duration = ?,
    CLIENT = ?,
    contact_person = ?,
    contact_position = ?,
    contact_tel = ?,
    contact_tel1 = ?,
    fax = ?,
    contact_email = ?,
    delivery_place = ?,
    expiration = ?,
    supply_system = ?

WHERE id = ? ");

        echo $conn->error;

$stmt->bind_param("ssssssssssssssssssss", $code,$monafsa_name,$ref,$con_number,$exe,$order_production_location,$con_date, $platform,$duration, $client, $contact_person,$contact_position,$contact_tel,$contact_tel1,$contact_fax,$contact_email, $delivery_place, $expiration, $supply_system ,$id );

if ($stmt->execute()) {

    echo "done";
}
        else {

            echo $conn->error;

        }

احلها ازاي؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

إذا كنت تقصد بالكود التالي:

SELECT * FROM tenders WHERE code = 1810 OR ref = 5555-55555 OR con_number = 50 AND id =! 8

أن تقول إما 1810 = code أو 55555-5555 = ref أو 50 = con_number وفي كل الحالات لا يجب أن يجلب العنصر ذو 8 = id عندها يجب أن تكتب بالشكل:

SELECT * FROM tenders WHERE
	(code = 1810 OR ref = 5555-55555 OR con_number = 50) AND id =! 8

وذلك لأن البيانات سترى كودك القديم بالشكل (إما ( 1810 = code) أو ( 55555-5555 = ref) أو (50 = con_number و 8 = id)) وهذا مغاير لما تريده أنت.

أما بالنسبة لموضوع التعديل فيمكنك من خلال الأمر select أن تتأكد من وجود أي عنصر يحوي في خصائصه قيم مشابهة للقيم في العنصر المعدل الجديد، في المثال التالي سأتأكد من عدم تكرار الاسم قبل تعديله -كمثال-:

// العبارة القادمة تبحث في كل الجدول إلا العنصر الذي نعدله الآن
$q1 = SELECT * FROM table WHERE name = target_name AND NOT id = "id العنصر قيد التعديل";
$result = $conn->query($q1);
if(!$result){
	// سيدخل إلى هذه الجملة الشرطية في حال الاسم لم يكن مكرر
	// هنا نضع أمر التعديل
}

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...