مهدی طیبی
3 سال پیش توسط مهدی طیبی مطرح شد
6 پاسخ

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

سلام دوستان وقتتون بخیر باشه .
من در حال تمرین مربوط به php هم و برای خودم پروژه های کوچیک ایجاد و تعریف کردم .
این پروژه من درباره ایجاد یک فرم جستجوی ساده و اتصال به دیتابیس و در نهایت نمایش خروجی می باشد .
خروجی و نتایج به درستی برای من نمایش داده می شود . اما مشکلی که دارم در این هست که قبل از اینکه من درون فرم جستجوی خودم چیزی وارد کنم چون در بخش پایین فرم برای فراخوانی نتایج از حلقه while استفاده کردم بهم بعد از لود شدن صفحه ارور های زیر رو نمایش می دهد :

Notice: Undefined variable: row in E:\xampp\htdocs\php\09\form.php on line 27
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, null given in E:\xampp\htdocs\php\09\form.php on line 27

دلیلش هم مشخص هست چون هنوز فرمی به سمت سرور ارسال نشده در نتیجه نمیتونه متغیر row را شناسایی کنه . پیشنهادتون برای این موضوع چی هست ؟ قبل از حلقه while از دستور if isset استفاده کنم یا مورد بهتر و تمیز تری سراغ دارید ؟

کدهای مربوط به فرم هم به صورت زیر هست :

<?php
    if(isset($_POST['btn'])){
        $str=$_POST['str'];
        //echo $str;
        $a=mysqli_connect("localhost","root","","php_test");
        $sql="SELECT * FROM users_tbl WHERE name LIKE '%$str%'";
        $row=mysqli_query($a,$sql);
    }
?>
<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <form method="post">
        <input type="text" name="str" />
            <select>
                <option>name</option>
                <option>lastname</option>
            </select>
        <input type="submit" name="btn" />
    </form>
    <ul>
        <?php
            while($res=mysqli_fetch_array($row)){
                echo "<li>".$res['name']."</li>";
            }
        ?>
    </ul>
</body>
</html>

ممنون از همگی دوستان🙏


ثبت پرسش جدید
رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش آپدیت شد
1

سلام وقتتون بخیر!

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

 while(!empty($row) and $res=mysqli_fetch_array($row)){
                echo "<li>".$res['name']."</li>";
            }

پشنهاد من این هست که از PDO استفاده کنید و برای پیمایش هم میتونید از حلقه foreach استفاده کنید.

من الان نمیدونم داخل متغیر res چی هست شاید اون رو هم بشه با foreach نوشت


sinaQ
تخصص : magican
@sinaQasemi 3 سال پیش مطرح شد
0
if(isset($_POST['btn'])){
    if(empty($row)){
        echo " ";
    }else{
         while($res=mysqli_fetch_array($row)){
            echo "<li>".$res['name']."</li>";
         }
    }
}else{
    echo " ";
}

رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش آپدیت شد
1

سلام وقتتون بخیر!

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

 while(!empty($row) and $res=mysqli_fetch_array($row)){
                echo "<li>".$res['name']."</li>";
            }

پشنهاد من این هست که از PDO استفاده کنید و برای پیمایش هم میتونید از حلقه foreach استفاده کنید.

من الان نمیدونم داخل متغیر res چی هست شاید اون رو هم بشه با foreach نوشت


Reza
تخصص : برنامه نویس وب
@Rezanp7 3 سال پیش مطرح شد
0

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


مهدی طیبی
تخصص : طراح سایت
@mehditayebi 3 سال پیش مطرح شد
0

@Rp76 مرسی ازتون بابت پاسخ خوبتون . راستش هنوز به سرفصلهای مربوط به pdo نرسیدم و دارم همینطور مرحله به مرحله بالا میرم .
بازم ممنون .


رضا پارسیان
تخصص : توسعه دهنده Php , Laravel
@Rp76 3 سال پیش مطرح شد
0

بسیار هم عالی

اون قسمت رو خیلی خوب بخونید!
مهم ترین قسمت اتصال به دیتابیس هست.

برنامه نویسی فقط سفید کردن صفحه های سیاه نیست! یک سبک از زندگی هست به اون عادت کنید


محمد حمزه
تخصص : جستجوگر
@mohammadhamza 1 سال پیش مطرح شد
0

سلام ممنون از محتوا و نظرات خوبتون
چطوری میشه دو یا چند تا متغییر رو برای چند تا ستون سرچ کرد مثلا بگیم توی ستون تایتل اونایی که خرید هستش رو بگیر و از بخش استاتوس اونایی که خرید شده هستش رو انتخاب بکن و برام بیار که انگار دامنه سرچ رو دوبار انجام میدیم


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

ورود یا ثبت‌نام