نمایش نتایج 1 تا 4 از 4

نام تاپیک: بررسی فیلد خالی PHP

  1. #1

    بررسی فیلد خالی PHP

    سلام من از برنامه نویسی هیچی نمیدونم. یه کد از اینترنت پیدا کردم که باهاش میشه در دیتابیس mysql با استفاده از php جستجو کرد. با اینکه همه چیز درست کار میکنه ولی یه مشکلی وجود داره و اون اینه که اگه فیلد خالی باشه و کسی دکمه go رو بزنه در صفحه بعد همه محتویات دیتابیس نشون داده میشه. کاری که من میخوام بکنم اینه که با یه خط به کدهای php اضافه کنم که اگه کسی فیلد جستجو رو خالی گذاشت و دکمه go یا search رو زد یا اینکه مستقیم به آدرس صفحه search.php رفت، در صفحه پیامی نشان داده بشه و بگه چیزی یافت نشد یا محتوایی برای نمایش وجود ندارد.

    کد های من از دو قسمت تشکیل شده که در فایل های index.php و search.php هستند.

    محتوای فایل index.php

    <!DOCTYPE html><html>
    <head>
    <title>Search</title>
    </head>
    <body>
    <form action="./search.php" method="get">
    <input type="text" name="q">
    <input type="submit" value="go">
    </form>
    </body>
    </html>





    محتوای فایل search.php
    <?php	
    $conn = mysqli_connect("localhost", "user", "pass", "db_name");

    if(mysqli_connect_errno()){
    echo "Failed to connect: " . mysqli_connect_error();
    }


    error_reporting(0);


    $output = '';



    if(isset($_GET['q']) && $_GET['q'] !== ' '){
    $searchq = $_GET['q'];

    $q = mysqli_query($conn, "SELECT * FROM search WHERE keywords LIKE '%$searchq%' OR title LIKE '%$searchq%'") or die(mysqli_error());
    $c = mysqli_num_rows($q);
    if($c == 0){
    $output = 'No search results for <b>"' . $searchq . '"</b>';
    } else {
    while($row = mysqli_fetch_array($q)){
    $id = $row['id'];
    $title = $row['title'];
    $desc = $row['description'];
    $link = $row['link'];

    $output .= '<a href="' . $link . '">
    <h3>' . $title . '</h3>
    <p>' . $desc . '</p>
    </a>';
    }
    }
    } else {
    header("location: ./");
    }
    print("$output");
    mysqli_close($conn);

    ?>

  2. #2

    نقل قول: بررسی فیلد خالی PHP

    توی فایل index.php میتونید از امکانات html5 استفاده کنید و کاربر ملزم بشه که فیلد رو باید پر کنه پارامتر reuired بصورت زیر
    <input type="text" name="q" required>


    در گرفتن داده از کاربر شرط رو بصورت زیر تغییر بدید که ابتدا چک کنه اگر نامعتبر بود کلا برگرده و ادامه نده
    البته بهینه تر هست که ابتدا ورودی کاربر رو چک کنه اگر نامعتبر بود اصلا به دیتابیس وصل نشه

    <?php


    $searchq = isset($_GET['q']) && !empty($_GET['q']) ? $_GET['q'] : null;
    if ($searchq == null) {
    header("location: ./");
    return;
    }


    $conn = mysqli_connect("localhost", "user", "pass", "db_name");


    if (mysqli_connect_errno()) {
    echo "Failed to connect: " . mysqli_connect_error();
    header("location: ./");
    return;
    }


    error_reporting(0);


    $output = '';


    $q = mysqli_query($conn, "SELECT * FROM search WHERE keywords LIKE '%$searchq%' OR title LIKE '%$searchq%'") or die(mysqli_error());
    $c = mysqli_num_rows($q);
    if ($c == 0) {
    $output = 'No search results for <b>"' . $searchq . '"</b>';
    } else {
    while ($row = mysqli_fetch_array($q)) {
    $id = $row['id'];
    $title = $row['title'];
    $desc = $row['description'];
    $link = $row['link'];


    $output .= '<a href="' . $link . '">
    <h3>' . $title . '</h3>
    <p>' . $desc . '</p>
    </a>';
    }
    }


    print("$output");
    mysqli_close($conn);


    ?>

  3. #3

    نقل قول: بررسی فیلد خالی PHP

    نقل قول نوشته شده توسط مهرداد سیف زاده مشاهده تاپیک
    توی فایل index.php میتونید از امکانات html5 استفاده کنید و کاربر ملزم بشه که فیلد رو باید پر کنه پارامتر reuired بصورت زیر
    <input type="text" name="q" required>


    در گرفتن داده از کاربر شرط رو بصورت زیر تغییر بدید که ابتدا چک کنه اگر نامعتبر بود کلا برگرده و ادامه نده
    البته بهینه تر هست که ابتدا ورودی کاربر رو چک کنه اگر نامعتبر بود اصلا به دیتابیس وصل نشه

    <?php


    $searchq = isset($_GET['q']) && !empty($_GET['q']) ? $_GET['q'] : null;
    if ($searchq == null) {
    header("location: ./");
    return;
    }


    $conn = mysqli_connect("localhost", "user", "pass", "db_name");


    if (mysqli_connect_errno()) {
    echo "Failed to connect: " . mysqli_connect_error();
    header("location: ./");
    return;
    }


    error_reporting(0);


    $output = '';


    $q = mysqli_query($conn, "SELECT * FROM search WHERE keywords LIKE '%$searchq%' OR title LIKE '%$searchq%'") or die(mysqli_error());
    $c = mysqli_num_rows($q);
    if ($c == 0) {
    $output = 'No search results for <b>"' . $searchq . '"</b>';
    } else {
    while ($row = mysqli_fetch_array($q)) {
    $id = $row['id'];
    $title = $row['title'];
    $desc = $row['description'];
    $link = $row['link'];


    $output .= '<a href="' . $link . '">
    <h3>' . $title . '</h3>
    <p>' . $desc . '</p>
    </a>';
    }
    }


    print("$output");
    mysqli_close($conn);


    ?>
    ممنون از شما کد زیر که نوشتید به خوبی جواب داد.

    $searchq = isset($_GET['q']) && !empty($_GET['q']) ? $_GET['q'] : null;if ($searchq == null) {    header("location: ./");    return;}


    حالا یه چیزی به ذهنم رسید. اگه بخوام کاری کنم که کسی نتونه از کاراکترهای خاص یا عدد یا نقطه به تنهایی در قسمت search استفاده کنه باید چه تغییری در کد بالا بدم که علاوه بر اینکه کار کد بالا رو انجام میده این کار جدید رو هم انجام بده؟ چون نمیخوام کسی با وارد کردن علامت سوال یا نقطه یا عدد به هرچی اطلاعات در دیتابیس هست دسترسی پیدا کنه. الان اگه یک نفر یک نقطه رو به تنهایی در کادر جستجو تایپ کنه و دکمه رو بزنه تمام چیزهایی که در دیتابیس با نقطه هست براش نشون داده میشه.
    ممنون میشم اگه در این مورد هم کمک کنید.

  4. #4

    نقل قول: بررسی فیلد خالی PHP

    میتونید فیلتر کنید. مقایسه رشته در php ساده هست یا براش regular expression تعریف کنید.
    مثلا

    $filter = array('.','?','+','=','-');
    if ($searchq == null || in_array($searchq,$filter)) {
    header("location: ./");
    return;
    }


تاپیک های مشابه

  1. سوالی در مورد متنهای فارسی و ادیت فارسی در گوشیهای که فارسی پشتیبانی نمیکنند
    نوشته شده توسط Mehran_Asghari در بخش Java ME : نگارش میکرو جاوا
    پاسخ: 3
    آخرین پست: شنبه 21 بهمن 1385, 17:37 عصر

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •