عندي مشكلة في قاعدة البيانات المسطحة في موقعي؟
السلام عليكم
عندي مشكلة في قاعدة البيانات في موقعي
حيث وضعت رابط للتحميل للأعصاء في الموقع.
السسؤال:
أريد معرفة عدد مرات التحميل لكل عضو , بعد التأكد أنه مر على موقع أختصار الروابط و تكون طريقة التحميل في الموقع , مرة في كل 24 ساعة في اليوم.
قاعدة بيانات الموقع على هذا الشكل:
user | password | email | fullname | click | 1 | na
جربت ;(file = fopen($database, 'w$ وجربت ;(+file = fopen($database, 'w$ النتيجة كانت مسح كل بيانات الأعضاء .. كارثة ...... الحمد لله كان عندي النسخ الإحتياطي.
وشكرا على مجهوداتكم .... اللهم اجعلها في ميزان حسناتكم و والديكم... آمين.
ساعد بالإجابة
"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."
الإجابات (4)
وعليكم السلام،
لم افهم ما علاقة الأمر الذي وضعته بالموضوع؟
$file = fopen($database, 'w')
هذا الأمر يقوم بفتح الملفات، فكيف تستخدمه مع قاعدة البيانات بالضبط؟ ممكن الكود كامل؟
السلام عليكم
أخي عمار, أنا في موقعي أستخدم قاعدة البيانات مسطحة, عبارة عن ملف. txt
بهذا الشكل يظهر الأعضاء المسجلين من الداخل في قاعدة البيانات.txt
user | password | email | fullname | click | 1 | na
أريد أن أضع رابط التحميل للأعضاء المسجلين , أريد معرفة عدد مرات التحميل لكل عضو في خانة (click), ويفتح هذا الرابط مرة واحدة كل24ساعة .
أريد سكريبت يحسب عدد ضغطات الرابط , لكل عضو , ورابط التحميل يفتح مرة كل 24 ساعة.
هذا هو الموضوع ببساطة.
وشكرا وجزاك الله خيرا وجعله في ميزان حسناتك ووالديك و كل الأسرة....آمين.
http://php.net/manual/en/function.fopen.php
استخدم "c+" في البرامتر mode
'c' | Open the file for writing only. If the file does not exist, it is created. If it exists, it is neither truncated (as opposed to 'w'), nor the call to this function fails (as is the case with 'x'). The file pointer is positioned on the beginning of the file. This may be useful if it's desired to get an advisory lock (see flock()) before attempting to modify the file, as using 'w' could truncate the file before the lock was obtained (if truncation is desired, ftruncate() can be used after the lock is requested). |
'c+' | Open the file for reading and writing; otherwise it has the same behavior as 'c'. |
شكرا أخي عمار على المجهود , سأحاول تجريب c+
أنا إستعمل هذا الكود, ولكن يسجل عدد الضغطات لكل الأعضاء , شاهد:
<?php
$file = 'usersdb.txt';
$b = 10;
$click = 0;
if(!file_exists('usersdb.txt')){
file_put_contents('usersdb.txt', '0');
}
if ($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['form_name']) && $_POST['form_name'] == 'editprofileform')
{
$fh = fopen($file, 'r+'); // هنا؟(c+)هل أستطيع أن أستبدل بـ
$lines = '';
while(!feof($fh)){
$line = explode('|', fgets($fh));
$username = trim($line[0]);
$password = trim($line[1]);
$email = trim($line[2]);
$name = trim($line[3]);
$click = trim($line[4]);
$active = trim($line[5]);
if(!empty($username)){
$click = $click + $b; // increment count by 1
echo $click;
$active = 1;
echo $active;
$lines .= "$username|$password|$email|$name|$balance|$active\r\n";
}
}
file_put_contents($file, $lines);
fclose($fh);
header('Location: ' . $_SERVER['SCRIPT_NAME']);
die;
}
?>
وهذا فورم زر الضغط:
<form name="editprofileform" method="post" action="<?php echo basename(__FILE__); ?>" accept-charset="UTF-8" id="editprofileform">
<input type="hidden" name="form_name" value="editprofileform">
<input type="submit" id="update" name="update" "value="Update"></form></div>
و هذا ملف قاعدة البيانات المسطحة شاهد:
user | password | email | fullname | click | 1 | NA
مثال لعضو مسجل في قاعدة البيانات
djtech | m123456 | [email protected] | mansour |25 | 1 | NA
أرجو منك تطوير هذا الكود من فضلك من فضلك.
تقبل خالص تحياتي وتقديري.
لايوجد لديك حساب في عالم البرمجة؟
تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !