Zoeken in meerdere tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 3 volgende »

Jaap V

Jaap V

08/10/2009 11:14:00
Quote Anchor link
ik heb nu een zoekveld gemaakt,
die alleen zoekt op naam van de categorie

nu wil ik eigeik dat hij eerst zoek op naam categorie,
daarna verder gaat in de omschrijving,
of daar iets staat van de zoekterm...

is dit te realiseren?

deze code heb ik nu:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<?php

include('gegevens.php');
 //ff checken of er op verzenden gedrukt is...
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

//variable zoekterm aanmaken waarin de post staat + nog wat beveiliging
    $zoekterm = mysql_real_escape_string(addslashes(trim($_POST['zoekterm'])));
 
    //even checken of er wel genoeg karakters zijn ingevoerd. Zoniet, maar de variable error aan met een boodschap
    if(strlen($zoekterm) < 1)
    {

        $error = '<p>Je moet wel een zoekterm invoeren.</p>';
    }

 
    //hier checken we dus of de variable error bestaat
    if(isset($error))
    {

        //ja hij bestaat... echo'en met die hap
        echo $error;
    }

    //wanneer er GEEN error is
    else
    {
        //de query uitvoeren
        $sql = mysql_query("SELECT * FROM relatie WHERE Naam LIKE '%$zoekterm%' ORDER BY Naam ASC");
 
                $aantal = mysql_num_rows($sql);
        echo ($aantal == 1) ? $aantal.' resultaat gevonden' : $aantal.' resultaten gevonden';
               echo '<br><br>';
              //en de while loop wordt gestart om alles te weergeven
           while($row = mysql_fetch_array($sql))
        {

            echo '<table border="1"><tr><th>Naam: </th><td><a href="cat_profiel.php?id='.$row['id'].'">'.$row['Naam'].'</a></td></tr></table><br>';
        }
    }    
}

//er is nog niet op verzenden gedrukt. Show het formulier maar!!
else
{ ?>

<form action="categorie.php" method="post">
  <p>Zoek gebruiker op zijn/haar naam:</p>
  <input type="text" name="zoekterm"><br>
  <input type="submit" value="Zoeken">
  </form>

  <br><br>
    <a href="javascript:history.go(-1);">&laquo; Ga terug</a>
  <?php
}
?>



        
 
PHP hulp

PHP hulp

26/11/2024 21:53:04
 
Jaron T

Jaron T

08/10/2009 11:16:00
Quote Anchor link
Kan je niet alles in 1 topic houden? Ipv 3 topics in 2 dagen.

http://www.phphulp.nl/forum/showtopic.php?cat=12&id=67815&lasttopic=1
http://www.phphulp.nl/forum/showtopic.php?cat=12&id=67760

edit: 5 topics in 1 week..

08.10.2009 11:14 Zoeken in meerdere tabellen
07.10.2009 13:10 2 tabellen gegevens ophalen
05.10.2009 12:42 resultaten ophalen 2 tabellen
01.10.2009 11:20 catogorie id samenvoegen
01.10.2009 09:35 id posten
Gewijzigd op 01/01/1970 01:00:00 door Jaron T
 
Jaap V

Jaap V

08/10/2009 11:19:00
Quote Anchor link
excuse me,
maar op ncf, (ander forum)

meot voor alles een ander onderwerp aangemaakt worden,
ik denk dat is hier wel hetzelfde...
 
Jaron T

Jaron T

08/10/2009 11:24:00
Quote Anchor link
Het is geen ander onderwerp.

08.10.2009 11:14 Zoeken in meerdere tabellen
07.10.2009 13:10 2 tabellen gegevens ophalen
05.10.2009 12:42 resultaten ophalen 2 tabellen


Komt alle 3 op hetzelfde neer.
 
Jaap V

Jaap V

08/10/2009 11:25:00
Quote Anchor link
in mijn ogen is dt niet waar,

want dit topic,
gat over zoeken in meerdere tabellen...


en die andere 2 zou inderdaad 1 kunnen zijn (sorry daarvoor)
die betreffen allebei gegevens ophalen na een link...

--edit--

ik heb nu een code gevonden op het internet,
maar hij werkt niet helemaal,

er zitten ook nog erg veel querie's in zag ik al...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
<?

include "gegevens.php";  
//zoekmachine
if ($_POST['naamvantekstveld']) {



  $naamvantekstveld=$_POST['naamvantekstveld'];
  // querys, hier plaats je dus je querys die in je tabellen zoeken
  $query1="SELECT Naam, Voornaam FROM `relatie` WHERE Zoeknaam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
  $query2="SELECT Naam, Voornaam FROM `relatie` WHERE Naam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
  $query3="SELECT Naam, Voornaam FROM `relatie` WHERE Voorvoeg LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
  $query4="SELECT Naam, Voornaam FROM `relatie` WHERE Voornaam LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
  $query5="SELECT Naam, Voornaam, datum FROM `relatie` WHERE Adres LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
  $query6="SELECT Naam, Voornaam FROM `relatie` WHERE Pcode LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
  $query7="SELECT Naam, Voornaam FROM `relatie` WHERE Email LIKE '%$naamvantekstveld%' ORDER BY titel ASC";
  // resultaten ophalen
  $sql1 = mysql_query($query1) or die (mysql_error());
  $aantal1=mysql_num_rows($sql1);
  $sql2 = mysql_query($query2) or die (mysql_error());
  $aantal2=mysql_num_rows($sql2);
  $sql3 = mysql_query($query3) or die (mysql_error());
  $aantal3=mysql_num_rows($sql3);
  $sql4 = mysql_query($query4) or die (mysql_error());
  $aantal4=mysql_num_rows($sql4);
  $sql5 = mysql_query($query5) or die (mysql_error());
  $aantal5=mysql_num_rows($sql5);
  $sql6 = mysql_query($query6) or die (mysql_error());
  $aantal6=mysql_num_rows($sql6);
  $sql7 = mysql_query($query7) or die (mysql_error());
  $aantal7=mysql_num_rows($sql7);
  // aantal resultaten
  $aantal = $aantal1 + $aantal2 + $aantal3 + $aantal4 + $aantal5 + $aantal6 + $aantal7;
  if ($aantal1 == 0 AND $aantal2 == 0 AND $aantal3 == 0 AND $aantal4 == 0 AND $aantal5 == 0 AND $aantal6 == 0 AND $aantal7 == 0) {
    echo "Er zijn <B>geen</B> resultaten gevonden";
  }
else {
    echo "$aantal gevonden resultaten:<BR><BR>";
// hier resultaten
echo "<b>$aantal1 gevonden reviews:</b><br>";

while ($obj1 = mysql_fetch_object($sql1)) {
      
echo "<a href=\"review.php?id=$obj1->id\">$obj1->Zoeknaam</a> - <a href=\"mailto:$obj1->email\">$obj1->auteur</a><br>";
      }

  
        echo "<br>";
        echo "<b>$aantal2 gevonden downloads:</b><br>";

        while ($obj2 = mysql_fetch_object($sql2)) {
        echo "<a href=\"download.php?id=$obj2->id\">$obj2->Naam</a><br>";  
        }

        echo "<br> ";
        echo "<b>$aantal3 gevonden (aankomende) releases:</b><br>";
    
        while ($obj3 = mysql_fetch_object($sql3)) {
        echo "<a href=\"upcomingmovie.php?id=$obj3->id\">$obj3->Voornaam</a><br>";  
        }

        echo "<br> ";
        echo "<b>$aantal4 gevonden streamfiles:</b><br>";
    
        while ($obj4 = mysql_fetch_object($sql4)) {
        echo "<a href=\"streamfile.php?id=$obj4->id\">$obj4->titel</a><br>";        
        }

        echo "<br> ";
        echo "<b>$aantal5 gevonden nieuwsberichten:</b><br>";
    
        while ($obj5 = mysql_fetch_object($sql5)) {
        echo "<a href=\"leesnieuws.php?id=$obj5->id\">$obj5->titel</a> - $obj5->datum<br>";        
        }

        echo "<br> ";
        echo "<b>$aantal6 gevonden imagegalleries:</b><br>";
    
        while ($obj6 = mysql_fetch_object($sql6)) {
        echo "<a href=\"imglist.php?id=$obj6->titel\">$obj6->titel</a><br>";        
        }

        
        echo "<br> ";
        echo "<b>$aantal7 gevonden filmposters:</b><br>";
    
        while ($obj7 = mysql_fetch_object($sql7)) {
        echo "<a href=\"imglist.php?id=$obj7->id\">$obj7->titel</a><br>";        
        }
}
 }

