PDA

View Full Version : سوال: درج نشدن اطلاعات در دیتابیس



css-man
جمعه 15 اردیبهشت 1391, 17:08 عصر
این صفحه ثبت نام رو نوشتم ولی اطلاعات در دیتابیس ذخیره نمیشه

فقط پیغام موفقیت بودن رو میده



if(isset($_POST['submitted'])){
$dbc=mysqli_connect('localhost','root','','doci');
$error= array();
if(!empty($_POST['username'])){
$u=$_POST['username'];
}else{
$error[]="You forgot to enter your username";
}
if(!empty($_POST['email'])){
$e=$_POST['email'];


}else{

$error[]= "You forgot to enter your email";
}
if(!empty($_POST['pass'])){
$p=$_POST['pass'];
}else{
$error[]="You forgot to enter your password";
}
if(!empty($_POST['verifypass'])){
if($_POST['verifypass'] != $_POST['pass']){
$error[]="You both password are not matched";
}
}else{
$error[]='You forgor enter your verify password';
}
if(empty($error)){
$now=time();
$q="INSERT INTO user (username,email,password,creation_date,status) VALUE ('$u','$e',md5('$p'),$now,0)";
$r=@mysqli_query($dbc,$q);

if($q){
echo $msg="REgistration done successfully.thank you very much.";
}else{
echo $msg="<p> An unknown system error is occured.if this persist please conact admin.</p>";
}
}else{
echo '<p class="error">Below errors encounter: ';
foreach($error as $val){
echo " -$val\n";
}
echo 'Please try again</p>';
}
mysqli_close($dbc);
}

djsaeedkhan
شنبه 16 اردیبهشت 1391, 00:30 صبح
سلام
در مواردی که به مشکل در چندین خط می رسید بیاید خطوط رو حذف کنید و ببینید چه اتفاقی می افتد. مثلا فیلد ها را کامل وارد کنید و فقط دستور درج را قرار بدید. اگر باز هم درج نشد خطا از همان درج است وگرنه مشکل اط خطوط دیگر است
دوم اینکه این خط رو اینجوری ببینید چواب می ده


$q="INSERT INTO user (`username`,`email`,`password`,`creation_date`,`st atus`) VALUES ('$u','$e','{md5($p)}','$now','0')";

آلبته باید تست بشه ولی فکر کنم به غیز از md5 یقیه درست باشه

css-man
شنبه 16 اردیبهشت 1391, 09:13 صبح
باز هم درست نشد

css-man
شنبه 16 اردیبهشت 1391, 09:17 صبح
آخه مشکل اینجا هست که اصلا اروری نمیده

یعنی هیچ مشکلی نیست و ثت نام انجام میشه ولی تو دیتابیس درج نمیشه

djsaeedkhan
شنبه 16 اردیبهشت 1391, 09:31 صبح
خوب مطمئنی نرم افزار و بقیه چیزا درست کار می کنه
اینو امتحان کن (فقط این کد رو بزار با دستورات اتصال به دیتابیس)

$q="INSERT INTO user (`username`) VALUES ('0')";

اینو هم اولین خط صفحت بزار

error_reporting(E_ALL);
که همه خطا ها رو نشون بده

djsaeedkhan
شنبه 16 اردیبهشت 1391, 09:32 صبح
راستی از این هم می تونی استفاده کنی
یه نمونه پروژس ببین و مقایسه کن
فیلد هاشو تغییر بده و تست کن
اگر این پروژه برات درست کار نکنه مشکل نرم افزاری دارید

