Avatar billede bruna Nybegynder
10. juni 2003 - 14:50 Der er 10 kommentarer og
1 løsning

Hjælp til en søgefunktion

Jeg har en database (phpMyAdmin) med varer i. De skal på et tidspunkt opdeles i kategorier, men i første omgang ser jeg lige bort fra det. Hvordan skal min soeg.php - fil se ud, når min .htm ser ud som følger:

Venligst indtast dit søgeord og vælg kategori<br>
<br><br>

<form name="form1" method="post" action="soeg.php">
<input type="hidden" name="send" value="ok">
  <table style="border:1px solid #323232" width="350" cellspacing="2" cellpadding="0" border="0">
    <tr>
      <td height="2"></td>
    </tr>
    <tr>
                                    <td width="110" nowrap class="undermenu">&nbsp;&nbsp;S&oslash;geord:
                                    </td>
      <td class="undermenu">
        <input type="text" name="soegeord" size="25" style="width: 100%" class="text">
      </td>
      <td width="20" nowrap></td>
    </tr>
    <tr>
      <td colspan="3" height="5" style="border-bottom:1px solid #323232" class="undermenu"><img src="billeder/spacer.gif" width="1" height="1" alt="" border="0"></td>
    </tr>
    <tr>
      <td height="4" class="undermenu"></td>
    </tr>
    <tr>
                                    <td class="undermenu">&nbsp;&nbsp;S&oslash;g
                                      i: </td>
      <td class="undermenu">
                                      <select name="kategori" style="width:100%" class="undermenu">
                                        <option value="">Programmering</option>
          <option value="2">Webdesign</option>
          <option value="1">Usability</option>
          <option value="3">Grafik</option>
        </select>
      </td>
    </tr>
    <tr>
      <td colspan="3" height="6" style="border-bottom:1px solid #323232" class="undermenu"><img src="billeder/spacer.gif" width="1" height="1" alt="" border="0"></td>
    </tr>
    <tr>
      <td height="3" class="undermenu"></td>
    </tr>
    <tr>
      <td class="undermenu"></td>
      <td class="undermenu">
        <input type="submit" class="undermenu" value="Search">
      </td>
    </tr>
    <tr>
      <td height="3"></td>
    </tr>
  </table>
</form>
Avatar billede ahv Nybegynder
10. juni 2003 - 14:57 #1
Det er jo lidt svært, men meget simpelt (tilpas selv feltnavne så de passer med det i databasen)

<?php
if ($_POST['soegeord']) {
echo "Kategori: $row[kategori]<br>";
echo "Soegeord: $row[soegeord]<br>";
$query = mysql_query("SELECT * FROM tabel WHERE kategori='$_POST[kategori]' AND soegeord like '%$_POST['soegeord']%'");
while ($row = mysql_fetch_array($query)) {
echo "Fundet vare: $row[produkt]<br/><hr>";
}
}
?>

Det var blot en simpel en, jeg kan kontaktes på ->
MSN: alexander_hv@hotmail.com
ICQ: 82550004
Hvis du synes det hele ser sort ud.
Avatar billede ahv Nybegynder
10. juni 2003 - 14:58 #2
Hov:

<?php
if ($_POST['soegeord']) {
echo "Kategori: $_POST[kategori]<br>";
echo "Soegeord: $_POST['soegeord']<br>";
$query = mysql_query("SELECT * FROM tabel WHERE kategori='$_POST[kategori]' AND soegeord like '%$_POST['soegeord']%'");
while ($row = mysql_fetch_array($query)) {
echo "Fundet vare: $row[produkt]<br/><hr>";
}
}
?>
Avatar billede ahv Nybegynder
10. juni 2003 - 15:01 #3
Skulle nok lige have tjekket det efter:

<?php
if ($_POST['soegeord']) {
echo "Kategori: $_POST['kategori']<br>";
echo "Soegeord: $_POST['soegeord']<br>";
$query = mysql_query("SELECT * FROM tabel WHERE kategori='$_POST[kategori]' AND soegeord like '%$_POST[soegeord]%'");
while ($row = mysql_fetch_array($query)) {
echo "Fundet vare: $row[produkt]<br/><hr>";
}
}
?>
Avatar billede ahv Nybegynder
10. juni 2003 - 15:05 #4
Du skal selvfølge connecte til databasen inden.
Avatar billede swaxi Nybegynder
10. juni 2003 - 15:06 #5
erstat linien, der begynder med $query = mysql_query... med den her :

