Avatar billede janorakel Nybegynder
10. oktober 2003 - 19:11 Der er 28 kommentarer og
2 løsninger

Flere søgefunktioner i én form

Jeg har denne søgeform, som finder en given forfatter ud fra <efternavn, fornavn>. .htm-delen ser sådan ud:
<form name="form2" method="post" action="soeeg1.php">
  <div align="center">
    <input type="hidden" name="send" value="ok">
    <table width="670" height="35" border="0" cellpadding="0" cellspacing="0" style="BORDER-RIGHT: #323232 1px solid; BORDER-TOP: #323232 1px solid; BORDER-LEFT: #323232 1px solid; BORDER-BOTTOM: #323232 1px solid">
      <tr>
        <td width="314" height="2"></td>
      </tr>
      <tr>
        <td height="29" nowrap class="undermenu">&nbsp;&nbsp;Chercher le nom de
          l'auteur (nom, prénom): </td>
        <td width="223" nowrap class="undermenu"><input name="soegeord" size="25" style="WIDTH: 100%" class ="text"></td>
        <td width="131" nowrap class="undermenu"><div align="center">
            <input name="submit" type="submit" class="undermenu" value="Chercher">
          </div></td>
      </tr>

Så har jeg denne php-fil som tager i mod det som er submittet i ovenstående og viser resultatet.
Den ser sådan ud:
<html>
<Script language="JavaScript">
function Print()
{
window.print();
}
</Script>

<head>
<title></title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>

<body>
<table width="50%" border="0" align="center" cellpadding="1" cellspacing="0" bordercolor="#333333" bgcolor="#FFFFFF">
    <tr bordercolor="#333333">
<?php

$db = mysql_connect("localhost", "xxx", "xxx") or die ("Desværre ingen forbindelse til databasen");

mysql_select_db("book1", $db) or die ("Kunne ikke vælge databasetabel");

if ($_POST['soegeord']) {
    echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
    echo date("H:i:s");
    echo "<br/>";
    echo "Du har søgt på  <strong>$_POST[soegeord]</strong>";
    echo " i originalværkets forfatter<br/> og har fået  ";
$fullname = $_POST['soegeord'];
$pos = strpos($fullname,','); // Finder ud af hvor kommaet er placeret i strengen
$fornavn = substr($fullname,$pos+2);  // Korter strengen ned så vi får fornavnet
$efternavn = substr($fullname,0,$pos); // Korter strengen ned så vi får efternavnet
$query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
    $antal = mysql_num_rows($query);
    echo "<strong>$antal</strong>";
    echo " svar:<hr><br/><br/>";
    while ($row = mysql_fetch_array($query)) {
        if ($row) {
            echo "<td width='60px'><font face='Verdana' size='1'><a href=dethele.php?id=$row[id]><img src=img/lup.gif border=0></a><td width='90px'><br/><tr>";
            echo "<td><font face='Verdana' size='1'>Pays:<td><font face='Verdana' size='1'>$row[land]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Titre original:<td><font face='Verdana' size='1'><em> $row[originalvaerkets_titel]</em><br/><tr>";
    echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_original]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Auteur:<td><font face='Verdana' size='1'> $row[forfatternavn_efternavn], $row[forfatternavn_fornavn]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Pseudonyme:<td><font face='Verdana' size='1'> $row[alias], $row[alias_fornavn]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Titre de la traduction:<td><font face='Verdana' size='1'><em> $row[oversættelsens_titel]</em><br/><tr>";
    echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_oversaettelse]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Traducteur:<td><font face='Verdana' size='1'> $row[oversaetterens_efternavn], $row[oversaetterens_fornavn]<br/><tr>";
            echo "<td colspan=2><hr></td><tr>";
       
        }
    }
}
?>
</table>
<br><br>
</body>
</html>

Jeg har flere felter jeg gerne vil søge i, i samme form.
Er det muligt at lave en dropdown-boks i søgeformen med valgmuligheder, og få resultatet ud alt efter valg?
Jeg vil gerne søge på:

Forfatter, Oversætter og Pseudonymer
Avatar billede janorakel Nybegynder
10. oktober 2003 - 20:54 #1
Man kan se søgningen her:
http://fangst.net
bruger: test
pw: test
Avatar billede jacobsdk Nybegynder
11. oktober 2003 - 01:51 #2
Du skal bruge et element til din form, samt en måde at tage imod det på.

