الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

سؤال فى الصميم عن الاستعلام ونتائجه

مغلق
بدأه رمضان في 21 مارس 2002 · 7 رد · 812 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عند كتابة كود مثل هذا

mysql_connect("localhost", "root","");
mysql_select_db("arabteam");
$result = mysql_query("select * from post");
$row = mysql_fetch_array($result)

فيكون لدينا نتائج الاستعلام فى المصفوفه row$ فبدلا من كتابة هذه النتائج وإضهارها على الشاشة كيف يمكننا إرسال هذه النتائج وحفظها مباشرة فى ملف

على جهاز المستخدم وعلى السيرفر المستضيف ؟؟

#2

حقيقة لا أعتقد أنني فهمت المطلوب تماماً ، لكن هذه محاولة

mysql_connect("localhost","root","");
mysql_select_db("arabteam");
$result=mysql_query("select * from post");
$fp=fopen('file.txt', 'a+');
if(!$fp)
   die('لايمكن فتح الملف');
while($row=mysql_fetch_array($result))
{
   while(list($key,$val)=each($row))
   {
      fwrite($fp,"$key : $val n");
   }
   fwrite($fp,"n=========n");
}

هذا سيحفظ النتيجة في ملف file.txt الموجود في نفس مكان السكربت .اذا لم يكن موجوداً يتم انشاءه واذا كان موجود يتم نقل المؤشر الى نهاية الملف ، طبعاً الملف يفتح للقراءة والكتابة لأننا استخدمنا المعامل a+ وهناك معاملات أخرى (هي نفس المعاملات الموجودة في لغة سي ).

(( لم أفهم ماذا تقصد بـ "حفظ الملف على جهاز المستخدم " ))

تحياتي

#3

تمام ولكن هذا الكود كما ذكرت انت يكتب ناتج الاستعلام فى الملف فى نفس الدليل الموجود به ملف الـ php ولكن كيف لو أردت أن يتم كتابة الكود فى ملف فى دليل أخر على نفس السيرفر أو على سيرفر أخر إذا كانت لدى السماحيه بذلك

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

أرجو ان يكون المطلوب واضح

ومقدرا مجهودك معى

#4

اذا كان الملف في نفس السيرفر في دليل آخر ولك صلاحية الكتابة والقراءة في هذا الدليل فيمكن استخدام fopen لفتحه والكتابة اليه أو القراءة منه ويمكن اعطاء اسم الملف المطلق (من الجذر) أو من المكان الحالي للسكربت

مثال

$fp1=fopen('/home/users/at/file.txt','a+');
$fp2=fopen('../../file.txt','a+');

أما اذا كان في سيرفر آخر ويمكن الوصول اليه من خلال ftp فتستخدم الدالة هكذا

$fp=fopen('ftp://user:pass@server.com/file.txt','a+');

حيث user و pass هما اسم المستخدم وكلمة المرور لحساب ftp

أيضاً يمكن فتح ملفات http ولكن فقط للقراءة

بالنسبة للكتابة على جهاز المستخدم فهذا غير ممكن طبعاً بشكل مباشر

تستطيع جعل المستخدم يقوم بتحميل بيانات الملف اذا أراد ذلك بدون أن تعطيه وصلة للملف الأصلي، وذلك بأن تطبع بيانات الـ Header المناسبة للملف ثم تطبع البيانات التي قرأتها من الملف

مثلاً هذا لطباعة الهيدر لملف pdf

header('Content-type: application/pdf');

(ملاحظة : الهيدر يجب أن يكون دائماً قبل طباعة أي بيانات مثل html أو غيرها )

#5

الله بفتح لك كله تمام ولكن النقطه الاخيره ما فهمتها ولم أستطيع تنفيذها

بإختصار انا أريد ان يتم حفظ نتيجة الاستعلام فى ملف على جهاز الشخص الذى يطلب ملف الاسكربت من المتصفح

او بمعنى أخر الايمكننى أن أجعل ملف الـ php يقوم بفتح ملف على جهاز المستخدم والكتابه به واللبيب بالاشارة يفهم ....................

#6
اقتباس
الا يمكننى أن أجعل ملف الـ php يقوم بفتح ملف على جهاز المستخدم والكتابه به

طبعاً لا يمكن! والا أصبحت الانترنت غير آمنة أبداً

(تخيل موقع تزوره ثم يقوم بفتح ملفات من جهازك !! )

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

أتمنى أن أكون قد أفدتك ..

(هذا اذا كنتُ لبيباً وفهمت بالاشارة ;) )

تحياتي

#8

لا يمكن الكتابة في جهاز المستخدم إطلاقاً إلا باستخدام ثغرات المستعرض (وهي ما تتبعه الكثير من أنواع الفيروسات وتعد نوعاً من اختراق الأجهزة)

ولكن لنفترض ان "نيتك سليمة" :P

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

أي انها ستقوم بحفظ الملف في جهاز المستخدم لكن باختياره

// نقلاً عن المثال أعلاه
mysql_connect("localhost","root",""); 
mysql_select_db("arabteam"); 
$result=mysql_query("select * from post"); 
$fp=fopen('query.result', 'w'); 
if(!$fp) 
   die('لايمكن فتح الملف'); 
while($row=mysql_fetch_array($result)) 
{ 
   while(list($key,$val)=each($row)) 
   { 
      fwrite($fp,"$key : $val n"); 
   } 
   fwrite($fp,"n=========n"); 
}

// التغييرات هنا 

fclose($fp);

header("location: query.result");
exit("File has been moved: here");

هذا الموضوع مغلق.

مواضيع مشابهة

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…