MMSHFE
شنبه 16 اردیبهشت 1391, 12:49 عصر
دوست عزیز، مشکل از شرطی هست که گذاشتین. (if($q فقط چک میکنه ببینه مشکلی ازنظر دستور زبان SQL توی کوئری نباشه و یک خروجی از نوع MySQL Result داشته باشین ولی اگه میخواین ببینید رکوردی ثبت، ویرایش یا حذف شده یا نه، باید تعداد رکوردهای تغییریافته رو بررسی کنید. مثلاً شرط رو بصورت زیر تغییر بدین:

if($q && mysql_affected_rows() > 0) { echo 'Successful'; }
موفق باشید.

css-man
شنبه 16 اردیبهشت 1391, 13:27 عصر
خوب مطمئنی نرم افزار و بقیه چیزا درست کار می کنه
اینو امتحان کن (فقط این کد رو بزار با دستورات اتصال به دیتابیس)

$q="INSERT INTO user (`username`) VALUES ('0')";

اینو هم اولین خط صفحت بزار

error_reporting(E_ALL);
که همه خطا ها رو نشون بده



اینا رو هم تست کردم هیچ اروری نداد و هیچ اطلاعاتی هم تو دیتابیس قرار نگرفت

الان این پروژه ای که فرستادید رو امتحان می کنم ببینم چی میشه

djsaeedkhan
شنبه 16 اردیبهشت 1391, 13:31 عصر
اینا رو هم تست کردم هیچ اروری نداد و هیچ اطلاعاتی هم تو دیتابیس قرار نگرفت

الان این پروژه ای که فرستادید رو امتحان می کنم ببینم چی میشه

راستی
شما بعد از درج دیتابیس رو هم ببین شاید درج شده ولی نمایش داده نشده. برو تو phpmyadmin و ببین درج شده یانه
در آخر اگر نشد صفحه ی کد رو با ساختار جدولش بفرستین تا بشه درستش کرد

css-man
شنبه 16 اردیبهشت 1391, 13:31 عصر
دوست عزیز، مشکل از شرطی هست که گذاشتین. (if($q فقط چک میکنه ببینه مشکلی ازنظر دستور زبان SQL توی کوئری نباشه و یک خروجی از نوع MySQL Result داشته باشین ولی اگه میخواین ببینید رکوردی ثبت، ویرایش یا حذف شده یا نه، باید تعداد رکوردهای تغییریافته رو بررسی کنید. مثلاً شرط رو بصورت زیر تغییر بدین:

if($q && mysql_affected_rows() > 0) { echo 'Successful'; }
موفق باشید.


کد شما رو جایگزین کردم

بالاخره یه ارور داد

پیغام بخش else همون if اجرا شد

حالا بنظرتون مشکل از کجاس؟؟



else{
echo $msg="<p> An unknown system error is occured.if this persist please conact admin.</p>";

djsaeedkhan
شنبه 16 اردیبهشت 1391, 13:42 عصر
دوست من
شما اومدی کوری رو تو شرط گذاشتی
در صورتی که باید نتیجه ( $r) رو قرار بدی
درست شد؟


$query="insert";
$result=mysql_query($query);
if($result) echo "Saved";
یا
if($result && mysql_affected_rows() > 0) { echo 'Successful'; }

همچنین وقتی اومدی از @ استفاده کردی واسه mysql_query باعث میشه دیگه پیغام خطایی نمایش نده

css-man
شنبه 16 اردیبهشت 1391, 13:52 عصر
دوست من
شما اومدی کوری رو تو شرط گذاشتی
در صورتی که باید نتیجه ( $r) رو قرار بدی
درست شد؟


$query="insert";
$result=mysql_query($query);
if($result) echo "Saved";
یا
if($result && mysql_affected_rows() > 0) { echo 'Successful'; }

همچنین وقتی اومدی از @ استفاده کردی واسه mysql_query باعث میشه دیگه پیغام خطایی نمایش نده



به این شکل تغییرش دادم ولی باز اررور میده





include('C:\wamp\www\project\include\menu.html');
echo "<div id='picr'>";
echo
"<form action=\"register.php\" method=\"post\">
<fieldset>
<table width=\"347\" height=\"274\" id=\"form\">
<tr>
<td>Username:</td>
<td><label for=\"username\"></label>
<input type=\"text\" name=\"username\" id=\"username\" /></td>
</tr>
<tr>
<td>E-mail:</td>
<td><label for=\"email\"></label>
<input type=\"text\" name=\"email\" id=\"email\" /></td>
</tr>
<tr>
<td>Password</td>
<td><label for=\"pass\"></label>
<input type=\"password\" name=\"pass\" id=\"pass\" /></td>
</tr>
<tr>
<td>Verify Password</td>
<td><label for=\"cpass\"></label>
<input type=\"password\" name=\"verifypass\" id=\"verifypass\" /></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\"><input type=\"submit\" name=\"button\" id=\"button\" value=\"Submit\" /></td>
</tr>
</table>

</fieldset>
<input type=\"hidden\" name=\"submitted\" value=\"1\" />
</form>
";
//include('C:\wamp\www\project\include\config.php');
if(isset($_POST['submitted'])){
$dbc=mysqli_connect('localhost','root','','doci');
$error= array();
if(!empty($_POST['username'])){
$u=$_POST['username'];
}else{
$error[]="You forgot to enter your username";
}
if(!empty($_POST['email'])){
$e=$_POST['email'];


}else{

$error[]= "You forgot to enter your email";
}
if(!empty($_POST['pass'])){
$p=$_POST['pass'];
}else{
$error[]="You forgot to enter your password";
}
if(!empty($_POST['verifypass'])){
if($_POST['verifypass'] != $_POST['pass']){
$error[]="You both password are not matched";
}
}else{
$error[]='You forgor enter your verify password';
}
if(empty($error)){
$now=time();
$q="INSERT INTO user ('username','email','password','creation_date','st atus') VALUE ('$u','$e','{md5($p)}','$now','0')";
$r=mysqli_query($dbc,$q);

if($r && mysql_affected_rows() > 0){
echo $msg="REgistration done successfully.thank you very much.";
}else{
echo $msg="<p> An unknown system error is occured.if this persist please conact admin.</p>";
}
}else{
echo '<p class="error">Below errors encounter: ';
foreach($error as $val){
echo " -$val\n";
}
echo 'Please try again</p>';
}
mysqli_close($dbc);
}
echo "</div>";
?>

djsaeedkhan
شنبه 16 اردیبهشت 1391, 13:57 عصر
آیا پروژه ای که گذاشتم رو تست کردید؟
درست کار کرد؟

css-man
شنبه 16 اردیبهشت 1391, 14:03 عصر
نه هنوط داشتم کارایی که گفتید رو انجام میدادم الان اونم تست میکنم

djsaeedkhan
شنبه 16 اردیبهشت 1391, 14:10 عصر
من مجبور شدم کد شما رو اینجوری تغییر بدم
ولی درستش کنید
اینو تست کردم درست کار کرد
اشکال در کوری شما هست


<?php
echo "<div id='picr'>";
?><form method=post>
<fieldset>
<table width=\"347\" height=\"274\" id=\"form\">
<tr>
<td>Username:</td>
<td><label for=\"username\"></label>
<input type=\"text\" name=\"username\" id=\"username\" /></td>
</tr>
<tr>
<td>E-mail:</td>
<td><label for=\"email\"></label>
<input type=\"text\" name=\"email\" id=\"email\" /></td>
</tr>
<tr>
<td>Password</td>
<td><label for=\"pass\"></label>
<input type=\"password\" name=\"pass\" id=\"pass\" /></td>
</tr>
<tr>
<td>Verify Password</td>
<td><label for=\"cpass\"></label>
<input type=\"password\" name=\"verifypass\" id=\"verifypass\" /></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\"></td>
</tr>
</table>

</fieldset><input type="submit" name="submitted"/>
<input type=\"hidden\" name=\"submitted\" value=\"1\" />
</form>
<?php
if(isset($_POST["submitted"]))
{
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "rssnews";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong");


$q="INSERT INTO rss_info (`rss_id`) VALUES ('0')";
$result=mysql_query($q);
if($result) echo "saved";

}
echo "</div>";
?>

MMSHFE
شنبه 16 اردیبهشت 1391, 14:43 عصر
ضمناً توی مرحله تست، بجای پیغام خطای کلی، بهتره همون mysql_error رو نشون بدین تا ببینیم مشکل از کجاست. بعد که مشکل رفع شد یک پیغام خطای کلی برای کاربر بگذارین. موفق باشید.

css-man
شنبه 16 اردیبهشت 1391, 15:15 عصر
من مجبور شدم کد شما رو اینجوری تغییر بدم
ولی درستش کنید
اینو تست کردم درست کار کرد
اشکال در کوری شما هست


<?php
echo "<div id='picr'>";
?><form method=post>
<fieldset>
<table width=\"347\" height=\"274\" id=\"form\">
<tr>
<td>Username:</td>
<td><label for=\"username\"></label>
<input type=\"text\" name=\"username\" id=\"username\" /></td>
</tr>
<tr>
<td>E-mail:</td>
<td><label for=\"email\"></label>
<input type=\"text\" name=\"email\" id=\"email\" /></td>
</tr>
<tr>
<td>Password</td>
<td><label for=\"pass\"></label>
<input type=\"password\" name=\"pass\" id=\"pass\" /></td>
</tr>
<tr>
<td>Verify Password</td>
<td><label for=\"cpass\"></label>
<input type=\"password\" name=\"verifypass\" id=\"verifypass\" /></td>
</tr>
<tr>
<td colspan=\"2\" align=\"center\"></td>
</tr>
</table>

</fieldset><input type="submit" name="submitted"/>
<input type=\"hidden\" name=\"submitted\" value=\"1\" />
</form>
<?php
if(isset($_POST["submitted"]))
{
$mysql_hostname = "localhost";
$mysql_user = "root";
$mysql_password = "";
$mysql_database = "rssnews";
$prefix = "";
$bd = mysql_connect($mysql_hostname, $mysql_user, $mysql_password) or die("Opps some thing went wrong");
mysql_select_db($mysql_database, $bd) or die("Opps some thing went wrong");


$q="INSERT INTO rss_info (`rss_id`) VALUES ('0')";
$result=mysql_query($q);
if($result) echo "saved";

}
echo "</div>";
?>

این هم مثل قبلی میشه

اون پروژه خودتون هم که خواستم با آدرس ایمل مدیریت و پسوردی که تو دیتابیسش بود وارد بشم وارد نمیشد

هیچ عکس العملی نشون نمیداد

ولی بقیه می شد توی سبد خرید جنس اضافه کرد و یا پاک کرد

css-man
شنبه 16 اردیبهشت 1391, 15:19 عصر
دیتا بیسمم ضمیمه کردم یه نگاهی بکنید شاید اون مشکلی داشته باشه

یه یوزر دستی وارد کردم ولی با ثبتنام نمیشه

MMSHFE
شنبه 16 اردیبهشت 1391, 16:35 عصر
با سلام، این کد رو امتحان کنید. امیدوارم مشکل رفع شده باشه.


<?php
if(isset($_POST['submitted'])) {
$dbc = mysqli_connect('localhost', 'root', '', 'doci');
mysqli_query('SET NAMES \'utf8\'');
mysqli_set_charset('utf8');
$error = array();
if(!empty($_POST['username'])) {
$u = $_POST['username'];
}
else {
$error[] = "You forgot to enter your username";
}
if(!empty($_POST['pass'])) {
$p = $_POST['pass'];
}
else {
$error[] = "You forgot to enter your password";
}
if(!empty($_POST['email'])) {
$e = $_POST['email'];
}
else {
$error[] = "You forgot to enter your email";
}
if(!empty($_POST['verifypass'])) {
if($_POST['verifypass'] != $_POST['pass'])) {
$error[] = "You both password are not matched";
}
}
else {
$error[] = 'You forgot enter your verify password';
}
if(empty($error)) {
$now = time();
$q = "INSERT INTO `user` (`username`,`password`,`email`,`creation_date`,`st atus`) VALUES ('{$u}','{$e}','".md5($p)."',{$now},0)";
$r = mysqli_query($dbc, $q);
if($r && mysqli_affected_rows() > 0) {
echo $msg = "<p>Registration done successfully. Thank you very much.</p>";
}
else {
echo '<p>An unknown system error is occured. If this persists please contact admin.</p>';
echo '<p><b>DEBUG MODE</b>&nbsp;Error #'.mysqli_errno($dbc).' : '.mysqli_error($dbc).'</p>';
}
}
else {
echo '<p class="error">Below errors encountered:</p>';
foreach($error as $val) {
echo '<p> -'.$val.'</p>';
}
echo '<p class="error">Please try again</p>';
}
mysqli_close($dbc);
}
?>

اگه اجرا شد، خط زیر رو حذف کنید. وگرنه، باشه تا ببینیم خطا چی بوده.

echo '<p><b>DEBUG MODE</b>&nbsp;Error #'.mysqli_errno($dbc).' : '.mysqli_error($dbc).'</p>';

css-man
شنبه 16 اردیبهشت 1391, 16:52 عصر
این ارور ها رو داد

DEBUG MODE Error #1054 : Unknown column 'creation_date' in 'field list'

Warning: mysqli_query() expects at least 2 parameters, 1 given in C:\wamp\www\project\register - Copy.php on line 50

Warning: mysqli_set_charset() expects exactly 2 parameters, 1 given in C:\wamp\www\project\register - Copy.php on line 51

MMSHFE
شنبه 16 اردیبهشت 1391, 17:08 عصر
خوب برادر من فیلد creation_date رو چک کنید ببینید به همین شکل توی دیتابیس دارین یا نه؟ حروف بزرگ و کوچک هم مهمه. راستی، من یادم رفت (یعنی راستش همینطوری سریع توی Notepad نوشتم). تابعهای mysqli_query اول و mysqli_set_charset دوتا پارامتر میگیرن. یک پارامتر اول اضافه کنید و dbc$ رو اونجا بگذارین تا Warningها حذف بشن.

css-man
شنبه 16 اردیبهشت 1391, 17:23 عصر
خوب برادر من فیلد creation_date رو چک کنید ببینید به همین شکل توی دیتابیس دارین یا نه؟ حروف بزرگ و کوچک هم مهمه. راستی، من یادم رفت (یعنی راستش همینطوری سریع توی Notepad نوشتم).

اسم این فیلد در دیتابیس یک حرف کم داشت که درستش کردم

حالا اطلاعات درج میشه
اما منظور شما رو از


تابعهای mysqli_query اول و mysqli_set_charset دوتا پارامتر میگیرن. یک پارامتر اول اضافه کنید و dbc$ رو اونجا بگذارین تا Warningها حذف بشن.


نفهمیدم


این پیغام هم اضافه شدد

Warning: mysqli_affected_rows() expects exactly 1 parameter, 0 given in C:\wamp\www\project\register - Copy.php on line 83

خط 83 رو چک میکنم و متوجه نمیشم منظورشو

چون تازه کار هستم

ارور بخش else این شرط هم هنوز نمایش داده میشه




if($r && mysqli_affected_rows() > 0) {
echo $msg = "<p>Registration done successfully. Thank you very much.</p>";
}
else {
echo '<p>An unknown system error is occured. If this persists please contact admin.</p>';




ارور رو با رنگ قرمز مشخص کردم



قبل از ادامه مه خیلی از شما و آقا سعید که کمکم میکنید تشکر میکنم
می دونم که با سوالها و اشتباهات مبتدیانه خستتون کردم

اما قصد دارم با این کار عملی بیشتر پی اچ پی رو یاد بگیرم

ممنون از همکاری تون

MMSHFE
شنبه 16 اردیبهشت 1391, 18:09 عصر
این کد رو تست کنید. فقط دوباره اسم فیلد creation_date رو اصلاح کنید. با بررسی تفاوت این کد با کد قبلی متوجه میشین کجاها رو گفته بودم تغییر بدین.


<?php
if(isset($_POST['submitted'])) {
$dbc = mysqli_connect('localhost', 'root', '', 'doci');
mysqli_query($dbc, 'SET NAMES \'utf8\'');
mysqli_set_charset($dbc, 'utf8');
$error = array();
if(!empty($_POST['username'])) {
$u = $_POST['username'];
}
else {
$error[] = "You forgot to enter your username";
}
if(!empty($_POST['pass'])) {
$p = $_POST['pass'];
}
else {
$error[] = "You forgot to enter your password";
}
if(!empty($_POST['email'])) {
$e = $_POST['email'];
}
else {
$error[] = "You forgot to enter your email";
}
if(!empty($_POST['verifypass'])) {
if($_POST['verifypass'] != $_POST['pass'])) {
$error[] = "You both password are not matched";
}
}
else {
$error[] = 'You forgot enter your verify password';
}
if(empty($error)) {
$now = time();
$q = "INSERT INTO `user` (`username`,`password`,`email`,`creation_date`,`st atus`) VALUES ('{$u}','{$e}','".md5($p)."',{$now},0)";
$r = mysqli_query($dbc, $q);
if($r && mysqli_affected_rows($dbc) > 0) {
echo $msg = "<p>Registration done successfully. Thank you very much.</p>";
}
else {
echo '<p>An unknown system error is occured. If this persists please contact admin.</p>';
}
}
else {
echo '<p class="error">Below errors encountered:</p>';
foreach($error as $val) {
echo '<p> -'.$val.'</p>';
}
echo '<p class="error">Please try again</p>';
}
mysqli_close($dbc);
}
?>

موفق باشید.

css-man
شنبه 16 اردیبهشت 1391, 18:23 عصر
بله تغغیرات رو متوجه شدم

خدا رو شکر درست شد یک دنیا ممنوننننن

از کمکتوننن

واقعا ممنون