-
کد یه مشکل کوچولو داشت
من زمانی که داشتم کد رو چک میکردم به جای متغیر از یه رشته استفاده کردم
و چون رشته بود باید میزاشتم تو دابل کوتیشن ( " ) دیگه یادم رفت اونجا رو تغییرش بدم و به سینگل کوتیشن تغییرش بدم
این خط رو عوض کن:
[PHP]$number= mysql_fetch_array(mysql_query("SELECT number FROM members WHERE lname='$_LName'"));[/PHP]
-
باز همونه. اررور نمی ده ولی نتیجه ای رو هم برنمی گردونه
اصلا احتمال داره مشکل از جدول های بانک اطلاعاتی باشه.
اگه ممکنه براتون کامل بفرستم یه چک بکنید ببینید کجاش مشکل داره.
-
این کد رو امتحان کن ببین جواب میده:
[PHP]
<form method="get" action="<?php $_SERVER['PHP_SELF']?>">
<input type="text" name="lname" />
<input type="submit" value="send" />
</form>
<?php
// Search
if(isset($_GET['lname'])){
$con = mysql_connect('localhost', 'root', '123456') or die(mysql_error());
mysql_select_db('bank', $con) or die(mysql_error());
$_LName = $_GET['lname'];
if (!$con) {
printf("".$txt['errordb'].": %s\n", mysql_error());
exit();
}
$number= mysql_fetch_array(mysql_query("SELECT number FROM members WHERE lname='$_LName'")) or die(mysql_error());
echo "$number[0]";
mysql_close($con);
// end of searching
}
?>[/PHP]
اگر اروری هم تو دیتابیست داشته باشیایم کد باید نشون بده
-
اررور نمی ده. اصلا می شه بانک اطلاعاتیش رو به صورت mysql برام بفرستی تا import کنم. فکر می کنم مشکل از دیتابیس باشه.
خلاصه هیچ ارروری نداد. نتیجه ای رو هم برنمی گردونه.
-
البته یه چیزی که هست، اینه که من اینو گذاشتم تو برنامه خودم، و اجراش که می کردم، درست اررور نمی داد، ولی از همونجا کد متوقف می شد و ادامه برنامه رو نمی خوند. احتمالا یه مشکلی تو بانک اطلاعاتی باشه. شما اینطور فکر نمی کنید؟ چون من اونقدرا تو تنظیم بانک اطلاعاتی مهارت ندارم و دقیقا نمی دونم برای هر داده ای چی رو براش باید تعریف کرد.
-
بانک اطلاعاتی من چیزی نداره
2 تافیلد گذاشتم به یکی number یکی دیگه lname همین
تنظیمات خاصی هم نمیخواد
تو بانک اطلاعاتی اگر اروری وجود داشت نشون میداد
من یه احتمال میدم داده ای که شما میخواید Select کنید وجود نداره یا اصلاً فیلدهای تیبل خالی هستن!!
من اون کدو نوشتم که شما با منطق کار آشنا بشید
حالا اینو چک کنید اگر هم فیلدی وجود نداشته باشه یا داده ای ذخیره نشده باشه No Match برمیگردونه
[PHP]
<form method="get" action="<?php $_SERVER['PHP_SELF']?>">
<input type="text" name="lname" />
<input type="submit" value="send" />
</form>
<?php
// Search
if(isset($_GET['lname'])){
$con = mysql_connect('localhost', 'root', '123456') or die(mysql_error());
mysql_select_db('bank', $con) or die(mysql_error());
$_LName = $_GET['lname'];
if (!$con) {
printf("".$txt['errordb'].": %s\n", mysql_error());
exit();
}
$query=mysql_query("SELECT number FROM members WHERE lname='$_LName'") or die(mysql_error());
if (mysql_num_rows($query)== 0){
echo "No Match";
}else{
$number = mysql_fetch_array($query); echo "$number[0]";
}
mysql_close($con);
// end of searching
}
?>[/PHP]
-
واقعا شرمندم. مشکل از فارسی بودن lname ها بود. یکی رو انگلیسی نوشتم خیلی خوب پیدا کرد. راستی برای اینکه فارسی هم قبول کنه ، collection فیلد lname باید رو چی باشه؟
ضمنا چطور می شه مثلا برای جستجو انجام شده، هر چند مورد که هست بیاره و نشون بده.
من اومدم و از for برای اینکار استفاده کردم، ولی مشکل اینجاست که نمی دونم چطور سطرهای دیگه رو از آرایه زیر بدست بیارم.
[PHP]for($i=0;$i<5;$i++){
echo $number[$i][0];
}[/PHP]
فکر کردم اینطور می شه از سطر i و ستون 0 اطلاعات $number رو بیرون کشید.
-
collation_general_ci یا collation_persian_ci
خط بعد از else:
[PHP]else{
$number = mysql_fetch_array($query); echo "$number[0]";
}[/PHP]
رو به اینصورت تغییر بده:
[PHP] while($number = mysql_fetch_array($query)){
echo $number['number']." ";
}[/PHP]
-
collaction رو روی utf8-general-ci تنظیم کردم. فایده ای نداشت . ( حتی utf8-persian-ci )
تو بانک اطلاعاتی مشکلی نداره، ولی اومدم یکی رو از تو برنامه نشون دادم ، به صورت ؟؟؟؟؟؟؟؟ نشون می ده.
در صورتی که برنامه روی utf-8 هستش :
[PHP]<meta http-equiv="Content-Type" content="text/html; charset=utf-8">[/PHP]
در ضمن اون ساختار while هم هر حلقه اررور می ده. اون number کجا تعریف شده؟
اینم از اررور :
کد:
Notice: Undefined index: number in ...\index.php on line 66
-
البته یه دستور پیدا کردم، کار می کنه، ولی به نظرم جالب نمی اد :
[PHP]mysql_query('set character set utf8;');[/PHP]
برای مشکل number هم جای نامبر 0 نوشتم، درست شد. خودش به صورت اتوماتیک 0 رو یکی یکی بالا می برد و اطلاعات رو می نوشت. اگه برای مشکل فارسی راه حل دیگه ای دارین، بفرمائین و فکر کنم سوالاتم تموم شد !!!!!