$query = mysql_query("SELECT * FROM tabel WHERE kategori='".addslashes($_POST['kategori'])."' AND soegeord LIKE '%".addslashes(str_replace(' ', '%', $_POST['soegeord']."%'");


... addslashes() er ret vigtig når folk kan indtaste fritekst. men også i det hele taget. str_replace() sørger for, at du kan søge på flere ord end et. den er stadig ret kluntet - eks. skal ordene stå i den rækkefølge, de står i, men det er bedre end ingenting.
Avatar billede bruna Nybegynder
10. juni 2003 - 15:07 #6
Ok, den er jeg med på! Har lige sendt dig en mail med nærmere specifikation. Hvis du venligst vil svare der!
Avatar billede ahv Nybegynder
10. juni 2003 - 15:15 #7
Jeg har retuneret en mail.
Avatar billede bruna Nybegynder
11. juni 2003 - 08:41 #8
Kategori:
Soegeord:


Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /home/web/x/x/soeg.php on line 11


Min fil ser således ud:


<?php
mysql_connect(x) or die ("Der kunne ikke oprettes forbindelse til databasen");
mysql_select_db(x);

if ($_POST['soegeord']) {
    echo "Kategori: $_POST['kategori']<br/>";
    echo "Soegeord: $_POST['soegeord']<br/><br/>";
    $query = mysql_query("SELECT * FROM books WHERE kategori='$_POST[kategori]'
AND (title LIKE '%$_POST[soegeord]%' OR author LIKE '%$_POST[soegeord]%' OR
publisher LIKE '%$_POST[soegeord]%')");
    while ($row = mysql_fetch_array($query)) {
        if ($row) {
            echo "Title: $row[title]<br/>";
            echo "Author: $row[author]<br/>";
            echo "Publisher: $row[publisher]<br/>";
            echo "<hr>";
        }
    }
}
?>


Skal jeg desuden ikke sætte denne addslashes på?
Avatar billede ahv Nybegynder
11. juni 2003 - 09:38 #9
Prøv lige:

<?php
mysql_connect(x) or die ("Der kunne ikke oprettes forbindelse til databasen");
mysql_select_db(x);

if ($_POST['soegeord']) {
    echo "Kategori: $_POST['kategori']<br/>";
    echo "Soegeord: $_POST['soegeord']<br/><br/>";
    $query = mysql_query("SELECT * FROM books WHERE kategori='$_POST[kategori]' AND (title LIKE '%$_POST[soegeord]%' OR author LIKE '%$_POST[soegeord]%' OR publisher LIKE '%$_POST[soegeord]%')") or die(mysql_error());
    while ($row = mysql_fetch_array($query)) {
        if ($row) {
            echo "Title: $row[title]<br/>";
            echo "Author: $row[author]<br/>";
            echo "Publisher: $row[publisher]<br/>";
            echo "<hr>";
        }
    }
}
?>

Hvilken fejl spytter den ud?
Avatar billede ahv Nybegynder
11. juni 2003 - 18:42 #10
<?php
mysql_connect(x) or die ("Der kunne ikke oprettes forbindelse til
databasen");
mysql_select_db(x);

if ($_POST['soegeord']) {
    echo "Soegeord: $_POST[soegeord]<br/><br/>";
    $query = mysql_query("SELECT * FROM books WHERE title LIKE '%$_POST[soegeord]%' OR author LIKE '%$_POST[soegeord]%' OR publisher LIKE '%$_POST[soegeord]%'") or
die(mysql_error());
    while ($row = mysql_fetch_array($query)) {
        if ($row) {
            echo "Title: $row[title]<br/>";
            echo "Author: $row[author]<br/>";
            echo "Publisher: $row[publisher]<br/>";
            echo "<hr>";
        }
    }
}
?>
Avatar billede bruna Nybegynder
11. juni 2003 - 18:44 #11
Tak for hjælpen!
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester