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

السؤال

نشر

لدي الجدول التالي وهو يحتوي على البيانات المدرجه :

conversations table : 

--------------------------------------------------------------
id |topic_id   | user_send_id |  user_Received_id| topic
---------------------------------------------------------------
1  |    325     |   1          | 2                | مرحبا لدى عدة اسئله على هذا الموضوع
---------------------------------------------------------------
2  |    325     |   1          | 2                | مرحبا اخى الكريم هل لديك وقت كافى  
  ---------------------------------------------------------------
3  |    325     |   2          | 1                | هل نستطيع التحدث في وقت مختلف
---------------------------------------------------------------
4  |    325     |   2          | 1                |   انا مشغول الان  

قمت بوضع كود الاستعلام عنه بحيث انني ارغب بجلب كل السجلات المتعلقه ب Topic_id  المتشابه التي حدثة بين المستخدم المرسل والمستقبل من خلال الكود التالي:

<?php


include 'con.php';


 	 $topic_id= $_GET["topic_id"];
 $user_Received_id=$_GET["user_Received_id"];
  $user_send_id=$_GET["user_send_id"];
$sql = "SELECT  * FROM conversations WHERE topic_id=? AND user_Received_id=? AND user_send_id=? ";

$stmt = $con->prepare($sql); 

$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

$stmt->execute();

$result = $stmt->get_result();

 
//$result = $con->query($sql);
 
if ($result) {
 
 
	 while($row[] = $result->fetch_assoc()) {
	 
	 $item = $row;
	 
	 $json = json_encode($item, JSON_NUMERIC_CHECK);
	 
	 }
 
} else {
  
   echo "No Data Found.";
}
 echo $json;
$con->close();

?>

اللكود بشكل هذا شغال ولكن المشكله يرجع لي بقيمة عمود واحد عمود user_send_id وانا محتاج ارجاع قيمة user_send_idو user_Received_id المتشابه مع نفس topic_id بمعنى كل الحقول التي قام المستخدمين الاثنين بتخزينهم ويمتلكون topic_id واحد ليس مختلف 

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

Recommended Posts

  • 1
نشر (معدل)

لتفحص في المشكل أكثر يمكنك تفحص الخطأ عن طريق : 

<?php 

$binding_params = $stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

if(! $binding_params){
    
  die( "يوجد خطأ في تمرير المتغيرات : (" .$conn->errno . ") " . $conn->error);

}

 

لكن يبدو أن السبب في ظهور المشكلة هو أن الدالة bind_param تقبل أن يكون البارمتر اﻷول عن نوع البيانات الممررة بالترتيب , فان كنا نقوم بتمرير 3 strings : 

<?php 

$stm->bind_param ('sss', $first_str ,$second_str ,$third_str)

أما في هاته الحالة فنحن نقوم بتمرير معرفات ID فالمفروض يتم تمرير i ترميزا لinteger عوضا عن تمرير s فيقوم بتجاهل كل ما هو ليس string فتكون : 

<?php 

$stm->bind_param ('iii', $first_int ,$second_int ,$third_int)

و لربما يكون السبب في ارجاع عمود واحد user_send_id هو أن هذا العمود مسجل بنوع string أو varchar و ليس id , فحتى تتجنب مشكل تحديد الuser_Received_id و الtopic_id فقط قم بتمرير iis عوضا عن iii فتكون : 

<?php 

$stm->bind_param ('iis', $first_int ,$second_int ,$im_a_string)

 

تم التعديل في بواسطة Adnane Kadri
  • 0
نشر
بتاريخ 10 دقائق مضت قال Adnane Kadri:

لتفحص في المشكل أكثر يمكنك تفحص الخطأ عن طريق : 


<?php 

$binding_params = $stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

if(! $binding_params){
    
  die( "يوجد خطأ في تمرير البيانات : (" .$conn->errno . ") " . $conn->error);

}

 

لكن يبدو أن السبب في ظهور المشكلة هو أن الدالة bind_param تقبل أن يكون البارمتر اﻷول عن نوع البيانات الممررة بالترتيب , فان كنا نقوم بتمرير 3 strings : 


<?php 

$stm->bind_param ('sss', $first_str ,$second_str ,$third_str)

أما في هاته الحالة فنحن نقوم بتمرير معرفات ID فالمفروض يتم تمرير i ترميزا لinteger عوضا عن تمرير s فيقوم بتجاهل كل ما هو ليس string فتكون : 


<?php 

$stm->bind_param ('iii', $first_int ,$second_int ,$third_int)

 

هلا فيك اخي

شاكر لك ردك

حاولت التطبيق لما اعمل الكل iii d يرجع الى  كل السجلات المرتبطه ب رقم topic_id  بدون ان ينظر الى user_Received_id   user_send_id

وكانهم ليس من الجمله الشرطيه او ليسو موجودين

بتاريخ 21 دقائق مضت قال يوسف احمد9:

تلك الكويري ستقوم بإرجاع الداتا فقط من طريق واحد وهي فى حالة user_Received_id = 2 و user_send_id = 1

ولذلك يجب أن نعدل الكويري 


SELECT  * FROM conversations WHERE  (user_Received_id=1 AND user_send_id=2) or (user_Received_id=2 AND user_send_id=1) and topic_id = ?

 

اهلا بك عزيزي

قمت بتطبيق واستبدال الارقام ب علامة ? 

 حتى يتم تنفيذ الشرط ولكن الكود لم يرجع لي اي قيمة لم يرجع بيانات 

  • 1
نشر
بتاريخ 10 دقائق مضت قال مروان مروان3:

هلا فيك اخي

شاكر لك ردك

حاولت التطبيق لما اعمل الكل iii d يرجع الى  كل السجلات المرتبطه ب رقم topic_id  بدون ان ينظر الى user_Received_id   user_send_id

وكانهم ليس من الجمله الشرطيه او ليسو موجودين

اهلا بك عزيزي

قمت بتطبيق واستبدال الارقام ب علامة ? 

 حتى يتم تنفيذ الشرط ولكن الكود لم يرجع لي اي قيمة لم يرجع بيانات 

طبعا قد يعتمد هذا على نوع البيانات المدرجة بقاعدة البيانات فالظاهر أن user_Received_id و  user_send_id عبارة عن strings او نوع اخر فتأكد أن تقوم بتمرير النوع الصحيح 

هل يمكن الاطلاع على بنية بيانات الجدول بالphpmyadmin ؟ 

  • 0
نشر (معدل)
بتاريخ 14 دقائق مضت قال Adnane Kadri:

طبعا قد يعتمد هذا على نوع البيانات المدرجة بقاعدة البيانات فالظاهر أن user_Received_id و  user_send_id عبارة عن strings او نوع اخر فتأكد أن تقوم بتمرير النوع الصحيح 

هل يمكن الاطلاع على بنية بيانات الجدول بالphpmyadmin ؟ 

مرفق لك صوره اخي

607e05ca31e5c_Screenshot2021-04-20023523.thumb.png.d3386f84f291ccda710b5cbee2ad710d.png

بتاريخ 14 دقائق مضت قال Adnane Kadri:

طبعا قد يعتمد هذا على نوع البيانات المدرجة بقاعدة البيانات فالظاهر أن user_Received_id و  user_send_id عبارة عن strings او نوع اخر فتأكد أن تقوم بتمرير النوع الصحيح 

هل يمكن الاطلاع على بنية بيانات الجدول بالphpmyadmin ؟ 

مرفق لك اخي ايضا صورة للبيانات المدرجه فيه

607e07da822f5_Screenshot2021-04-20024009.thumb.png.29c1f7f072419c7091098cf93ae658b7.png

تم التعديل في بواسطة مروان مروان3
  • 1
نشر
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xmmp-chat";

// Create connection
$con = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM conversations WHERE (user_Received_id=1 AND user_send_id=2) or (user_Received_id=2 AND user_send_id=1) and topic_id = 325 ";

$stmt = $con->prepare($sql);

//$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

$stmt->execute();

