Avatar billede sijmonj Nybegynder
13. maj 2008 - 22:55 Der er 11 kommentarer og
1 løsning

Søge funktion - Søg i flere tabeller i databasen

Heej, jeg har fulgt en tutorial på Wcschools.com eller hva den nu hedder :P,.. hvor man laver en søge funktion som søger mens man taster nogen bogstaver / tal .. men der lære man kun at søge i 1 tabel,

jeg vil gerne kunne søge i 3 tabeller som hedder: koder_html, koder_javascript, koder_css

muligvis flere med tiden.

er der nogen som kan finde ud af at søge i flere tabeller i en database,

dette er min kode ( jeg har prøvet at tilføje 2 af tabellerne men den søger kun i koder_css :S)


------------------------

  <?php
  include("../connection/config.php");

  //get the q parameter from URL
  $q = "html";
  //mysql_real_escape_string($_GET['q']);
  //lookup all hints from array if length of q>0
  if(strlen($q) > 0){
      $hint="";
      $a = mysql_query("SELECT * FROM koder_html, koder_javascript, koder_css WHERE
  koder_html.kode_navn LIKE '$q%'
  OR
  koder_javascript.kode_navn LIKE '$q%'
  AND
  koder_css.kode_navn like '$q%'") or die(mysql_error());
      if(mysql_num_rows($a)>0){
  $hint = "";
          while($row = mysql_fetch_assoc($a)){
              $hint .= "<a href='css.kode.php?id=$row[id]'>".$row['kode_navn'] ."</a>";           
          }
      }
  }



  //Set output to "no suggestion" if no hint were found
  //or to the correct values
  if ($hint == ""){
      $response = "Ingen Resultat Endnu";
  }else{
      $response = $hint;
  }

  //output the response
  echo $response;

  ?>
-------------------------------------
Avatar billede jakobdo Ekspert
14. maj 2008 - 08:19 #1
Måske ikke den flotteste løsning, men:

<?php
include("../connection/config.php");

//get the q parameter from URL
$q = "html";
//mysql_real_escape_string($_GET['q']);
//lookup all hints from array if length of q>0
if(strlen($q) > 0){
    $hint="";
    $a = mysql_query("SELECT * FROM koder_html WHERE koder_html.kode_navn LIKE '$q%'") or die(mysql_error());
    if(mysql_num_rows($a)>0){
        while($row = mysql_fetch_assoc($a)){
            $hint .= "<a href='css.kode.php?id=$row[id]'>".$row['kode_navn'] ."</a>";         
        }
    }
   
    $a = mysql_query("SELECT * FROM koder_javascript WHERE koder_javascript.kode_navn LIKE '$q%'") or die(mysql_error());
    if(mysql_num_rows($a)>0){
        while($row = mysql_fetch_assoc($a)){
            $hint .= "<a href='css.kode.php?id=$row[id]'>".$row['kode_navn'] ."</a>";         
        }
    }
   
    $a = mysql_query("SELECT * FROM koder_css WHERE koder_css.kode_navn like '$q%'") or die(mysql_error());
    if(mysql_num_rows($a)>0){
        while($row = mysql_fetch_assoc($a)){
            $hint .= "<a href='css.kode.php?id=$row[id]'>".$row['kode_navn'] ."</a>";         
        }
    }
}



//Set output to "no suggestion" if no hint were found
//or to the correct values
if ($hint == ""){
    $response = "Ingen Resultat Endnu";
}else{
    $response = $hint;
}

//output the response
echo $response;

?>
Avatar billede coderdk Praktikant
14. maj 2008 - 09:45 #2
Det lyder som om du har struktureret din database "forkert"... Hvis indholdet af alle tabellerne f.eks. er:

emne varchar
koden text

ville jeg i stedet lave én tabel:

emne varchar
koden text
kodetype tinyint

og så bruge konstanter til kodetype for at specificere om det er html, css eller js
kodetype kan også være en enum ('html','css','javascript')
Avatar billede sijmonj Nybegynder
15. maj 2008 - 23:11 #3
sorry jeg først svare nu :P, havde helt glemt dette topic, altså min database ser sån her ud

jeg har 3 tabeller i min database
de hedder:
koder_html
koder_css
koder_javascript

i alle sammen har jeg sidde "tabeller" "rækker" eller hva man nu kalder dem :P.

id  css_koden  beskrivelse  kode_navn

forskellen er at i de andre 2 hedder de ikke css_koden, men html_koden og javascript_koden,

forstod ikke helt hva du mente coderdk, er det sån du gider prøve at lave en sql dump til mig?.

jakobdo jeg venter lige lidt med at teste din, da jeg er sikker på det er min database der er noget lort :P!

tak på forhånd
Avatar billede coderdk Praktikant
15. maj 2008 - 23:39 #4
Jeg har ikke noget dump ;) Men din tabel bør se sådan ud:

id
koden
beskrivelse
kode_navn
kode_type

hvor kode_type så skal angive om der er tale om css, html eller javascript. F.eks. i form af tal. Så kan du hive css ud sådan:

SELECT * FROM koder WHERE kode_type = 1

Eller hvis du leder efter noget med navnet:

SELECT * FROM koder WHERE kode_navn LIKE '%noget%' ORDER BY kode_type

Hvis du vil have alle kodetyper ud...
Avatar billede sijmonj Nybegynder
16. maj 2008 - 21:53 #5
så fik jeg lavet databasen (:

men kan ikke helt få den her til at virke endnu, der hvor der står %noget% hvad ska jeg skrive dér?, og hva skal q = være sat til ?


--------------------------------------

  <?php
  include("../connection/config.php");

  //get the q parameter from URL
  $q = "";
  //mysql_real_escape_string($_GET['q']);
  //lookup all hints from array if length of q>0
  if(strlen($q) > 0){
      $hint="";
      $a = mysql_query("SELECT * FROM koder WHERE kode_navn LIKE '%noget%' ORDER BY kode_type") or die(mysql_error());
      if(mysql_num_rows($a)>0){
  $hint = "";
          while($row = mysql_fetch_assoc($a)){
              $hint .= "<a href='vis.koder.php?id=$row[id]'>".$row['kode_navn'] ."</a>";           
          }
      }
  }



  //Set output to "no suggestion" if no hint were found
  //or to the correct values
  if ($hint == ""){
      $response = "Ingen Resultat Endnu";
  }else{
      $response = $hint;
  }

  //output the response
  echo $response;

  ?>
--------------------------

tusind tak endtil videre (:
Avatar billede coderdk Praktikant
17. maj 2008 - 14:04 #6
%noget% er din $q

$a = mysql_query("SELECT * FROM koder WHERE kode_navn LIKE '%".$q."%' ORDER BY kode_type") or die(mysql_error());

men du skal jo sætte $q til noget ;P
Avatar billede sijmonj Nybegynder
17. maj 2008 - 15:04 #7
jah okay :), men ved ikke lige hvad jeg skal sætte q til at være :/, den skal jo bare søge efter det navn man søger efter,
Avatar billede sijmonj Nybegynder
17. maj 2008 - 16:55 #8
har prøvet med dette:
men lige meget hvad jeg skriver i søge felter så udskriver den "fed tekst" som er en af de værdi'er jeg har tilføjet i min tabel..
----------------------
  $hent_navn = mysql_query("SELECT * FROM koder");
  $vis = mysql_fetch_array($hent_navn);

  //get the q parameter from URL
  $q = $vis['kode_navn'];
  //mysql_real_escape_string($_GET['q']);
  //lookup all hints from array if length of q>0
  if(strlen($q) > 0){
      $hint="";
      $a = mysql_query("SELECT * FROM koder WHERE kode_navn LIKE '%$q%'") or die(mysql_error());
      if(mysql_num_rows($a)>0){
  $hint = "";
          while($row = mysql_fetch_assoc($a)){
              $hint .= "<a href='vis.koder.php?id=$row[kode_type]'>".$row['kode_navn'] ."</a>";           
          }
      }
  }
Avatar billede coderdk Praktikant
17. maj 2008 - 17:21 #9
Prøv med

  <?php
  include("../connection/config.php");

  //get the q parameter from URL
  $q = mysql_real_escape_string($_GET['q']);
  //lookup all hints from array if length of q>0
  if(strlen($q) > 0){
      $hint="";
      $a = mysql_query("SELECT * FROM koder WHERE kode_navn LIKE '%".$q."%' ORDER BY kode_type") or die(mysql_error());
      if(mysql_num_rows($a)>0){
  $hint = "";
          while($row = mysql_fetch_assoc($a)){
              $hint .= "<a href='vis.koder.php?id=$row[id]'>".$row['kode_navn'] ."</a>";         
          }
      }
  }



  //Set output to "no suggestion" if no hint were found
  //or to the correct values
  if ($hint == ""){
      $response = "Ingen Resultat Endnu";
  }else{
      $response = $hint;
  }

  //output the response
  echo $response;

  ?>

Den tager $q fra URL'en i.e. http://site.dk/ditscript.php?q=kodenavn
Avatar billede sijmonj Nybegynder
17. maj 2008 - 19:36 #10
SÅ VIRKER DET :P!, Tusind tak :).. har bare et lille problem, den udskriver alle tingene vandret vil gerne have at det skal være lodret, hvor skal jeg sætte mit <br> tag?
Avatar billede coderdk Praktikant
17. maj 2008 - 21:36 #11
Yeah:

$hint .= "<a href='vis.koder.php?id=$row[id]'>".$row['kode_navn'] ."</a>";       

kan blive

$hint .= "<a href='vis.koder.php?id=$row[id]'>".$row['kode_navn'] ."</a><br />";       

:)

Eller noget lidt federe:

$hint .= '<div'.($c++%2==0?' style="background-color:#ccc"':'').'>';
$hint .= "<a href='vis.koder.php?id=$row[id]'>".$row['kode_navn'] ."</a>";
$hint .= '</div>';

og så smid $c = 0; i toppen af scriptet

:)
Avatar billede sijmonj Nybegynder
17. maj 2008 - 22:14 #12
nåå jah forsatan :P jeg sad og prøvede medecho $response."<br>"; osv. :P,

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
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