echo "<FORM ACTION=\"\" METHOD=\"post\">";
echo "<center>Zoeken naar:";
echo "<INPUT TYPE=\"text\" NAME=\"naamvantekstveld\"> - ";
echo "<INPUT TYPE=\"submit\" NAME=\"Zoek\" VALUE=\"Zoek\"></center>";
echo "</FORM>";

//einde zoekmachine

?>


ik krijg deze error:
Unknown column 'titel' in 'order clause'
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
 
Ricardo

Ricardo

08/10/2009 15:11:00
Quote Anchor link
Kan je niet gewoon als je 0 resultaten hebt, een nieuwe query uitvoeren ipv 0 resultaten weergeven? Of bedoel je dat je het in 1 query wil doen?
 
Jaap V

Jaap V

08/10/2009 15:53:00
Quote Anchor link
dat zou mischien ook kunnen,
werkt zeker met if-else methode?

maar dat is niet ideaal...
hij moet eigelijk in alle 3 tegelijk zoeken...

omdat als je bijv 1 categorie hebt mt ip adres...

en de andere gaat ook over ip maar daar is de titel pc...
en je weet dat niet meer...

dan krijg je die resultaten noit meer te zien...
 
- SanThe -

- SanThe -

08/10/2009 16:11:00
Quote Anchor link
SELECT ... FROM ... WHERE veld1 LIKE ... OR veld2 LIKE OR veld3 LIKE ......
 
Jaap V

Jaap V

08/10/2009 16:15:00
Quote Anchor link
oke deze snap ik...

SELECT ... FROM ... WHERE veld1 LIKE ... OR veld2 LIKE OR veld3 LIKE ......

wordt hij dan zo ingevuld?
vind er nogal vaak zoekterm in voorkomen :P


SELECT * FROM relatie WHERE Naam LIKE '%$zoekterm%' OR Zoeknaam LIKE '%$zoekterm%' OR Adres LIKE '%$zoekterm%'
 
- SanThe -

- SanThe -

08/10/2009 16:38:00
Quote Anchor link
Probeer het eens zou ik zeggen.
 
Jaap V

Jaap V

09/10/2009 08:30:00
Quote Anchor link
hij werkt inderdaad,
bedankt voor de moeite! :)


--edit--

ik moet nu eigeljk zoeken in 2 tabellen:
dit is mijn code:

$sql = mysql_query("SELECT * FROM categorie WHERE Categorie LIKE '%$zoekterm%' OR Omschrijving LIKE '%$zoekterm%' ORDER BY Categorie ASC");


en deze werkt niet:

$sql = mysql_query("SELECT * FROM categorie, logboek WHERE Categorie LIKE '%$zoekterm%' OR Omschrijving LIKE '%$zoekterm%' OR Logboek LIKE '%$zoekterm%' ORDER BY Categorie ASC");
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
 
Lauren Zonneveld

Lauren Zonneveld

09/10/2009 12:57:00
Quote Anchor link
Als het jij een tabel "logboek" hebt die gekoppeld is aan de tabel "categorie" (middels een kolom die in beide tabellen voorkomt), kun je LEFT JOIN gebruiken.

Met de volgende query worden alle records opgehaald uit de tabel categorie die aan de voorwaarden voldoen. Daarnaast worden, als categorie_id ook bestaat in de tabel logboek, de bijbehorende gegevens uit de logboek tabel toegevoegd aan de rij.

SELECT *, categorie.categorie_id AS categorie_id FROM categorie
LEFT JOIN logboek ON categorie.categorie_id = logboek.categorie_id
WHERE categorie.Categorie LIKE '%$zoekterm%'
OR categorie.Omschrijving LIKE '%$zoekterm%'
OR categorie.Logboek LIKE '%$zoekterm%'
ORDER BY categorie.Categorie ASC

Eenvoudige LEFT JOIN tutorial:
http://www.tizag.com/mysqlTutorial/mysqlleftjoin.php
 
Jaap V

Jaap V

12/10/2009 08:46:00
Quote Anchor link
hoe kun je nu precies deze 2 sql's samenvoegen?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
SELECT relatie.Naam, categorie.Categorie
FROM relatie, categorie
WHERE relatie.id = categorie.c_id


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
SELECT *
FROM categorie
WHERE Categorie
LIKE '%$zoekterm%'
OR Omschrijving
LIKE '%$zoekterm%'
ORDER BY Categorie ASC




nu heb ik nog een klein vraagje,
als je de zoekpagina opent zoekt hij automatisch in de opgegeven kollomen...

nu wil ik eigelijk dat er boven aan de zoekpagina checkboxxen staan,
die automatisch aangevinkt zijn...
en die je uit kan vinken als je daar niet in wilt zoeken...
is dit gemakelijk te doen via if checked ofzo?
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
 
- SanThe -

- SanThe -

12/10/2009 09:34:00
Quote Anchor link
Ja, dat is basic html.
 
Jaap V

Jaap V

12/10/2009 09:38:00
Quote Anchor link
ik weet wel hoe ik checkboxxen maak,
en hoe je ze automatisch laat aanvinken...

maar geen idee als je ze uitvinkt dat hij dan niet in die kollom zoekt...
dat werkt via if else ofniet?

--edit--

dit is nu het form:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<form action="categorie_cat.php" method="post">
  <p>Zoek op Categorie:</p>
  <INPUT TYPE=CHECKBOX NAME="Categorie" checked>Categorie&nbsp;
<INPUT TYPE=CHECKBOX NAME="Omschrijving_cat" checked>Categorie omschrijving<BR>
<INPUT TYPE=CHECKBOX NAME="Logboek"      checked>Logboek&nbsp;
<INPUT TYPE=CHECKBOX NAME="Omschrijving_log"      checked>Logboek omschrijving<P>
  <input type="text" name="zoekterm"><br>
  <input type="submit" value="Zoeken">
  </form>

  <br><br>
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
 
Michael -

Michael -

12/10/2009 09:56:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
<?php
if(!empty($_POST['Omschrijving_cat']) OR
!empty($_POST['Omschrijving_log']))
{

    echo 'SELECT *
    FROM categorie '
;

    echo 'WHERE ';

    if(!empty($_POST['Omschrijving_cat']))
        echo "Categorie
        LIKE '%$zoekterm%' "
;

    if(!empty($_POST['Omschrijving_cat']) AND
    !empty($_POST['Omschrijving_log']))
    echo 'OR ';

    if(!empty($_POST['Omschrijving_log']))
        echo "Omschrijving
        LIKE '%$zoekterm%' "
;
    echo 'ORDER BY Categorie ASC';
}
else echo 'Er is niks aangevinkt';
?>

Zoiets. Moet je maar kijken hoe je 't precies doet.
Edit: iets verbeterd
Gewijzigd op 01/01/1970 01:00:00 door Michael -
 
Jaap V

Jaap V

12/10/2009 10:55:00
Quote Anchor link
die code ziet er logisch uit maar werkt niet helemaal met resultatne weergeven,
komt wss omdat ik dit stukje code mis:

$sql = mysql_query

en daardoor geeft hij geen resultaten...

als ik die voor de andere code zet.
dan post hij gewoon de hele query...
 
Jaap V

Jaap V

13/10/2009 09:02:00
Quote Anchor link
is er iemand die dit voor mij weet op te lossen?
heb al veel dingen geprobeerd,
maar blijf errors krijgen...
 
Jaap V

Jaap V

14/10/2009 09:06:00
Quote Anchor link
*bump*
 
Jaron T

Jaron T

14/10/2009 09:20:00
Quote Anchor link
Wat turmin post is een aanvulling op je script... , dit moet je binnen je sql query zetten .
 
Lauren Zonneveld

Lauren Zonneveld

14/10/2009 09:20:00
Quote Anchor link
SELECT * FROM categorie
LEFT JOIN relatie ON relatie.id = categorie.c_id
WHERE Categorie LIKE '%$zoekterm%' OR Omschrijving LIKE '%$zoekterm%'
ORDER BY Categorie ASC

Volgens mij zoek je zoiets dergelijks. Als hij meldt dat er kollommen "ambiguous" zijn betekend dit dat er 2 kollommen met dezelfde naam zijn in de tabellen, specificeer dan uit welke tabel de kollom gehaald moet worden bijvoorbeeld: SELECT *, categorie.id AS id FROM.....
Gewijzigd op 01/01/1970 01:00:00 door Lauren Zonneveld
 

Pagina: 1 2 3 volgende »



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.