$result = $stmt->get_result();


//$result = $con->query($sql);

if ($result) {
    $data = [];

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;


    }
    echo "<pre>";
    print_r($data);
}
?>

أنظر أخى لهذا الكود وتلك الصورة لرؤية الناتج من هذا الكود

Capture.PNG

  • 0
نشر
بتاريخ 1 دقيقة مضت قال يوسف احمد9:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xmmp-chat";

// Create connection
$con = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM conversations WHERE (user_Received_id=1 AND user_send_id=2) or (user_Received_id=2 AND user_send_id=1) and topic_id = 325 ";

$stmt = $con->prepare($sql);

//$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

$stmt->execute();

$result = $stmt->get_result();


//$result = $con->query($sql);

if ($result) {
    $data = [];

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;


    }
    echo "<pre>";
    print_r($data);
}
?>

أنظر أخى لهذا الكود وتلك الصورة لرؤية الناتج من هذا الكود

Capture.PNG

 

 

 اهلا اخي 

بنسبة الى id  المستخدمين انا احصل عليه من خارج الفورم يعني مش ثابت دائما على 1 او 2 مجرد مثال 

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

 

607e099688d80_Screenshot2021-04-20024009.thumb.png.c72d6275969d616474e6bdc991cdb76f.png

 

احصل عليهم من خلال 

 $topic_id= $_GET["topic_id"];
 $user_Received_id=$_GET["user_Received_id"];
  $user_send_id=$_GET["user_send_id"];

 

  • 1
نشر
<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xmmp-chat";

$topic_id= 325;
$user_Received_id=1;
$user_send_id=2;

// Create connection
$con = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM conversations WHERE (user_Received_id=$user_Received_id AND user_send_id=$user_send_id) or (user_Received_id=$user_send_id AND user_send_id=$user_Received_id) and topic_id = $topic_id";

$stmt = $con->prepare($sql);

//$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

$stmt->execute();

$result = $stmt->get_result();


//$result = $con->query($sql);

if ($result) {
    $data = [];

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;


    }
    echo "<pre>";
    print_r($data);
}
?>

جرب هذا الكود أخي

  • 0
نشر
بتاريخ 9 دقائق مضت قال يوسف احمد9:

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "xmmp-chat";

$topic_id= 325;
$user_Received_id=1;
$user_send_id=2;

// Create connection
$con = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($con->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "SELECT * FROM conversations WHERE (user_Received_id=$user_Received_id AND user_send_id=$user_send_id) or (user_Received_id=$user_send_id AND user_send_id=$user_Received_id) and topic_id = $topic_id";

$stmt = $con->prepare($sql);

//$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

$stmt->execute();

$result = $stmt->get_result();


//$result = $con->query($sql);

if ($result) {
    $data = [];

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;


    }
    echo "<pre>";
    print_r($data);
}
?>

جرب هذا الكود أخي

قمت بتطبيقه بشكل التالي حسب بيانات الجدول الظاهر في الصوره ولم يرجع لي اي بيانات 

<?php
include 'con.php';
 
 $json = file_get_contents('php://input');
 $obj = json_decode($json,true);
 $topic_id= '200';
$user_Received_id='wkFldN4TzDhczk********';
$user_send_id='xQVZw68SDee5ITSN2V*******';

$sql = "SELECT * FROM conversation WHERE (user_Received_id=$user_Received_id AND user_send_id=$user_send_id) or (user_Received_id=$user_send_id AND user_send_id=$user_Received_id) and topic_id = $topic_id";

$stmt = $con->prepare($sql);

//$stmt->bind_param("sss",$topic_id,$user_Received_id,$user_send_id);

$stmt->execute();

$result = $stmt->get_result();


//$result = $con->query($sql);

if ($result) {
    $data = [];

    while ($row = $result->fetch_assoc()) {
        $data[] = $row;


    }
    echo "<pre>";
    print_r($data);
}
?>

 

 

 

  • 0
نشر (معدل)
بتاريخ 17 ساعات قال يوسف احمد9:

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


