kingblog 14 ارسال شده در آذر 97 گزارش بازنشر ارسال شده در آذر 97 دوستان سلام من یک فیلد tagbox دارم که نام کاربری افراد رو توی اون وارد می کنم و میخوام بررسی کنم که آیا این نام هایی که وارد شده ، حقیقی هستند یا نه یعنی این نام کاربری در دیتاباس وجود دارد یا نه value اینپوت یا تگ باکس به این شکل ارسال میشه: کد: ali,reza,ali24 با کد زیر اونها رو جدا میکنم: کد PHP: $D->userss=$_POST['users']; $D->usersss=explode(",",$D->userss); و با کد زیر اطلاعات رو بررسی میکنم: کد PHP: foreach($D->usersss as $i =>$key) { $D->chisuser = $db2->fetch_field('SELECT username FROM users WHERE username="'.$key.'" AND active=1'); if($D->userss != "" && $key != $D->chisuser){ $error = 1; }elseif($D->userss != "" && $key == $D->chisuser){ $error = 0;} } if($error == 0){ $db2->query('UPDATE ?? SET usernam="'.$D->userss.'" LIMIT 1'); echo "عملیات موفق"; exit; }elseif($error == 1){ echo " نام کاربری وارد شده وجود ندارد"; exit; } تا وقتی که یک نام کاربری وارد بشه مشکلی نیست ولی وقتی بیشتر وارد کنم مشکل دارم اگه اطلاعات به شکل زیر وارد بشه (kl نام کاربری که وجود ندارد): پیغام میده که عملیات موفق ولی اگه به این شکل وارد بشه: میگه نام کاربری اشتباه در صورتی که در هر دو مورد یک نام کاربری اشتباه وجود دارد نقل قول لینک به ارسال
Mobin 1669 ارسال شده در آذر 97 گزارش بازنشر ارسال شده در آذر 97 این بخاطر اون Exit هایی هست که داخل شرط error قرار دادین اینجوری همیشه حلقه فقط 1 بار اجرا میشه اگه اولین ایتم درست باشه پیغام "عملیات موفق" و اگه اشتباه باشه خطای "نام کاربری وارد شده وجود ندارد" میده اون exit ها رو بردارین 2 نقل قول لینک به ارسال
kingblog 14 ارسال شده در آذر 97 مالک گزارش بازنشر ارسال شده در آذر 97 (ویرایش شده) ممنون از شما دوست عزیز کاری که گفتین انجام دادم ولی تغییری نکرد. مثلا با وارد کردن 3 نام کاربری که وجود دارند و 1 نام کاربری که وجود ندارد اینجوری پیغام میده: عملیات موفق عملیات موفق نام کاربری وارد شده وجود نداردعملیات موفق اگه اطلاعات به شکل زیر وارد بشه (kl نام کاربری که وجود ندارد): پیغام میده که عملیات موفق ولی اگه به این شکل وارد بشه: میگه نام کاربری اشتباه به این خاطره که وقتی نام کاربری اولی رو که چک میکنه و وجود نداره ، error برابر 1 میشه ولی در ادامه نام کاربری دوم رو که چک میکنه و چون وجود داره دوباره error برابر 0 میشه واسه همین مشکل پیش میاد ویرایش شده آذر 97 توسط kingblog نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 97 گزارش بازنشر ارسال شده در آذر 97 سلام و درود @kingblog کد بررسی رو به شکل زیر تغییر بدید. $error = array(); foreach($D->usersss as $i => $key) { $D->chisuser = $db2->fetch_field('SELECT username FROM users WHERE username="' . $key . '" AND active=1'); if ($D->userss != "" && $key != $D->chisuser) { $error[] = 1; } elseif ($D->userss != "" && $key == $D->chisuser) { $error[] = 0; } } if (in_array(1, $error)) { echo "نام کاربری وارد شده وجود ندارد"; } else { $db2->query('UPDATE ?? SET usernam="' . $D->userss . '" LIMIT 1'); echo "عملیات موفق"; } 2 نقل قول لینک به ارسال
kingblog 14 ارسال شده در آذر 97 مالک گزارش بازنشر ارسال شده در آذر 97 mehran-b عزیز واقعا عالی بود. مثل همیشه نقل قول لینک به ارسال
kingblog 14 ارسال شده در آذر 97 مالک گزارش بازنشر ارسال شده در آذر 97 ببخشید یه سوال دیگه داشتم اون نام کاربری ها همونطور که گفتم به این شکل در ستون tousers ذخیره میشن: ali,reza,ali24,mreza الان چجوری بفهمم که نام کاربری من داخل ستون tousers هست یا نه مثلا نام کاربری من reza هست، میخوام فقط ردیف هایی رو که توشون reza هست نشون بده مثلا mreza یا عبارات مشابه رو نشون نده این کوئری من هست: $numg=10; $D->chazmoonforme = array(); $r = $db2->query('SELECT * FROM azmoon WHERE status=1 AND tousers like "'.$this->username.'" ORDER BY id DESC LIMIT '.($numg)); while($o = $db2->fetch_object($r)) { $D->chazmoonforme[] = array($this->network_user_id($o->userid),$o->title,$o->clas,$o->about,$o->id,$o->rating,$o->time,$o->numsoal); } $D->chazmoonforme = array_slice($D->chazmoonforme, 0 , $numg); وقتی که فقط یک کلمه داخل ستون باشه مثلا reza تنها باشه درست کار می کنه ولی وقتی بیشتر میشه مثلا reza,ali جواب نمیده و حتی اینجوری تغییر دادم: like "٪'.$this->username.'٪" ولی عبارات مشابه اون رو هم نشون میده نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 97 گزارش بازنشر ارسال شده در آذر 97 @kingblog این داده ها که با ویرگول جدا شدن همگی توی یه رکورد از ستون tousers هستند؟ 1 نقل قول لینک به ارسال
kingblog 14 ارسال شده در آذر 97 مالک گزارش بازنشر ارسال شده در آذر 97 سلام دوست عزیز بله نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 97 گزارش بازنشر ارسال شده در آذر 97 @kingblog والا این حرکت که توی یه رکوردن و با ویرگول جدا شدن حرکت جالبی زیاد نیست توی کوئری زدن. البته راه داره ولی سخته. با اپراتور RLIKE که به صورت RegEX سلکت میکنه ببینید میتونید کاریش کنید. 1 نقل قول لینک به ارسال
kingblog 14 ارسال شده در آذر 97 مالک گزارش بازنشر ارسال شده در آذر 97 از RLIKE استفاده کردم ولی تا وقتی نام کاربری مشابه وجود نداشته باشه درست کار میکنه ولی اگه مثلا یک نام کاربری mmm باشه و یک نام کاربری دیگه mmmm باشه، این دو نام کاربری رو یکی حساب میکنه چون توی هر دو سه تا m پشت سر هم بکار رفته یا نام کاربری kmmmlj رو هم همینجور نقل قول لینک به ارسال
mehran-b 2385 ارسال شده در آذر 97 گزارش بازنشر ارسال شده در آذر 97 در ۱ ساعت قبل، kingblog گفته است : از RLIKE استفاده کردم ولی تا وقتی نام کاربری مشابه وجود نداشته باشه درست کار میکنه ولی اگه مثلا یک نام کاربری mmm باشه و یک نام کاربری دیگه mmmm باشه، این دو نام کاربری رو یکی حساب میکنه چون توی هر دو سه تا m پشت سر هم بکار رفته یا نام کاربری kmmmlj رو هم همینجور والا سختش کردی کد سلکت پیچیده میشه. من الگوی خاصی به ذهنم نمیاد. 1 نقل قول لینک به ارسال
پست های پیشنهاد شده
به گفتگو بپیوندید
هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .