عند إضافة user يدويا في صفحة php ﻻ يضاف إلى جدول ال users في قاعدة البيانات

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

 

ثم عندما جربت ما جربه ظهر الناتج فعلا هكذا في صفحة الويب:

INSERT INTO 'users' VALUE(NULL, 'Abdullah','81dc9bdb52d04dc20036dbd8313ed055','email@gmail.com','0')success

لكن لم يظهر ال user المضاف في جدول ال users بقاعدة البيانات

كما أنه في التعليقات تحت هذا الفيديو والفيديو التالي، هناك آخرين واجهتهم نفس المشكلة ولا أحد حلها

رجاء من يعلم ما المشكلة يساعدني في حلها، هل هي بسبب إختلاف في إصدار ال php مثلا؟

تحديث: هل ممكن يكون نوع type of الجدول هو السبب؟ ففي الشرح كان النوع مختار إفتراضيا ك MYISAM أما عندتطبيقي للشرح فالنوع كان InnoDB لكنني لم أرد أن أغيرها طالما الشارح لم يتعرض لها ..

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

اضف حرف s الى اخر كلمة value

يعني اكتبها values

شكرا أخي على المساعدة، هذا ما كتبه الأستاذ عبد الله عيد واشتغل معه الكود عادي، على أي حال في البداية أخترت أن أكتب values بالجمع "حيث أن عبد الله خير المشاهدين بين الإثنين وقال: لا مشكلة" لكن المشكلة كانت نفسها

أقصد أنني جربت value و values والمشكلة كانت قائمة في الحالتين

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

لما لا تجرب كتابة اسماء الكولون اسم الجدول من الشكل

('Column1','column2'..... )..

أخي، لا أفهمك جيدا جدا، لكن ها هو الجدول على أي حال

هل ممكن يكون نوع type of الجدول هو السبب؟ ففي الشرح كان النوع مختار إفتراضيا ك MYISAM أما عندتطبيقي للشرح فالنوع كان InnoDB لكنني لم أرد أن أغيرها طالما الشارح لم يتعرض لها ..

megasoft أضف ردا

لا لم اقصد نوع الجدول يعني كنت اقصد نوع الكولونات

ممكن تعطيني كل كولون مع نوعه وسأعطيك استعلام sql كاملا

تمام أخي، الجدول كله في هذه الصورة

تفضل اظن ان هذا هو الاستعلام الصحيح

insert into users (name,password,email ,isadmin)values('Abdullah','81dc9bdb52d04dc20036dbd8313ed055','email@gmail.com',0)

قم بنسخه ولصقه وسيشتغل ان شاء الله

أخي تفضل الكود بأكمله حتى تكون على بينة، ﻷن الاستعلام السابق لم يعمل

صفحة usersAPI.php

<?php

// users APIs = capsulations :D

function tinyf_users_get($extra = '')

{

global $tf_handle;
$extra = strip_tags($extra); //to remove any html tags
$query = sprintf("SELECT * FROM 'users' %s",$extra);
$qresult = @mysql_query($query);

if (!$qresult)
    return NULL;

$rount = @mysql_num_rows($qresult);
if ($rcount == 0)
    return NULL;

$users = array();
for($i=0; $i<$rcount; $i++)
    $userscount($users) = @mysql_fetch_object($qresult);

@mysql_free_result($qresult);

return $users;

}

function tinyf_users_get_by_id($uid) { $id = (int)$uid; //to assure that the value is between 1 and more, not string e.g if($id == 0) return NULL;

$result = tinyf_users_get ("WHERE 'id' =" .$id);
if($result == NULL)
    return NULL;

$user = $result[0]; // 0 because it's only a unique id (array of just 1 item)
return $user;

}

function tinyf_users_add($name, $password, $email, $isadmin) { global $tf_handle; if ((empty($name)) || (empty($password)) || (empty($email))) return false;

// @mysql_real_escape_string() is to check the safety from mysql pov
// @md5 is to encrypt the password

$n_email    = @mysql_real_escape_string(strip_tags($email),$tf_handle);
if(!filter_var($n_email, FILTER_VALIDATE_EMAIL)) //if the email is not written as standard emails written
    return false;

$n_name     = @mysql_real_escape_string(strip_tags($name),$tf_handle);
$n_pass     = @md5(mysql_real_escape_string(strip_tags($password),$tf_handle));
$n_isadmin  = (int)$isadmin; //to convert its value to integer
if(($n_isadmin !=0) && ($n_isadmin != 1))
    $n_isadmin = 0;

$query = sprintf("INSERT INTO 'users' (id,name,password,email ,isadmin) VALUES (NULL, '%s','%s','%s','%d')",$n_name,$n_pass,$n_email,$n_isadmin);
echo $query;

$qresult = @mysql_query($query);
if(!$query)
    return false;

return true;

}

function tinyf_users_delete($uid) { $id = (int)$uid; if($id == 0) return false;

$query = sprintf("DELETE FROM 'users' WHERE 'id' = %d", $id);
$qresult = @mysql_query($query);
if(!$query)
    return false;

return true;

}