Til din form kan du fx bruge:
<select name="soegkriterie" size="1">
<option value="1">Forfatter</option>
<option value="2">Oversætter</option>
<option value="3">Pseudonymer</option>
</select>

Den sender hhv 1, 2 eller 3 alt efter hvad der er valgt. Forfatter vil stå som default.

Du kan lave din kontrolstruktur i modtageren enten som

if ($_POST['soegekriterie'] = 1){...}
else if ($_POST['soegekriterie'] = 2) {...} osv.

Du kan også vælge at bruge den mere elegante :

switch ($_POST['soegekriterie']{
    Case 1:
        //Det der med for og efternavn...
        $query=...
        break;
    Case 2:
        $query=...
        break;
    Case 3:
        $query=...
        break;       
}

Når du skal lave din "Du har søgt på ... i ...", foreslår jeg at laver et array: $soegekriterietekst = array ('Forfatter', 'Oversætter', 'Pseudonymer'), og du så indsætter $soegekriterier[$_POST['soegekriterier']] i din echo"";

Hvad hvis der ikke er noget komma i søgekriteriet på forfatter? En handy løsningen kunne være:

$soegeordsarray = explode (",",$_POST['soegeord']);
if (!($soegeordsarray)){
    //soegeord var tom
}
else (count($soegeordsarray) == 1 {
    //Der er kun et element, dvs ingen kommaer
    //Man kunne så sige:
    $efternavn = $soegeordsarray[0];
    $fornavn = $soegeordsarray[0];
}
else {
    //Ellers må der være to eller flere dele, dvs et eller flere kommaer
    //Så kunne man bruge de to første:
    $efternavn = $soegeordsarray[0];
    $fornavn = $soegeordsarray[1];
}

Kan du se hvad jeg mener?

Har du forøvrigt overvejet at din if ($_POST['soegeord']) gør at man får en tom side, hvis man ikke angiver noget søgekriterie? Overvej noget i retning af else {echo "Du har ikke valgt noget søgekriterie};

Håber det hjælper dig.

Venligst,

Jacob
Avatar billede jacobsdk Nybegynder
11. oktober 2003 - 01:51 #3
PS: Jeg kunne ikke komme ind på http://fangst.net
Avatar billede janorakel Nybegynder
11. oktober 2003 - 10:23 #4
Hej, jeg har indtil videre fixet sog.php og fumler lidt med modtage-php'en.
Den ligger på http://www.fangst.net - beklager.
Avatar billede janorakel Nybegynder
11. oktober 2003 - 10:25 #5
Det er udelukkende en testside - og domænet passer heller ikke helt til indholdet...
Avatar billede janorakel Nybegynder
11. oktober 2003 - 10:41 #6
Hmm, jeg prøver at lave forsøg med virkningen heraf og får denne fejlmeddellelse:
Parse error: parse error, unexpected T_CASE in c:\program files\ez systems\ezpublish\soeeg1.php on line 47

Og det er denne:  Case 1:


if ($_POST['soegeord']) {
    echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
    echo date("H:i:s");
    echo "<br/>";
    echo "Du har søgt på  <strong>$_POST[soegeord]</strong>";
    echo " i originalværkets forfatter<br/> og har fået  ";
$fullname = $_POST['soegeord'];
$pos = strpos($fullname,','); // Finder ud af hvor kommaet er placeret i strengen
$fornavn = substr($fullname,$pos+2);  // Korter strengen ned så vi får fornavnet
$efternavn = substr($fullname,0,$pos); // Korter strengen ned så vi får efternavnet
switch ($_POST['soegekriterie']{
    Case 1:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 2:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 3:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 4:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;         
}
    $antal = mysql_num_rows($query);

Har du mulighed for at hjælpe?
Avatar billede detox Nybegynder
11. oktober 2003 - 13:16 #7
switch ($_POST['soegekriterie']{

ændres til:

switch ($_POST['soegekriterie']) {
Avatar billede janorakel Nybegynder
11. oktober 2003 - 13:25 #8
Jeg får stadig en fejl:
Parse error: parse error, unexpected T_CASE in /data/virtual/fangst/soeeg1.php on line 47
Avatar billede janorakel Nybegynder
11. oktober 2003 - 13:29 #9
Uha, havde glemt ")" men nu får jeg:
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in /data/virtual/fangst/soeeg1.php on line 60
svar:
--------------------------------------------------------------------------
Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /data/virtual/fangst/soeeg1.php on line 63
Avatar billede janorakel Nybegynder
11. oktober 2003 - 13:31 #10
Jeg paster lige hele koden:
<html>
<Script language="JavaScript">
function Print()
{
window.print();
}
</Script>

<head>
<title></title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>

<body>
<div id="Layer1" style="position:absolute; left:666px; top:30px; width:25px; height:20px; z-index:1"><a href="#" onClick="Print();"><img src="/img/print.gif" width="16" height="15" border="0"></a></div>
<div id="Layer2" style="position:absolute; left:698px; top:28px; width:42px; height:28px; z-index:2"><a href="sog.php"><img src="/img/kikkert.gif" border="0"></a></div>
<div id="Layer3" style="position:absolute; left:638px; top:31px; width:15px; height:15px; z-index:3"><a href='java script:history.go(-1)'><img src='/img/back1.gif' border="0"></a></div>
<table width="50%" border="0" align="center" cellpadding="1" cellspacing="0" bordercolor="#333333" bgcolor="#FFFFFF">
    <tr bordercolor="#333333">
<?php

$db = mysql_connect("localhost", "xxx", "xxx") or die ("Desværre ingen forbindelse til databasen");

mysql_select_db("book1", $db) or die ("Kunne ikke vælge databasetabel");

if ($_POST['soegeord']) {
    echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
    echo date("H:i:s");
    echo "<br/>";
    echo "Du har søgt på  <strong>$_POST[soegeord]</strong>";
    echo " i originalværkets forfatter<br/> og har fået  ";
$fullname = $_POST['soegeord'];
$pos = strpos($fullname,','); // Finder ud af hvor kommaet er placeret i strengen
$fornavn = substr($fullname,$pos+2);  // Korter strengen ned så vi får fornavnet
$efternavn = substr($fullname,0,$pos); // Korter strengen ned så vi får efternavnet
switch ($_POST['soegekriterie']) {
    Case 1:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 2:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 3:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 4:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;         
}
    $antal = mysql_num_rows($query);
    echo "<strong>$antal</strong>";
    echo " svar:<hr><br/><br/>";
    while ($row = mysql_fetch_array($query)) {
        if ($row) {
            echo "<td width='60px'><font face='Verdana' size='1'><a href=dethele.php?id=$row[id]><img src=img/lup.gif border=0></a><td width='90px'><br/><tr>";
            echo "<td><font face='Verdana' size='1'>Pays:<td><font face='Verdana' size='1'>$row[land]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Titre original:<td><font face='Verdana' size='1'><em> $row[originalvaerkets_titel]</em><br/><tr>";
    echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_original]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Auteur:<td><font face='Verdana' size='1'> $row[forfatternavn_efternavn], $row[forfatternavn_fornavn]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Pseudonyme:<td><font face='Verdana' size='1'> $row[alias], $row[alias_fornavn]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Titre de la traduction:<td><font face='Verdana' size='1'><em> $row[oversættelsens_titel]</em><br/><tr>";
    echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_oversaettelse]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Traducteur:<td><font face='Verdana' size='1'> $row[oversaetterens_efternavn], $row[oversaetterens_fornavn]<br/><tr>";
            echo "<td colspan=2><hr></td><tr>";
       
        }
    }
}
?>
</table>

<br><br>
</body>

</html>
Avatar billede detox Nybegynder
11. oktober 2003 - 13:40 #11
Problemet er måske, hvis $_POST['soegekriterie'] ikke indeholder et tal fra 1-4.
Du kan fx tilføje en 'default':

    Case 4:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    default:
        die("Galt soegekriterie");     
    }
    $antal = mysql_num_rows($query);
Avatar billede janorakel Nybegynder
11. oktober 2003 - 13:52 #12
Ok, men nu foregår søgningen ikke efter tal men efternavn, fornavn.
Avatar billede detox Nybegynder
11. oktober 2003 - 13:55 #13
Kan man få formen at se?
Avatar billede janorakel Nybegynder
11. oktober 2003 - 13:58 #14
Ja, her er den:
<form name="form2" method="post" action="soeeg1.php">
  <div align="center">
    <input type="hidden" name="send" value="ok">
    <table width="670" height="35" border="0" cellpadding="0" cellspacing="0" style="BORDER-RIGHT: #323232 1px solid; BORDER-TOP: #323232 1px solid; BORDER-LEFT: #323232 1px solid; BORDER-BOTTOM: #323232 1px solid">
      <tr>
        <td width="314" height="2"></td>
      </tr>
      <tr>
        <td height="29" nowrap class="undermenu">&nbsp;&nbsp;Chercher le nom de
          l'auteur (nom, prénom): </td>
        <td width="188" nowrap class="undermenu"><input name="soegeord" size="25" style="WIDTH: 100%" class ="text"></td>
        <td width="166" nowrap class="undermenu"><div align="center">
            <select name="select">
              <option value="1">Auteur</option>
              <option value="2">Traducteur</option>
              <option value="3">Pseudonyme</option>
              <option value="4">Autre auteur</option>
            </select>
            <input name="submit" type="submit" class="undermenu" value="Chercher">
          </div></td>
      </tr>
      <tr>
        <td colspan="2" class="undermenu"> </td>
      </tr>
      <tr>
        <td height="2"></td>
      </tr>
    </table>
  <p>&nbsp;</p></div>
</form>

Ellers er den live på: http://www.fangst.net
bruger: test
PW: test
Avatar billede janorakel Nybegynder
11. oktober 2003 - 14:04 #15
klik på "Base de données"
Avatar billede detox Nybegynder
11. oktober 2003 - 14:06 #16
Prøv sådan her:

<html>
<Script language="JavaScript">
function Print()
{
window.print();
}
</Script>

<head>
<title></title>
<link rel="stylesheet" href="css/greenstyle1.css" type="text/css">
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>

<body>
<div id="Layer1" style="position:absolute; left:666px; top:30px; width:25px; height:20px; z-index:1"><a href="#" onClick="Print();"><img src="/img/print.gif" width="16" height="15" border="0"></a></div>
<div id="Layer2" style="position:absolute; left:698px; top:28px; width:42px; height:28px; z-index:2"><a href="sog.php"><img src="/img/kikkert.gif" border="0"></a></div>
<div id="Layer3" style="position:absolute; left:638px; top:31px; width:15px; height:15px; z-index:3"><a href='java script:history.go(-1)'><img src='/img/back1.gif' border="0"></a></div>
<table width="50%" border="0" align="center" cellpadding="1" cellspacing="0" bordercolor="#333333" bgcolor="#FFFFFF">
    <tr bordercolor="#333333">
<?php
$db = mysql_connect("localhost", "xxx", "xxx") or die ("Desværre ingen forbindelse til databasen");
mysql_select_db("book1", $db) or die ("Kunne ikke vælge databasetabel");

if (isset($_POST['soegeord'])) {
    echo "<font face='Verdana' size='1'>Denne side er genereret kl. ";
    echo date("H:i:s");
    echo "<br/>";
    echo "Du har søgt på  <strong>$_POST[soegeord]</strong>";
    echo " i originalværkets forfatter<br/> og har fået  ";
    $fullname = $_POST['soegeord'];
    $pos = strpos($fullname,','); // Finder ud af hvor kommaet er placeret i strengen
    $fornavn = substr($fullname,$pos+2);  // Korter strengen ned så vi får fornavnet
    $efternavn = substr($fullname,0,$pos); // Korter strengen ned så vi får efternavnet
    switch ($_POST['select']) {
    Case 1:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 2:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 3:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 4:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    default:
        die("Galt soegekriterie");     
    }
    $antal = mysql_num_rows($query);
    echo "<strong>$antal</strong>";
    echo " svar:<hr><br/><br/>";
    while ($row = mysql_fetch_array($query)) {
        if ($row) {
            echo "<td width='60px'><font face='Verdana' size='1'><a href=dethele.php?id=$row[id]><img src=img/lup.gif border=0></a><td width='90px'><br/><tr>";
            echo "<td><font face='Verdana' size='1'>Pays:<td><font face='Verdana' size='1'>$row[land]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Titre original:<td><font face='Verdana' size='1'><em> $row[originalvaerkets_titel]</em><br/><tr>";
            echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_original]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Auteur:<td><font face='Verdana' size='1'> $row[forfatternavn_efternavn], $row[forfatternavn_fornavn]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Pseudonyme:<td><font face='Verdana' size='1'> $row[alias], $row[alias_fornavn]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Titre de la traduction:<td><font face='Verdana' size='1'><em> $row[oversættelsens_titel]</em><br/><tr>";
            echo "<td><font face='Verdana' size='1'>Date de publication:<td><font face='Verdana' size='1'> $row[udgivelsestidspunkt_oversaettelse]<br/><tr>";
            echo "<td><font face='Verdana' size='1'>Traducteur:<td><font face='Verdana' size='1'> $row[oversaetterens_efternavn], $row[oversaetterens_fornavn]<br/><tr>";
            echo "<td colspan=2><hr></td><tr>";
        }
    }
}
?>
</table>
<br><br>
</body>
</html>
Avatar billede detox Nybegynder
11. oktober 2003 - 14:08 #17
Men meningen med den switch er vel at du skal lave 4 forskellige forespørgsler, alt efter hvad der bliver valgt i formen. Lige nu er de alle 4 ens?
Avatar billede janorakel Nybegynder
11. oktober 2003 - 14:12 #18
Ja, det er kun eksempler fordi jeg var i tidsnød. Altså de andre 3.
Jeg prøver lige..
Avatar billede janorakel Nybegynder
11. oktober 2003 - 14:19 #19
Jeg tror vi er ved at være der! Lige et øjeblik.
Avatar billede janorakel Nybegynder
11. oktober 2003 - 14:50 #20
Ok, jeg fik lige at vide fra højere magter, at vi kun skulle benytte 2 forskellige søgefelter men at de skulle inkludere flere felter.
Kan den se sådan ud efter formen er ændret?

    switch ($_POST['select']) {
    Case 1:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' OR
    alias_fornavn LIKE '%$fornavn%' AND alias LIKE '%$efternavn%' OR
    anden_forfatter_fornavn LIKE '%$fornavn%' AND anden_forfatter_efternavn LIKE '%$efternavn%' OR
    anden_forfatter_fornavn1 LIKE '%$fornavn%' AND anden_forfatter_efternavn1 LIKE '%$efternavn%' OR
    anden_forfatter_fornavn2 LIKE '%$fornavn%' AND anden_forfatter_efternavn2 LIKE '%$efternavn%' OR
    anden_forfatter_fornavn3 LIKE '%$fornavn%' AND anden_forfatter_efternavn3 LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 2:
        $query = mysql_query("SELECT * FROM second WHERE oversaetterens_fornavn LIKE '%$fornavn%' AND oversaetterens_efternavn LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn LIKE '%$fornavn%' AND andre_oversaettere_efternavn LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn1 LIKE '%$fornavn%' AND andre_oversaettere_efternavn1 LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn2 LIKE '%$fornavn%' AND andre_oversaettere_efternavn2 LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn3 LIKE '%$fornavn%' AND andre_oversaettere_efternavn3 LIKE '%$efternavn%'
ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
        die("Galt soegekriterie");

I så fald..må du smide et svar Detox
Avatar billede detox Nybegynder
11. oktober 2003 - 15:01 #21
Ja, det ser umiddelbart rigtigt ud. Du behøver dog ikke en 'default/die', da den i sagens natur altid være 1 eller 2. Og så husk at slutte med }. Sådan her:

switch ($_POST['select']) {
    Case 1:
        $query = mysql_query("SELECT * FROM second WHERE forfatternavn_fornavn LIKE '%$fornavn%' AND forfatternavn_efternavn LIKE '%$efternavn%' OR
    alias_fornavn LIKE '%$fornavn%' AND alias LIKE '%$efternavn%' OR
    anden_forfatter_fornavn LIKE '%$fornavn%' AND anden_forfatter_efternavn LIKE '%$efternavn%' OR
    anden_forfatter_fornavn1 LIKE '%$fornavn%' AND anden_forfatter_efternavn1 LIKE '%$efternavn%' OR
    anden_forfatter_fornavn2 LIKE '%$fornavn%' AND anden_forfatter_efternavn2 LIKE '%$efternavn%' OR
    anden_forfatter_fornavn3 LIKE '%$fornavn%' AND anden_forfatter_efternavn3 LIKE '%$efternavn%' ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
    Case 2:
        $query = mysql_query("SELECT * FROM second WHERE oversaetterens_fornavn LIKE '%$fornavn%' AND oversaetterens_efternavn LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn LIKE '%$fornavn%' AND andre_oversaettere_efternavn LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn1 LIKE '%$fornavn%' AND andre_oversaettere_efternavn1 LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn2 LIKE '%$fornavn%' AND andre_oversaettere_efternavn2 LIKE '%$efternavn%' OR
    andre_oversaettere_fornavn3 LIKE '%$fornavn%' AND andre_oversaettere_efternavn3 LIKE '%$efternavn%'
ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;
}
Avatar billede janorakel Nybegynder
11. oktober 2003 - 15:07 #22
Tak ...Mange tak!!
Hvis.. hvordan skulle jeg så indsætte:
$soegeordsarray = explode (",",$_POST['soegeord']);
if (!($soegeordsarray)){
    //soegeord var tom
}
else (count($soegeordsarray) == 1 {
    //Der er kun et element, dvs ingen kommaer
    //Man kunne så sige:
    $efternavn = $soegeordsarray[0];
    $fornavn = $soegeordsarray[0];
}
else {
    //Ellers må der være to eller flere dele, dvs et eller flere kommaer
    //Så kunne man bruge de to første:
    $efternavn = $soegeordsarray[0];
    $fornavn = $soegeordsarray[1];
}

Kun hvis I har tid tilovers? For jeg får en error på "{"
Avatar billede janorakel Nybegynder
11. oktober 2003 - 15:13 #23
Jeg har også et andet spm, hvis I er interesseret: http://www.eksperten.dk/spm/411991
Nu er I jo inde i det..
Avatar billede detox Nybegynder
11. oktober 2003 - 15:14 #24
Jeg vil nok bruge trim for at sikre mig at der ikke er mellemrum i starten/slutningen af ordet:

$soegeordsarray = explode (",",$_POST['soegeord']);
if (empty($soegeordsarray)){
    //soegeord var tom
}
elseif (count($soegeordsarray) == 1) {
    //Der er kun et element, dvs ingen kommaer
    //Man kunne så sige:
    $efternavn = trim($soegeordsarray[0]);
    $fornavn = trim($soegeordsarray[0]);
}
elseif (count($soegeordsarray) > 1) {
    //Ellers må der være to eller flere dele, dvs et eller flere kommaer
    //Så kunne man bruge de to første:
    $efternavn = trim($soegeordsarray[0]);
    $fornavn = trim($soegeordsarray[1]);
}
Avatar billede janorakel Nybegynder
11. oktober 2003 - 15:21 #25
Det er bare kanon - det her..
Hvis man søger kun efternavn uden komma viser den intet
Avatar billede detox Nybegynder
11. oktober 2003 - 15:27 #26
Hvis du kun skriver et navn uden komma, skulle den her gerne blive opfyldt:

elseif (count($soegeordsarray) == 1) {
    //Der er kun et element, dvs ingen kommaer
    //Man kunne så sige:
Avatar billede janorakel Nybegynder
11. oktober 2003 - 15:36 #27
det virker hvis man kun bruger fornavn, men vi skriver jo (efternavn, fornavn)
Avatar billede detox Nybegynder
11. oktober 2003 - 16:12 #28
Så skal du nok ændre dine forespørgsler i stil med dette:

    Case 1:
        $query = mysql_query("SELECT * FROM second WHERE (forfatternavn_fornavn LIKE '%$fornavn%' OR forfatternavn_efternavn LIKE '%$efternavn%') OR
    (alias_fornavn LIKE '%$fornavn%' OR alias LIKE '%$efternavn%') OR
    (anden_forfatter_fornavn LIKE '%$fornavn%' OR anden_forfatter_efternavn LIKE '%$efternavn%') OR
    (anden_forfatter_fornavn1 LIKE '%$fornavn%' OR anden_forfatter_efternavn1 LIKE '%$efternavn%') OR
    (anden_forfatter_fornavn2 LIKE '%$fornavn%' OR anden_forfatter_efternavn2 LIKE '%$efternavn%') OR
    (anden_forfatter_fornavn3 LIKE '%$fornavn%' OR anden_forfatter_efternavn3 LIKE '%$efternavn%') ORDER BY udgivelsestidspunkt_oversaettelse ASC") or die(mysql_error());
        break;

Altså med:

WHERE (kriterie1 OR kriterie2) OR (kriterie3 OR kriterie4) OR osv....
Avatar billede janorakel Nybegynder
11. oktober 2003 - 16:27 #29
Uha, så hellere beholde den gamle - så viser den alle poster.
Avatar billede detox Nybegynder
11. oktober 2003 - 16:37 #30
He he, ja ellers får du osse det samme problem, som i det andet spørgsmål, hvis flere forfattere har samme fornavn. Den skal jeg i øvrigt lige tænke over.
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