• 29-07-2023, 12:08:18
    #1
    php ile yaptığım bir sitede arama işlemi başarıyla gerçekleşiyor fakat mesela hi kelemesini arattık diyelim içinde hi olan bütün kelimeleri gösteriyor bu sorunu nasıl çözebilirim? sadece aradığım kelimenin sonuç olarak çıkmasını istiyorum




    <div class="w-full flex justify-center ">
    
        <div class="column col-6 col-mx-auto mt-4">
            <form method="GET" class="md:px-32 py-3 w-full" action="dictionary.php">
                <div class="input-group">
                    <select class="select w-full" name="dictionary">
                        <option value="en_tr">English - Turkish</option>
                        <option value="de_en">Deutsch - English</option>
                        <option value="de_tr">Deutsch - Turkish</option>
                        <option value="es_en">Spanish - English</option>
                        <option value="es_tr">Spanish - Turkish</option>
                        <option value="fr_en">French - English</option>
                        <option value="fr_tr">French - Turkish</option>
                        <option value="it_en">Italian - English</option>
                        <option value="it_tr">Italian - Turkish</option>
                        <option value="pl_en">Polish - English</option>
                        <option value="pl_tr">Polish - Turkish</option>
                        <option value="ru_en">Russian - English</option>
                        <option value="ru_tr">Russian - Turkish</option>
                    </select>
                    <input class="input mt-4 w-full" type="text" name="word" placeholder="Search word...">
                    <button class="btn w-full mt-4" type="submit">Ara</button>
                </div>
            </form>
            <?php
            if ($_SERVER["REQUEST_METHOD"] == "GET" && isset($_GET["dictionary"]) && isset($_GET["word"])) {
    $dictionary = $_GET["dictionary"];
    $word = $_GET["word"];
    
    require_once 'includes/dbconn.php';
    
                $column1 = '';
    $column2 = '';
    
    switch ($dictionary) {
    case "en_tr":
    $column1 = "english";
    $column2 = "turkish";
    break;
    case "de_en":
    $column1 = "german";
    $column2 = "english";
    break;
    case "de_tr":
    $column1 = "german";
    $column2 = "turkish";
    break;
    case "es_en":
    $column1 = "spanish";
    $column2 = "english";
    break;
    case "es_tr":
    $column1 = "spanish";
    $column2 = "turkish";
    break;
    case "fr_en":
    $column1 = "french";
    $column2 = "english";
    break;
    case "fr_tr":
    $column1 = "french";
    $column2 = "turkish";
    break;
    case "it_en":
    $column1 = "italian";
    $column2 = "english";
    break;
    case "it_tr":
    $column1 = "italian";
    $column2 = "turkish";
    break;
    case "pl_en":
    $column1 = "polish";
    $column2 = "english";
    break;
    case "pl_tr":
    $column1 = "polish";
    $column2 = "turkish";
    break;
    case "ru_en":
    $column1 = "russian";
    $column2 = "english";
    break;
    case "ru_tr":
    $column1 = "russian";
    $column2 = "turkish";
    break;
    default:
    break;
    }
    
    if (!empty($column1) && !empty($column2)) {
    $stmt = $conn->prepare("SELECT $column1, $column2 FROM $dictionary WHERE $column1 LIKE ? OR $column2 LIKE ?");
    $searchTerm = "%$word%";
    $stmt->bind_param("ss", $searchTerm, $searchTerm);
    $stmt->execute();
    $result = $stmt->get_result();
    
    if ($result) {
    if ($result->num_rows > 0) {
    echo "<h2 class='text-center'>Search Results</h2>";
    echo "<div class='md:px-32 py-8 w-full'>";
    echo "<div class='shadow overflow-hidden rounded border-b border-gray-200'>";
    echo "<table class='min-w-full bg-white text-darkmain dark:bg-gray-700 dark:text-white'>";
    echo "<thead class='bg-gray-800 text-white'>";
    echo "<tr>";
    echo "<th class='w-1/3 text-left py-3 px-4 uppercase font-semibold text-sm'>Word</th>";
    echo "<th class='w-1/3 text-left py-3 px-4 uppercase font-semibold text-sm'>Meaning</th>";
    echo "</tr>";
    echo "</thead>";
    echo "<tbody class='text-gray-700'>";
    
    while ($row = $result->fetch_assoc()) {
    echo "<tr>";
    echo "<td class='w-1/3 text-left py-3 px-4 dark:text-white'>" . $row[$column1] . "</td>";
    echo "<td class='w-1/3 text-left py-3 px-4 dark:text-white'>" . $row[$column2] . "</td>";
    echo "</tr>";
    }
    
    echo "</tbody>";
    echo "</table>";
    echo "</div>";
    echo "</div>";
    } else {
    echo "<p class='text-center mt-4'>The search result could not be found.</p>";
    }
    } else {
    echo "Hata: " . $conn->error;
    }
    
    $stmt->close();
    }
    
    $conn->close();
    }
    ?>
        </div>
    </div>
  • 29-07-2023, 12:11:15
    #2
    LIKE operatörünü şöyle kullan LIKE 'hi%'
  • 29-07-2023, 12:12:01
    #3
    canyucel adlı üyeden alıntı: mesajı görüntüle
    LIKE operatörünü şöyle kullan LIKE 'hi%'
    ama hocam tek aratılan kelime hi değil ki
    veritabanında 6 milyondan fazla kelime var sadece hi kelimesini örnek olarak verdim
  • 29-07-2023, 12:13:02
    #4
    XlanKar adlı üyeden alıntı: mesajı görüntüle
    ama hocam tek aratılan kelime hi değil ki
    veritabanında 6 milyondan fazla kelime var sadece hi kelimesini örnek olarak verdim
    Ya tamam işte hocam aratacağınız kelime neyse oraya onu ekleyin. Inputdan gelen data neyse onu koy
  • 29-07-2023, 12:14:41
    #5
    canyucel adlı üyeden alıntı: mesajı görüntüle
    Ya tamam işte hocam aratacağınız kelime neyse oraya onu ekleyin. Inputdan gelen data neyse onu koy
    hocam 6 milyon kelimede bug oluşmasın diye okadar kelime ekleyemeyizki

    sistem çok basit aratılan kelimeyi dil tablosundaki english, turkish sütunundan kullanıcı arayüzüne sunuyor..
  • 29-07-2023, 12:22:19
    #6
    sen nasıl arama yapmasını istiyorsun?
  • 29-07-2023, 12:24:00
    #7
    XlanKar adlı üyeden alıntı: mesajı görüntüle
    hocam 6 milyon kelimede bug oluşmasın diye okadar kelime ekleyemeyizki

    sistem çok basit aratılan kelimeyi dil tablosundaki english, turkish sütunundan kullanıcı arayüzüne sunuyor..
    O kadar kelime eklemiyorsun zaten, inputtan gelen değeri eklemen gerekiyor. Çok komplike bir olay değil.
  • 29-07-2023, 12:46:43
    #8
    XlanKar adlı üyeden alıntı: mesajı görüntüle
    hocam 6 milyon kelimede bug oluşmasın diye okadar kelime ekleyemeyizki

    sistem çok basit aratılan kelimeyi dil tablosundaki english, turkish sütunundan kullanıcı arayüzüne sunuyor..
    yılın düz mantık ödülü size geliyor.
  • 29-07-2023, 13:42:16
    #9
    '$aranacakkelime%' şeklinde yapman daha mantıklı