function tinyf_users_update($uid, $name=NULL, $password=NULL, $email=NULL, $isadmin=0) { global $tf_handle; $id = (int)$uid; if($id == 0) return false;

$n_isadmin = (int)$isadmin;

$user = tinyf_get_user_by_id($id); //to check if there is a user like this, not to waste time interpreting all the following
if(!user)
        return false;

if ((empty($name)) && (empty($password)) && (empty($email)) && ($user->isadmin == $n_isadmin))
    return false;

$fields = array(); //to help us use commas in the query
$query = "UPDATE 'users' SET ";

if(!empty($email))
{
    $n_email = @mysql_real_escape_string(strip_tags($email),$tf_handle);

    if(!filter_var($n_email, FILTER_VALIDATE_EMAIL)) //if the email is not written as standard emails written
        return false;

    $fieldscount($fields) = "email = '$n_email'";
}

if(!empty($name))
{
    $n_name = @mysql_real_escape_string(strip_tags($name),$tf_handle);
    $fieldscount($fields) = "name = '$n_name'";
}

if(!empty($password))
{
    $n_pass = @md5(mysql_real_escape_string(strip_tags($password),$tf_handle));
    $fieldscount($fields) = "password = '$n_pass'";
}

$fieldscount($fields) = "isadmn = '$n_isadmin'";

$fcount =@count($fields);
if($fcount == 1) //if there is just 1 ittem we won't put comma in the query
{
    $query = $fields[0]." Where 'id' = ".$id;
    $qresult = @mysql_query($query);
    if(!$qresult)
        return false;
    else
        return true;
}

for($i=0; $i<$fcount; $i++) //to check if there are more than 1 item so that we put commas between query items
{
    $query .= $fields[$i];
    if($i != ($fcount - 1)) //if the item isn't the last item to be added
        $query .=' . '; //the comma between items in the query

    $query .= " Where 'id' = ".$id;
    $qresult = @mysql_query($query);
    if(!$qresult)
        return false;
    else
        return true;
}

}

include ('db.php');

$result= tinyf_users_add('Abdullah','1234','rofail.flouta.mohep@gmail.com',0); if($result) { tinyf_db_close(); echo 'success'; }

?>

وصفحة db.php

<?php

$tf_host = 'localhost'; $tf_dbname = 'tinyforum'; $tf_username = 'root'; $tf_password = '';

$tf_handle = @mysql_connect($tf_host, $tf_username, $tf_password);

if (!$tf_handle) die ('Connection problem ..');

$tf_db_result = @mysql_select_db($tf_dbname); if (!$tf_db_result) { @mysql_close($tf_handle); die ('Selection problem..'); }

/*
die('OK'); @mysql_close($tf_handle); */

@mysql_query("SET NAMES 'utf8'");

function tinyf_db_close() { global $tf_handle; @mysql_close($tf_handle);

}

?>

أرجو أن يكون الكود به خطأ ولو منطقي ﻷصححه حتى أحل هذه المشكلة ..

megasoft أضف ردا

لا تضع علامات '' على d%

او ضع مباشرة s%

لان نوع الكولون عدد وليس string

كلام منطقي، لكن هل يا أخي إشتغل معك الكود، ﻷنه مازال لم يضف ال user في جدول ال users

أو أعتذر، ستضطر لعمل جدول وقاعدة بيانات، إذا ما الحل؟ يبدو أن هناك خطأ آخر

هل المشكلة من هذا الجزء، فربما يجب أن أغير شيئا؟؟ كلمة السر أو إسم المستخدم مثلا؟

 $tf_host = 'localhost';

$tf_dbname = 'tinyforum';

$tf_username = 'root';

$tf_password = '';

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

طيب

لما لا تجرب الاستعلام من phpmyadmin

يعني ادخل على تبويب sql وادخل هذا الاستعلام

insert into users (name,password,email ,isadmin)values('Abdullah','81dc9bdb52d04dc20036dbd8313ed055','email@gmail.com',0)

بعد ان يشتغل ضع شرط في كود php حتى تعرف المشكل اين هو

if(!$qresult){

echo mysql_error();

}

أخي أنا عاجز عن شكرك، كنت أريد فعل هذا من البداية، كان الخطأ في users كنت واضعها بين علامتي تنصيص، شكرا جزيلا لك :)

هل اشتغلت ؟

نعم يا أخي جربتها من phpmyadmin ومن صفحة usersAPI.php وإشتغلت حتى أنني أضفت أكثر من user للتأكد :) شكرا لك :)

العفو على الرحب 

.ركز فقط وتتبع السطر تلو السطر وستجد الحل ان شاء الله

وايضا انصحك باستعمال الدوال mysqli بدلا من mysql لانها اصبحت جد قديمة

بالتوفيق لك

قم بعمل الاستعلام ك الاتي

insert into Table_Name (name,password,email,isadmin) values ("user",md5("password"),"email",1);