$sql = "SELECT * FROM conversations WHERE (user_Received_id='$user_Received_id' AND user_send_id='$user_send_id') or (user_Received_id='$user_send_id' AND user_send_id='$user_Received_id') and topic_id = $topic_id";

 

مرحبا اخي @يوسف احمد9 اعتذر على تاخر الرد في البداية 

قمت بتجربة ووضع سينل كوت الكود يعمل بشكل هذا فعلا ولكن   الان هو يرجع بيانات المستخدمين فعلا ولكن ياتي ايضا ب مواضيع ليست مرتبطه ب  topic_ id 

 شاهد اخي هذا صور مرفقه فيها بيانات الجدول  والبيانات التي ييرجعها عن طريق الاستعلام وارفقت لك ملف الكود المستعمل + الجدول المستعمل mysql file

البيانات التي يرجعها الاستعلام الان توجد بيانات ليست مرتبطه بالموضوع 

607efcc43c76e_Screenshot2021-04-20200549.thumb.png.8fea71985fea1107c13e83d71cbfa179.png

 

كل البيانات المتوفره في الجدول الان 

607efcf59cca6_Screenshot2021-04-20200739.thumb.png.ede3760418f3f5f0b4a2e9213e783753.png

 

وهذا الكود المستعمل كامل للستعلام اعلاه

<?php


include 'con.php';
$topic_id= 200;
 $user_Received_id='wkFldN4TzDhczkdHMotQ';
 $user_send_id='xQVZw68SDee5ITSN2V';
 
$sql = "SELECT * FROM conversation WHERE (user_Received_id='$user_Received_id' AND user_send_id='$user_send_id') or(user_Received_id='$user_send_id' AND user_send_id='$user_Received_id') and topic_id = $topic_id";


$stmt = $con->prepare($sql); 

//$stmt->bind_param("sss",$IDAd,$IDUserReceived,$IDUuserSend);

$stmt->execute();

$result = $stmt->get_result();

 
//$result = $con->query($sql);
 
if ($result) {
 
 
	 while($row[] = $result->fetch_assoc()) {
	 
	 $item = $row;
	 
	 $json = json_encode($item, JSON_NUMERIC_CHECK);
	 
	 }
 
} else {
  
   echo "No Data Found.";
}
 echo $json;
$con->close();

?>

 

 

 

A.PHP

DB.txt

 

====================

 

مرحبا اخي بلال @بلال زيادة

تحيه طيبه لك

ملف المشروع يتكون من ملف php + mysql  قمت بارفاقه لك

 

ايضا هذا هو الكود السمتعمل للاستعلام

<?php


include 'con.php';
$topic_id= 200;
 $user_Received_id='wkFldN4TzDhczkdHMotQ';
 $user_send_id='xQVZw68SDee5ITSN2V';
 
$sql = "SELECT * FROM conversation WHERE (user_Received_id='$user_Received_id' AND user_send_id='$user_send_id') or(user_Received_id='$user_send_id' AND user_send_id='$user_Received_id') and topic_id = $topic_id";


$stmt = $con->prepare($sql); 

//$stmt->bind_param("sss",$IDAd,$IDUserReceived,$IDUuserSend);

$stmt->execute();

$result = $stmt->get_result();

 
//$result = $con->query($sql);
 
if ($result) {
 
 
	 while($row[] = $result->fetch_assoc()) {
	 
	 $item = $row;
	 
	 $json = json_encode($item, JSON_NUMERIC_CHECK);
	 
	 }
 
} else {
  
   echo "No Data Found.";
}
 echo $json;
$con->close();

?>

 

وهنا تكمن المشكله يقوم بارجاع بيانات ليست مرتبطه مع topic_id 

Screenshot 2021-04-20 200549.png

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

Screenshot 2021-04-20 200739.png

 

افدني اذا كانت لديك فكره عن سبب المشكله بارك الله فيك

A.PHP

DB.txt

تم التعديل في بواسطة مروان مروان3
  • 1
نشر
بتاريخ 7 ساعات قال مروان مروان3:

مرحبا اخي @يوسف احمد9 اعتذر على تاخر الرد في البداية 

قمت بتجربة ووضع سينل كوت الكود يعمل بشكل هذا فعلا ولكن   الان هو يرجع بيانات المستخدمين فعلا ولكن ياتي ايضا ب مواضيع ليست مرتبطه ب  topic_ id 

 شاهد اخي هذا صور مرفقه فيها بيانات الجدول  والبيانات التي ييرجعها عن طريق الاستعلام وارفقت لك ملف الكود المستعمل + الجدول المستعمل mysql file

البيانات التي يرجعها الاستعلام الان توجد بيانات ليست مرتبطه بالموضوع 

607efcc43c76e_Screenshot2021-04-20200549.thumb.png.8fea71985fea1107c13e83d71cbfa179.png

 

كل البيانات المتوفره في الجدول الان 

607efcf59cca6_Screenshot2021-04-20200739.thumb.png.ede3760418f3f5f0b4a2e9213e783753.png

 

وهذا الكود المستعمل كامل للستعلام اعلاه


<?php


include 'con.php';
$topic_id= 200;
 $user_Received_id='wkFldN4TzDhczkdHMotQ';
 $user_send_id='xQVZw68SDee5ITSN2V';
 
$sql = "SELECT * FROM conversation WHERE (user_Received_id='$user_Received_id' AND user_send_id='$user_send_id') or(user_Received_id='$user_send_id' AND user_send_id='$user_Received_id') and topic_id = $topic_id";


$stmt = $con->prepare($sql); 

//$stmt->bind_param("sss",$IDAd,$IDUserReceived,$IDUuserSend);

$stmt->execute();

$result = $stmt->get_result();

 
//$result = $con->query($sql);
 
if ($result) {
 
 
	 while($row[] = $result->fetch_assoc()) {
	 
	 $item = $row;
	 
	 $json = json_encode($item, JSON_NUMERIC_CHECK);
	 
	 }
 
} else {
  
   echo "No Data Found.";
}
 echo $json;
$con->close();

?>

 

 

 

A.PHP

DB.txt

 

====================

 

مرحبا اخي بلال @بلال زيادة

تحيه طيبه لك

ملف المشروع يتكون من ملف php + mysql  قمت بارفاقه لك

 

ايضا هذا هو الكود السمتعمل للاستعلام


<?php


include 'con.php';
$topic_id= 200;
 $user_Received_id='wkFldN4TzDhczkdHMotQ';
 $user_send_id='xQVZw68SDee5ITSN2V';
 
$sql = "SELECT * FROM conversation WHERE (user_Received_id='$user_Received_id' AND user_send_id='$user_send_id') or(user_Received_id='$user_send_id' AND user_send_id='$user_Received_id') and topic_id = $topic_id";


$stmt = $con->prepare($sql); 

//$stmt->bind_param("sss",$IDAd,$IDUserReceived,$IDUuserSend);

$stmt->execute();

$result = $stmt->get_result();

 
//$result = $con->query($sql);
 
if ($result) {
 
 
	 while($row[] = $result->fetch_assoc()) {
	 
	 $item = $row;
	 
	 $json = json_encode($item, JSON_NUMERIC_CHECK);
	 
	 }
 
} else {
  
   echo "No Data Found.";
}
 echo $json;
$con->close();

?>

 

وهنا تكمن المشكله يقوم بارجاع بيانات ليست مرتبطه مع topic_id 

Screenshot 2021-04-20 200549.png

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

Screenshot 2021-04-20 200739.png

 

افدني اذا كانت لديك فكره عن سبب المشكله بارك الله فيك

A.PHP

DB.txt

جرب أخي أيضاً أن تضع ال topic id داخل سينجل كود هكذا : 

$sql = "SELECT * FROM conversation WHERE (user_Received_id='$user_Received_id' AND user_send_id='$user_send_id') or(user_Received_id='$user_send_id' AND user_send_id='$user_Received_id') and topic_id = '$topic_id'";

 

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

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

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

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

  • إعلانات

  • تابعنا على



×
×
  • أضف...