PDA

View Full Version : مشکل در شناخته نشدن یک متغیر



fereshte_b
شنبه 04 مرداد 1393, 08:43 صبح
سلام دوستان
مشکل من اینه که یه متغیر دارم که توی قسمت پی اچ پی کقدار دهی شده وتو قسمت اچ تی ام ال شناخته نمیشه. و همش خطای notice توی تکست باکس هام میده. چیکار کنم رفع شه
اینم یه قسمت از کدم



if(isset($_GET['edit'])){
$r = mysql_query("SELECT * FROM st WHERE id='" . $_GET['edit'] . "'");
$user = mysql_fetch_assoc($r);
}
?>


<form action="" method="post">
<p>
<table align="right" cellpadding="4" style="margin-right:60px" >
<caption>ورود اطلاعات دانشجو</caption>


<input type="hidden" name="id" value="<?= $user['id'] ?>"/>
<tr>
<td>


شماره دانشجویی : </td><td>
<input type="text" name="st_number" value="<?= $user['st_number'] ?>" /> <br /></td>
</tr>



الان $user تو خط 3 مقدار دهی شده و توی قسمت form خط 20 شناخته شده نیست برا همین خطای notice میده

2undercover
شنبه 04 مرداد 1393, 09:08 صبح
خب شما گفتید اگر مقدار edit در متغیر $_GET موجود بود از پایگاه داده اطلاعات رو بخونه، ولی در پایین صفحه بدون هیچ شرطی همیشه می خواهید از اطلاعات واکشی شده در پایگاه داده استفاده کنید، در حالی که شاید اصلا شرط بالای صفحه اجرا نشده باشه.

fereshte_b
یک شنبه 05 مرداد 1393, 07:55 صبح
خب شما گفتید اگر مقدار edit در متغیر $_GET موجود بود از پایگاه داده اطلاعات رو بخونه، ولی در پایین صفحه بدون هیچ شرطی همیشه می خواهید از اطلاعات واکشی شده در پایگاه داده استفاده کنید، در حالی که شاید اصلا شرط بالای صفحه اجرا نشده باشه.

یعنی چی شرط نذاشتم

این کد کامل منه ببینید



if(isset($_GET['edit'])){
$r = mysql_query("SELECT * FROM st WHERE id='" . $_GET['edit'] . "'");
$user = mysql_fetch_assoc($r);
}
?>


<form action="" method="post">
<p>
<table align="right" cellpadding="4" style="margin-right:60px" >
<caption>ورود اطلاعات دانشجو</caption>


<input type="hidden" name="id" value="<?= $user['id'] ?>"/>
<tr>
<td>


شماره دانشجویی : </td><td>
<input type="text" name="st_number" value="<?= $user['st_number'] ?>" /> <br /></td>
</tr>
<tr><td>
نام : </td><td><input type="text" name="name" value="<?= $user['name'] ?>" /><br/> </td></tr>
<tr><td>نام خانوادگی :</td><td> <input type="text" name="family" value="<?= $user['family'] ?>" /> <br /></td></tr>
<tr><td>نام پدر : </td><td><input type="text" name="father" value="<?= $user['father'] ?>" /> <br /></td></tr>
<tr><td>جنسیت :</td><td> <input type="text" name="sexiality" value="<?= $user['sexiality'] ?>" /></td></tr>
<tr><td>تلفن ثابت :</td><td> <input type="text" name="phone" value="<?= $user['phone'] ?>" /></td></tr>
<tr><td>تلفن همراه :</td><td> <input type="text" name="mobile" value="<?= $user['mobile'] ?>" /> </td></tr>
<tr><td>آدرس :</td><td> <input type="text" name="address" value="<?= $user['address'] ?>" /> </td></tr>
<tr><td>
<input type="submit" name="edit" value="Save" />
<a href="panel_admin.php" style="text-decoration:none">
<input type="button" name="back" value="بازگشت"></a>
</td></tr>
</table><br/><br/>
</form>




بعدش هم select کردم که اطلاعات رو نشون بده

marys_farahani
یک شنبه 05 مرداد 1393, 09:12 صبح
منظورشون اینکه قبل از استفاده از متغییرها اولش چک کنید ببین اصلا این متغییر ایجاد شده هست که شما بخواید محتواش رو استفاده کنید



if(isset($_GET['edit'])){
$r = mysql_query("SELECT * FROM st WHERE id='" . $_GET['edit'] . "'");
$user = mysql_fetch_assoc($r);
var_dump($user);
}


var_dum();

با این روش ببینی اصلا متغییر یوزر ساخته شده و محتوا داره شاید مشکل از خروجی کوئری باشه.

fereshte_b
یک شنبه 05 مرداد 1393, 10:20 صبح
ممنون دوستان
ببخشید من هنو چندماهه وارد دنیای پی اچ پی شدم. امیدوارم بتونم تو این زمینه موفق باشم
بازم مرسی

afee1990
یک شنبه 05 مرداد 1393, 13:48 عصر
ممنون دوستان
ببخشید من هنو چندماهه وارد دنیای پی اچ پی شدم. امیدوارم بتونم تو این زمینه موفق باشم
بازم مرسی
یعنی قبل اینکه چاپش کنی با تابع isset وجود متغیرو چک کن. اگر هم نمیخوای اینکار کنی تو اولین خط کدت بنویس

error_reporting(0)
البته این بیشتر پاک کردنه صورت مساله‌س :D