رفتن به مطلب

مشکل در اتصال به پایگاه داده


پست های پیشنهاد شده

سلام دوستان

من کدهای زیر رو اجرا میکنم


<?php
$con = mysql_connect("localhost" , "root" , "");
mysql_select_db("dbtest" , $con);
mysql_query("INSERT INTO tblstudent (id , name , family , average) VALUES (20 , "ali" , "niza" , 50)");
mysql_close($con);
?>

و با ارور زیر مواجه میشم


Parse error: parse error in C:\wamp\www\index.php on line 4

نام دیتابیس و جدول و فیلدها رو هم دو سه بار چک کردم

ممنون میشم راهنمایی کنید

لینک به ارسال

سینتکس متن کوئری صحیح نیست


mysql_query("INSERT INTO tblstudent (id , name , family , average) VALUES (20 , "ali" , "niza" , 50)");

خود کوئری با دابل کوتیشن شروع شده و مقادیر هم با دابل کوتیشن که غلطه .

لینک به ارسال

سینتکس متن کوئری صحیح نیست


mysql_query("INSERT INTO tblstudent (id , name , family , average) VALUES (20 , "ali" , "niza" , 50)");

خود کوئری با دابل کوتیشن شروع شده و مقادیر هم با دابل کوتیشن که غلطه .

آهان بله دقت نکردم

دستتون درد نکنه ممنون

لینک به ارسال

دوستان یه مشکل دیگه هم پیدا کردم که ترجیح دادم دیگه تاپیک جدید نزنم

کد زیر رو وارد میکنم


<html>
<head>
</head>
<body>
<?php
$con = mysql_connect("localhost" , "root", "");
mysql_select_db("dbomid" , $con);
$var = mysql_query("select * from tblomid");
echo $var;
?>
</body>
</html>

و ارور زیر رو نشون میده


Resource id #4

لینک به ارسال

دوستان یه مشکل دیگه هم پیدا کردم که ترجیح دادم دیگه تاپیک جدید نزنم

کد زیر رو وارد میکنم


<html>
<head>
</head>
<body>
<?php
$con = mysql_connect("localhost" , "root", "");
mysql_select_db("dbomid" , $con);
$var = mysql_query("select * from tblomid");
echo $var;
?>
</body>
</html>

و ارور زیر رو نشون میده


Resource id #4

فقط با ارسال query ، اطلاعات نمایش داده نمیشه.

برای چند فیلد »


<html>
<head>
</head>
<body>
<?php
$con = mysql_connect("localhost" , "root", "");
mysql_select_db("dbomid" , $con);
$var = mysql_query("select * from tblomid");
while($row = mysql_fetch_array($var)) {
echo $row['نام فیلد'];
}
?>
</body>
</html>

برای یک فیلد »


<html>
<head>
</head>
<body>
<?php
$con = mysql_connect("localhost" , "root", "");
mysql_select_db("dbomid" , $con);
$var = mysql_query("select نام فیلد from tblomid");
$row = mysql_fetch_array($var);
echo $row['نام فیلد'];
?>
</body>
</html>

لینک به ارسال

آهان ممنون

خوب الان من از کد پایین استفاده میکنم، در بار اول مقدار فیلد اول رو نمایش میده ، در بار دوم مقدار فیلد دوم رو نمایش میده (در صورتی که نباید مقدار فیلد اول رو نشون بده باید در همون بار اول مقدار سطر اول (یعنی هر دو فیلد رو نشون بده) و در بار سوم ارور میده


<?php
$con = mysql_connect("localhost" , "root", "");
mysql_select_db("dbomid" , $con);
$var = mysql_query("select * from tblomid");
$count = mysql_num_rows($var);
$rows = mysql_fetch_row($var);
for($i=0 ; $i<$count ; $i++)
{
echo $rows[$i]."<br />";
}
?>

این هم اروری که میده ، ممنون میشم راهنمایی کنید


ali
niza
Notice: Undefined offset: 2 in C:\wamp\www\index.php on line 13

Notice: Undefined offset: 3 in C:\wamp\www\index.php on line 13

Notice: Undefined offset: 4 in C:\wamp\www\index.php on line 13

Notice: Undefined offset: 5 in C:\wamp\www\index.php on line 13

Notice: Undefined offset: 6 in C:\wamp\www\index.php on line 13

لینک به ارسال

شما برای بدست اوردن هر سطر باید 1 بار

$rows = mysql_fetch_row($var);

رو اجرا کنید(یعنی با استفاده از یک حلقه مثل حلقه while اول همه سطرها رو بدست بیارید)

مثل

while($row = mysql_fetch_array($var))

مقداری هم که در نهایت بوجود میاد یک ارایه 2 بعدی از سطرها و ستونهاست

کدتون به صورت زیر در میاد


<html>
<head>
</head>
<body>
<?php
$con = mysql_connect("localhost" , "root", "");
mysql_select_db("dbomid" , $con);
$var = mysql_query("select * from tblomid");
while($row = mysql_fetch_array($var)) {
echo $row['نام فیلد1'].'=='.$row['نام فیلد2'];
}
?>
</body>
</html>

در نهایت توابع mysql_ از دور خارج شدن بهتره از کلاسهای PDO یا MYSQLI که بهتر هستن استفاده کنید

لینکهای زیر به شما کمک میکنه


http://php.net/manual/en/function.mysql-fetch-array.php
http://stackoverflow.com/questions/2974011/while-row-mysql-fetch-arrayresult-how-many-loops-are-being-performed
http://www.w3schools.com/php/func_mysql_fetch_array.asp

لینک به ارسال

خیلی ممنون از توضیحتون (هر چند زیاد متوجه نشدم آخه هنوز به مطلب آرایه دو بعدی نرسیدم)، اما علاوه بر این توضیحات میخواستم بدونم اشکال کدی که بالا نوشتم چیه؟ (با استفاده از حلقه for)

ویرایش شده توسط Omidn1996
لینک به ارسال

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

نتیجه اون ممکنه چند سطر باشه

مثلا 10 سطر

تابع

mysql_fetch_array

فقط سطر جاری رو برمیگردونه

خب برای بدست اوردن 10 سطر شما باید 10 بار

mysql_fetch_array

رو فراخوانی کنید

مثلا با

$rows = array();
while($row = mysql_fetch_array($var))
{
$rows[] = $row;
}

خب حالا ما همه سطرها رو تو متغییر $rows داریم

حالا برای نمایش مقادیر مورد نظر میتونین از حلقه for که نوشتین استفاده کنید

$count = count($rows);
for($i=0 ; $i<$count ; $i++)
{
echo $rows[$i]['نام فیلد']."<br />";
}

لینک به ارسال

خیلی ممنون متوجه شدم

حالا یه مشکلی دیگه دارم که ممنون میشم کمک کنید (که ارتباطی هم با عنوان تاپیک نداره اما چون تازه دارم php یادمیگیرم ممکنه زیاد با مشکل مواجه بشم واسه همین نمیخوام هر رو یه تاپیک بزنم و انجمن شلوغ بشه، اگر عنوان تاپیک رو مدیران عوض کنند ممنون میشم)

من کد زیر رو توی ایندکس میگذارم


<?php
import_request_variables('p','p_');
if(isset($p_usname) && ($p_pass))
{
if($p_usname == admin && $p_pass == 123)
{
session_start();
$_session['username']=$p_usname ;
header("location:login.php");
}
else
{
echo "plz check ur usname and pss";
}
}
?>
<html>
<head>
</head>
<body>
<div style="line-height:60px; text-align:center; margin-top:200px;">
<form action="" method="post">
Username: <input type="text" name="usname" /><br/>
Password: <input type="password" name="pass" /><br/>
<input type="submit" value="log in" />
</form>
</div>
</body>
</html>

و کد زیر رو هم توی فایل login.php


<?php
session_start();
if(isset($_session['username']))
{
echo "wellcome to management page";
}
else
echo "plz enter the usname ant pass";
?>

که طبیعتا اگر یوزرنیم admin و پسورد 123 رو وارد کنیم، باید به login.php وارد بشیم و عبارت "wellcome to management page" رو نشون بده، اما حتی اگر یوزر و پسورد رو درست وارد کنیم عبارت "plz enter the usname ant pass" نمایش داده میشه ، یعنی یه جوری سشن کار نمیکنه

ممنون میشم راهنمایی کنید.

لینک به ارسال

خیلی ممنون متوجه شدم

حالا یه مشکلی دیگه دارم که ممنون میشم کمک کنید (که ارتباطی هم با عنوان تاپیک نداره اما چون تازه دارم php یادمیگیرم ممکنه زیاد با مشکل مواجه بشم واسه همین نمیخوام هر رو یه تاپیک بزنم و انجمن شلوغ بشه، اگر عنوان تاپیک رو مدیران عوض کنند ممنون میشم)

من کد زیر رو توی ایندکس میگذارم


<?php
import_request_variables('p','p_');
if(isset($p_usname) && ($p_pass))
{
if($p_usname == admin && $p_pass == 123)
{
session_start();
$_session['username']=$p_usname ;
header("location:login.php");
}
else
{
echo "plz check ur usname and pss";
}
}
?>
<html>
<head>
</head>
<body>
<div style="line-height:60px; text-align:center; margin-top:200px;">
<form action="" method="post">
Username: <input type="text" name="usname" /><br/>
Password: <input type="password" name="pass" /><br/>
<input type="submit" value="log in" />
</form>
</div>
</body>
</html>

و کد زیر رو هم توی فایل login.php


<?php
session_start();
if(isset($_session['username']))
{
echo "wellcome to management page";
}
else
echo "plz enter the usname ant pass";
?>

که طبیعتا اگر یوزرنیم admin و پسورد 123 رو وارد کنیم، باید به login.php وارد بشیم و عبارت "wellcome to management page" رو نشون بده، اما حتی اگر یوزر و پسورد رو درست وارد کنیم عبارت "plz enter the usname ant pass" نمایش داده میشه ، یعنی یه جوری سشن کار نمیکنه

ممنون میشم راهنمایی کنید.

شرط رو درست وارد نکردید :


if($p_usname == admin && $p_pass == 123)

باید به این صورت باشه :


if($p_usname == "admin" && $p_pass == "123")

لینک به ارسال

ممنون از راهنماییتون اما فکر نمیکنم مشکل چیزی باشه که شما گفتید

اگر مشکل از اون بود باید عبارت "plz check ur usname and pss" نمایش داده میشد ، در صورتی که الان یوزر و پسود تایید میشن و به صفحه ی login.php هدایت میشه اما اونجا سشن ها کار نمیکنه

لینک به ارسال

یه چیز دیگه الان دیدم.

session_start رو باید داخل ایندکس بذارید.

اونجا که وقتی کاربر لاگین میکنه ، session مقدار دهی میشه ، session هنوز start نشده

لینک به ارسال

توی فایل ایندکس هم که گذاشتم

اول سشن استارت شده بعد مقدار دهی میشه

:huh:

درست شد ؟

لینک به ارسال

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

لینک به ارسال

از تمام توابع شما برای من خطا گرفت :huh: مخصوصا import_request_variables که نمیدونم چی هست اصلا :D و ندیدم کسی استفاده کنه.

صفحه ایندکس :


<?php
session_start();
if(isset($_POST['submit'])) {
if($_POST['usname'] == "admin" && $_POST['pass'] == 123) {
$_SESSION['username']=$_POST['usname'];
header("location: login.php");
}
else
{
echo "plz check ur usname and pss";
}
}
?>
<html>
<head>
</head>
<body>
<div style="line-height:60px; text-align:center; margin-top:200px;">
<form action="" method="post">
Username: <input type="text" name="usname" /><br/>
Password: <input type="password" name="pass" /><br/>
<input name="submit" type="submit" value="log in" />
</form>
</div>
</body>
</html>

صفحه لاگین :


<?php
session_start();
if(isset($_SESSION['username']))
{
echo "wellcome to management page";
}
else
echo "plz enter the usname ant pass";
?>

لینک به ارسال

ممنون

بله کد شما درست بود، و عمل کرد، اما نمیدونم برای چی کد من عمل نمیکنه، من دنبال حل مشکل کد خودم هستم، ممنون میشم راهنمایی کنید.

-----------------------------------

با تابع import_request_variables میشه به مقادیری که از طریق فرم فرستادید دسترسی پیدا کرد اگر که مقادیر رو با متد post فرستادید مقدار اول باید p باشه و اگر با متد get فرستادید مقدار اول باید g باشه و مقدار دوم هم پیشوند دسترسی به اون مقدادیر رو مشخص میکنه

مثلا شما یه تکست باکس با name ه pass دارید که با متد post فرستادید ، اگر i


import_request_variables('p' , 'p_')

رو وارد کنید میتونید با $p_pass به اون دسترسی داشته باشید و دیگه نیازی به استفاده از


$_POST['pass']

نیست (نمیدونم تونستم خوب توضیح بدم یا نه)

لینک به ارسال

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

Fatal error: Call to undefined function import_request_variables()

کد خودم تا session_start داخل هر 2 صفحه نذاشتم کار نکرد

ویرایش شده توسط Ghasem Paran
لینک به ارسال

خیر من همچنین اروری نمیگیرم

خوب اگر به کد من هم توجه کنید توی هر دو صفحه session_start() وجود داره

لینک به ارسال

من تست کردم کد شما درست هست و پیغام

"wellcome to management page" رو نمایش داد

کد کی درسته؟ من یا آقا قاسم؟ چون کد ایشون درسته و عمل میکنه

اما من دنبال اینم ببینم مشکل کد خودم چیه

چون الان دوباره کد خودم رو اجرا کردم و باز هم پیغام " plz enter the usname ant pass" رو نمایش داد

لینک به ارسال

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع ...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...