Avatar billede mettegp Nybegynder
05. maj 2006 - 17:18 Der er 5 kommentarer

problemer med søgefunktion i php

Jeg prøver at lave en søge funktion hvor jeg har valget mellem at indtaste en forfatter, en isbn, eller en titel på en bog. Men jeg kan ikke få det til at virke. Og jeg kan heller ikke få php til at kommunikere en fejl til mig, selvom jeg skriver echo beskeder rundt omkring. Den udskriver blot koden til for løkken i bogliste.php. Men det kan jeg ikke bruge til noget.
Nu sender jeg koden en index.html som kalder bogliste.php.
Jeg ville være lykkelig hvis der var en der kunne fortælle mig hvad jeg gør forkert. Og evt. hvordan man får php til at kommunikere bedre, hvor man har gjordt en fejl.

//index.html
<html>
<head>
    <title>Mettes Bogklub: Søg Bog</title>
</head>

<body>
    <h1>Mettes Bogklub Søg Bog</h1>
        <form action="bogliste.php" method="POST">

        Vælg søgetype:<br>    
       
        <select name="searchtype">
              <option alue="forfatter">Forfatter
            <option value="titel">Titel
            <option value="isbn">ISBN
        </select>
                       
        <br>
        Indtast søgetekst:<br>
            <input name="searchterm" type="text">
            <br>
            <input type="submit" value="Søg">
   
    </form>
</body>
</html>


//bogliste.php
<html>
    <head>
        <title>Mettes Bogklub: Bog resultater</title>
    </head>

<body>
        <h1> Mettes Bogliste resultater</h1>
       
<?php

error_reporting(E_ALL);
//index php skript til at danne frontpage på site
include ('boghandel_include_funktioner.php');


trim($searchtype);
if(!searchtype || !$searchterm)
{
      echo "Du har ikke valgt søge detaljer
          Vær venlig at prøve igen!";
    exit;
}
   
echo $searchtype;
echo $searchterm;
   
$searchtype = addslashes($searchtype);
$searchterm = addslashes($searchterm);
   
$connection = mysql_pconnect("localhost", "root", "");

if(!$connection)
{
echo "Fejl: Kunne ikke forbinde til databasen. Vær venlig at prøve igen!";
}
   
mysql_select_db("boghandel");

$sqlquery = "SELECT * FROM bog WHERE ".$searchtype." LIKE '%".$searchterm."%'";
             
echo $sqlquery;

$boeger = mysql_query($sqlquery);
echo $boeger;

$antalboeger = mysql_num_rows($boeger);
echo "<p>Antal bøger fundet: ".$antalboeger."</p>";

for($i = 0; $i < $antalboeger; $i++)
{
    $row = mysql_fetch_array($boeger);
    echo "<p><strong>".($i+1).". Titel: ";
    echo htmlspecialchars(stripslashes($row['titel']));
    echo "</strong><br>Forfatter: ";
    echo htmlspecialchars(stripslashes($row['forfatter']));
    echo "<br>ISBN: ";
    echo htmlspecialchars(stripslashes($row['isbn']));
    echo "<br>Pris: ";
    echo htmlspecialchars(stripslashes($row['pris']));
    echo "</p>";
}

?>
 
    </body>
</html>
Avatar billede jakobdo Ekspert
05. maj 2006 - 19:55 #1
Prøv at test denne som bogliste:

<?php
//http://www.eksperten.dk/spm/707540
?>
<html>
<head>
    <title>Mettes Bogklub: Bog resultater</title>
</head>
<body>
    <h1> Mettes Bogliste resultater</h1>
<?php
error_reporting(E_ALL);
//index php skript til at danne frontpage på site
include ('boghandel_include_funktioner.php');

if(empty($_POST['searchtype']) || empty($_POST['searchterm']))
{
    echo "Du har ikke valgt søge detaljer, Vær venlig at prøve igen!";
    exit;
}
 
echo $_POST['searchtype'];
echo $_POST['searchterm'];
 
$searchtype = addslashes($_POST['searchtype']);
$searchterm = addslashes($_POST['searchterm']);
 
$connection = mysql_pconnect("localhost", "root", "");
if(!$connection)
{
    echo "Fejl: Kunne ikke forbinde til databasen. Vær venlig at prøve igen!";
}
 
mysql_select_db("boghandel");

$sqlquery = "SELECT * FROM bog WHERE ".$searchtype." LIKE '%".$searchterm."%'";
           
echo $sqlquery;

$boeger = mysql_query($sqlquery);
echo $boeger;

$antalboeger = mysql_num_rows($boeger);
echo "<p>Antal bøger fundet: ".$antalboeger."</p>";

for($i = 0; $i < $antalboeger; $i++)
{
    $row = mysql_fetch_array($boeger);
    echo "<p><strong>".($i+1).". Titel: ";
    echo htmlspecialchars(stripslashes($row['titel']));
    echo "</strong><br>Forfatter: ";
    echo htmlspecialchars(stripslashes($row['forfatter']));
    echo "<br>ISBN: ";
    echo htmlspecialchars(stripslashes($row['isbn']));
    echo "<br>Pris: ";
    echo htmlspecialchars(stripslashes($row['pris']));
    echo "</p>";
}

?>

    </body>
</html>
Avatar billede mettegp Nybegynder
06. maj 2006 - 15:22 #2
hej
Hvis jeg kører det i browseren virker det, men hvis jeg debugger udskriver den stadig koden til forlykken.
Men jeg har et nyt problem. Jeg har tilføjet en kategori, så man kan vælge en kategori også vælge en forfatter, isbn eller titel, men det virker ikke. Hvad er der galt med denne kode?

index.php
<html>
    <head>
        <title>Mettes Bogklub: Søg Bog</title>
    </head>
   
    <body>
        <h1>Mettes Bogklub Søg Bog</h1>
       
<?php
//index php skript til at danne frontpage på site
include ('boghandel_include_funktioner.php');
       
    db_connect();

    $kategorier = mysql_query('SELECT kategoriid, kategori FROM kategorier');
   
    if(!$kategorier)
    {
      exit('<p>Ikke i stand til at forbinde til databasen.</p>');
    }
       
?>

<form action="bogliste.php" method="POST">
    <p>Se bøger der tilfredstiller følgende kriterier:</p>
   
    <br>
    Vælg kategori:<br>
    <select name="katid" size="1">
        <option selected value="">Alle kategorier</option>
<?php                             
        while($kategori = mysql_fetch_array($kategorier))
        {
            $katid = $kategori['kategoriid'];
            $katnavn = htmlspecialchars($kategori['kategori']);
            echo "<option value='$katid'>$katnavn</option>";   
        }
?>
    </select><br><br>
   
    Vælg søgetype:<br>            
    <select name="searchtype">
        <option value="forfatter">Forfatter</option>
        <option value="titel">Titel</option>
        <option value="isbn">ISBN</option>
    </select><br><br>
                       
    Indtast søgetekst:<br>
        <input name="searchterm" type="text">
    <br><br>
        <input type="submit" value="Søg">
       
        </form>
    </body>
</html>

bogliste.php
<html>
    <head>
        <title>Mettes Bogklub: Bog resultater</title>
    </head>

<body>
        <h1> Mettes Bogliste resultater</h1>
       
<?php

error_reporting(E_ALL);
//index php skript til at danne frontpage på site
include ('boghandel_include_funktioner.php');
   
   
    if(empty($_POST['katid']))
    {
          echo "Vælg venligst kategori!";
          exit;         
    }
   
    $kategoriid = addslashes($_POST['katid']);
       
    trim($_POST['searchtype']);
    if(empty($_POST['searchtype']) || empty($_POST['searchterm']))
    {
          echo "Du har ikke valgt søge detaljer
              Vær venlig at prøve igen!";
        exit;
    }
   
    $searchtype = addslashes($_POST['searchtype']);
    $searchterm = addslashes($_POST['searchterm']);
   
    $connection = db_connect();

    //$sqlquery = "SELECT * FROM bog WHERE ".$searchtype." LIKE '%".$searchterm."%'";
   
    $sqlquery = "SELECT bogid, titel, forfatter, isbn, pris
            FROM bog, bogkategori
            WHERE ".$searchtype." LIKE '%".$searchterm."%'
            AND bog.bogid=bogkategori.bogid
                    AND bogkategori.kategoriid='$kategoriid'";
   
    echo $sqlquery;

    $result = mysql_query($sqlquery, $connection);
 
    $antalboeger = mysql_num_rows($result);
    echo "<p>Antal bøger fundet: ".$antalboeger."</p>";
       
    for($i = 0; $i < $antalboeger; $i++)
    {
        $row = mysql_fetch_array($result);
        echo "<p><strong>".($i+1).". Titel: ";
        echo htmlspecialchars(stripslashes($row['titel']));
        echo "</strong><br>Forfatter: ";
        echo htmlspecialchars(stripslashes($row['forfatter']));
        echo "<br>ISBN: ";
        echo htmlspecialchars(stripslashes($row['isbn']));
        echo "<br>Pris: ";
        echo htmlspecialchars(stripslashes($row['pris']));
        echo "</p>";
    }

?>
 
    </body>
</html>
Avatar billede jakobdo Ekspert
06. maj 2006 - 15:37 #3
Det er lidt svært når du bare spørger: HVAD ER GALT HER? :o)
Du må komme med lidt fejl eller lign?
Og noget debugning skal altså virke, og er altid vejen frem.
Avatar billede mettegp Nybegynder
06. maj 2006 - 16:19 #4
Jamen det er det jeg heller ikke forstår, at jeg ikke får nogle fejlmeddelelser
Den skriver den blot "forbundet succesfuldt" som db_connet() metoden udskriver
og ellers skriver den "antal bøger fundet" og ellers ikke noget.
Hvis jeg kører vis kilde
ser sql strengen sådan ud
SELECT bogid, titel, forfatter, isbn, pris FROM bog, bogkategori WHERE forfatter LIKE '%Kevin Yank%' AND bog.bogid=bogkategori.bogid AND bogkategori.kategoriid='1'

og det passer med at bogen af Kevin Yank (jeg har søgt på forfatter) er i kategori 1.
efter jeg har tilføjet 
AND bog.bogid=bogkategori.bogid
AND bogkategori.kategoriid='$kategoriid'";
er det som om den ikke kan finde bogen i databasen.
bogkategori er en lookup tabel med felterne bogid og kategoriid

Jeg bruger PHP Designer 2006 som udviklingsmiljø
og php version 5.1.2
Ved du om der en speciel debug mode man skal sætte?
Avatar billede jakobdo Ekspert
07. maj 2006 - 19:51 #5
Altså du burde jo sagtens kunne debugge med rene echo 'DET GIK GODT'; eller echo 'DET GIK IKKE GODT';
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
Vi tilbyder markedets bedste kurser inden for webudvikling

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