Zoeken in meerdere tabellen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2 3 volgende »

Jaap V

Jaap V

14/10/2009 13:25:00
Quote Anchor link
@jaron,
ik snap wel dat het een aanvulling is,
maar kom er even niet uit...
inplaats van dat hij die sql uitvoert print hij hem gewoon op de site...
en na het zoeken komt er dus gewoon die "sql" te staan...

@lauren,
de mogelijkheid om vinkjes weg te halen in de checkboxxen moet wel blijven bestaan,
dus die code zoek ik niet helemaal...
 
PHP hulp

PHP hulp

27/11/2024 00:39:55
 
Jaap V

Jaap V

16/10/2009 08:45:00
Quote Anchor link
kan iemand mij helpen aan de code?
om te zorgen dat als er checkboxxen uitgevinkt worden,
er niet meer op die categorie gezocht wordt?

mijn dank is enorm!
 
Jaron T

Jaron T

16/10/2009 10:08:00
Quote Anchor link
Controleren met :

if (isset($_POST['checkbox1']))


Misschien een cursus door lopen want dit is heel basic.
 
Jaap V

Jaap V

19/10/2009 08:40:00
Quote Anchor link
dan kom ik uit op het volgende:
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
<?php
//de query uitvoeren
    $sql = mysql_query("SELECT * FROM
    if (isset($_POST['Categorie']))
    { echo "
categorie"}
    if (isset($_POST['Logboek']))
    { echo "
,logboek"}
    
    if (isset($_POST['Omschrijving_cat']))
    {echo "
WHERE Categorie LIKE '%$zoekterm%'"}
    
    if (isset($_POST['Omschrijving_log']))
    {OR Omschrijving LIKE '%$zoekterm%'}
    
    echo  "
LIMIT 0, 3  ") or die(mysql_error());"
?>


maar er klopt volgens mij niets van!
 
Niels K

Niels K

19/10/2009 08:46:00
Quote Anchor link
Dat klopt helemaal niet neaj. Je kan als ik het goed heb geen if(isset in query uitvoeren. En aan de kleurtjes kan je zien dat het script al niet klopt..
 
Jaap V

Jaap V

19/10/2009 08:54:00
Quote Anchor link
dat leek mij ook al,
maar een soorgelijke code werdt mij hier gegeven,
ik heb even geen idee hoe ik verder moet zoeken?
 
Eddy E

Eddy E

19/10/2009 09:07:00
Quote Anchor link
Kan wel, maar ik doe het altijd vooraf.
Vaak duidelijker en minder kans op fouten.

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
<?php
//de query maken
if(isset($_POST['categorie'])){$cat = true;}
if(isset($_POST['logboek'])){$log = true;}

// beide
if($cat AND $log)
    {

    $tabellen = "categorie AS c, logboek AS l";
    $where = "    c.categorie LIKE %".mysql_real_escape_string($_POST['Omschrijving_cat'])."%
                OR l.omschrijving LIKE %"
.mysql_real_escape_string($_POST['Omschrijving_log'])."% ";
    }

// alleen categorie
if($cat AND !$log)
    {

    $tabellen = "categorie AS c";
    $where = "c.categorie LIKE %".mysql_real_escape_string($_POST['Omschrijving_cat'])."% ";
    }

// alleen logboek
if(!$cat AND $log)
    {

    $tabellen = "logboek AS l";
    $where = "l.omschrijving LIKE %".mysql_real_escape_string($_POST['Omschrijving_log'])."% ";
    }


// samenvoegen
$sql = "SELECT l.*, c.*
        FROM "
. $tabellen . "
        WHERE "
. $where . "
        LIMIT 0, 3
        ORDER BY l.id, c.id
        "
;
        
// query dit en laat hem script anders sterven
$sql = mysql_query($sql) or die(mysql_error());
?>
Gewijzigd op 01/01/1970 01:00:00 door Eddy E
 
Jaap V

Jaap V

19/10/2009 09:16:00
Quote Anchor link
code gekopieerd,
en krijg deze error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE LIMIT 0, 3 ORDER BY l.id, c.id' at line 3
 
- SanThe -

- SanThe -

19/10/2009 11:28:00
Quote Anchor link
use near 'WHERE LIMIT 0, 3

Er staat niets achter WHERE .....
 
Jaap V

Jaap V

19/10/2009 14:27:00
Quote Anchor link
zat een foutje in de hoofdletters,
is e rnu uit,
maar hij geeft n gewoon een blanco pagina,
zonder foutmelding!

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
95
96
97
98
99
100
101
102
103
104
<?php
include('gegevens.php');
 
 //ff kijken of er op verzenden gedrukt is...
if($_SERVER['REQUEST_METHOD'] == 'POST')
{

//variable zoekterm aanmaken waarin de zoekterm 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 en er dus meerdere tekens zijn opggegeven
    else
    {
//de query uitvoeren
//de query maken

if(isset($_POST['categorie'])){$cat = true;}
if(isset($_POST['logboek'])){$log = true;}

// beide
if($cat AND $log)
{

$tabellen = "categorie AS c, logboek AS l";
$where = " c.Categorie LIKE %".mysql_real_escape_string($_POST['Omschrijving_cat'])."%
OR l.Omschrijving LIKE %"
.mysql_real_escape_string($_POST['Omschrijving_log'])."% ";
}

// alleen categorie
if($cat AND !$log)
{

$tabellen = "categorie AS c";
$where = "c.Categorie LIKE %".mysql_real_escape_string($_POST['Omschrijving_cat'])."% ";
}

// alleen logboek
if(!$cat AND $log)
{

$tabellen = "logboek AS l";
$where = "l.Omschrijving LIKE %".mysql_real_escape_string($_POST['Omschrijving_log'])."% ";
}


// samenvoegen
$sql = "SELECT l.*, c.*
FROM "
. $tabellen . "
WHERE "
. $where . "
LIMIT 0, 3
ORDER BY l.id, c.id
"
;
  
    
    
    
    $aantal = mysql_num_rows($sql) or die(mysql_error());
    echo ($aantal == 1) ? $aantal.' resultaat gevonden <br><br>' : $aantal.' resultaten gevonden <br><br>';
        echo "de opgegeven zoekterm was: <b> $zoekterm </b><br><br>";
        
        //en de while loop wordt gestart om alles uit de database te laten zien
        echo '<hr size="1" color="black">';
        
        
while($row = mysql_fetch_array($sql))
    {

    $sql1 = mysql_query("SELECT * FROM relatie WHERE id = '".$row['c_id']."'") or die(mysql_error());
        $Categorie = $row['Categorie'];
        $Date = $row['Date'];
        $id      = $row['id'];
        $Omschrijving = substr($row['Omschrijving'], 0, 15);
        
while($row = mysql_fetch_array($sql1))
        
        echo '<table border="1" width="300"><tr><th width="60">Naam: </th><td>'.$row['Naam'].'</td></tr><br>';
        echo '<th>Datum: </th><td>'.$Date.'</td></tr><br>';
        echo '<th>Categorie: </th><td><a href="res_categorie.php?id='.$id.'">'.$Categorie.'</a></td></tr><br>';
        echo '<th>Omschrijving: </th><td>'.$Omschrijving.'</td></tr></table><br><hr size="1" color="black">';
    }
    
    }    
}

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

<form action="categorie.php" method="post">
  <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>
    <a href="javascript:history.go(-1);">&laquo; Ga terug</a>
  <?php
}
?>



op deze manier hoort hij toch ook te werken?

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
if(isset($_POST['Categorie'])){$cat = true;}
if(isset($_POST['Logboek'])){$log = true;}

// beide
if($cat AND $log)
{
$tabellen = "categorie, logboek ";
$where = "Categorie LIKE '%$zoekterm%'
OR Omschrijving LIKE '%$zoekterm%' ";
}
// alleen categorie
if($cat AND !$log)
{
$tabellen = "categorie";
$where = "Categorie LIKE '%$zoekterm%' ";
}
// alleen logboek
if(!$cat AND $log)
{
$tabellen = "logboek";
$where = "Omschrijving LIKE '%$zoekterm%' ";
}

// samenvoegen
$sql = "SELECT *
FROM " . $tabellen . "
WHERE " . $where . "
ORDER BY l.id, c.id
";


alleen deze geeft ook witte pagina,
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
 
Niels K

Niels K

19/10/2009 14:35:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<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"

Dit staat niet helemaal netjes

doe iets als dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<input type="checkbox" name="categorie" checked>


TIP: gebruik in een input type geen hoofdletters. Daarmee bedoel ik name="Hoofdletter" Dit kan verwarrend zijn en tot fouten leiden.


voor de rest zie ik ook dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$sql
= "SELECT l.*, c.*
FROM "
. $tabellen . "
WHERE "
. $where . "
LIMIT 0, 3
ORDER BY l.id, c.id
"
;
?>


Ik zie dat je de variablen zo aanroep ".$vari." probeer daar eens '".."' te gebruiken. Volgens mij kan je het niet zo doen zoals jij het nu doet. Maar het kan ook zijn dat het wel zo kan xD

Voor de rest.. Zet helemaal boven aan je pagina eens het volgende

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
?>


En vertel eens wat daaruit komt
Gewijzigd op 01/01/1970 01:00:00 door Niels K
 
Toine vd P

Toine vd P

19/10/2009 14:42:00
Quote Anchor link
Deze heb ik van de week ook al gepost ergens, wellicht kun je d'r wat mee;

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
<?
function doSearch($hooiberg,$naald) {
    if (!is_array($hooiberg)) {
        // pass
    }
    if (strlen($naald)  < 4) { # eventueel aantal karakters afvangen
        // pass

    }
    $zoekresultaten = array();
    $froms = array();
    $wheres = array();
    foreach ($hooiberg as $tabel => $velden) {
        $froms[] = sprintf('%s',$tabel);
        $tables[] = sprintf('%s.*',$tabel);
        $where = array();
        foreach ($velden as $veld) {
            $where[] = $veld." like '%".$naald."%'";
        }

        $result = mysql_query(sprintf("select * from %s where (%s);",$tabel,join(' or ',$where)));
        if (mysql_num_rows($result)) {
            while ($zoekresultaat = mysql_fetch_object($result)) {
                $zoekresultaat->table = $tabel;
                #    $zoekresultaat->doel = // hier een functie die met ee nswitch b.v. ?pagina=jaddiejaddie&id=bla teuggeeft
                $zoekresultaten[$tabel][] = $zoekresultaat;
            }
        }
    }

    return $zoekresultaten;
}

?>


vervolgens zoeken met;

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?
$hooiberg
= array(
    'tabelnaam' => array('te','zoeken','velden'),
    'andere_tabel' => array('andere','te','zoeken','velden')
);

$resultaten = doSearch($hooiberg,$zoekterm);

echo '<pre>';
print_r($resultaten);
echo '</pre>';
?>


suc6
 
Jaap V

Jaap V

19/10/2009 14:50:00
Quote Anchor link
@ niels,

ik heb de kleine aanpassingen gedaan,
maar hij werkt nog niet naar behoren...

ik krijg nu wel een error:
namelijk de volgende:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 63

?>
 
Niels K

Niels K

19/10/2009 14:52:00
Quote Anchor link
Oke;) En wat is line 63?

@twan

Dat was voor mij;) Goed script!
Gewijzigd op 01/01/1970 01:00:00 door Niels K
 
Jaap V

Jaap V

19/10/2009 14:56:00
Quote Anchor link
dit is regel 63:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$aantal = mysql_num_rows($sql) or die(mysql_error());


@niels,
ik denk dat jij twan bedoelde :P
want jaron heft al tijdje niet meer gereageerd hier xD


als ik dingen uitving krijg ik deze error:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
Notice: Undefined variable: log in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 34

Notice: Undefined variable: log in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 41

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 63


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
regel 34: if($cat AND $log)
regel 41: if($cat AND !$log)
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
 
Niels K

Niels K

19/10/2009 15:05:00
Quote Anchor link
@incarnez

Ja die bedoel ik jah:P (post aangepast)

Ok,

Maak er eens dit van of had je dat al?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$sql
= "SELECT l.*, c.*
FROM '"
. $tabellen."'
WHERE '"
. $where ."'
LIMIT 0, 3
ORDER BY l.id, c.id
"
;
?>
 
Jaap V

Jaap V

19/10/2009 15:09:00
Quote Anchor link
ik had deze:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
// samenvoegen
$sql = "SELECT *
FROM '" . $tabellen . "'
WHERE '" . $where . "'

";


maar zal nu even die van jou proberen...
 
Jaap V

Jaap V

19/10/2009 15:11:00
Quote Anchor link
ik heb de orginele code weer gebruikt,
nu krijg k een flinke error...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
Notice: Undefined variable: cat in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 34

Notice: Undefined variable: cat in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 41

Notice: Undefined variable: cat in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 47

Notice: Undefined variable: log in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 47

Notice: Undefined variable: tabellen in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 55

Notice: Undefined variable: where in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 56

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in C:\Documents and Settings\Klant\Bureaublad\Desktop\UsbWebserver\Root\website\categorie\zoeknaam.php on line 65


dit is de hele code

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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);

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

//variable zoekterm aanmaken waarin de zoekterm 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 en er dus meerdere tekens zijn opggegeven
    else
    {
//de query uitvoeren
//de query maken

if(isset($_POST['categorie'])){$cat = true;}
if(isset($_POST['logboek'])){$log = true;}

// beide
if($cat AND $log)
{

$tabellen = "categorie AS c, logboek AS l";
$where = " c.Categorie LIKE %".mysql_real_escape_string($_POST['Omschrijving_cat'])."%
OR l.Omschrijving LIKE %"
.mysql_real_escape_string($_POST['Omschrijving_log'])."% ";
}

// alleen categorie
if($cat AND !$log)
{

$tabellen = "categorie AS c";
$where = "c.Categorie LIKE %".mysql_real_escape_string($_POST['Omschrijving_cat'])."% ";
}

// alleen logboek
if(!$cat AND $log)
{

$tabellen = "logboek AS l";
$where = "l.Omschrijving LIKE %".mysql_real_escape_string($_POST['Omschrijving_log'])."% ";
}


// samenvoegen
$sql = "SELECT l.*, c.*
FROM '"
. $tabellen."'
WHERE '"
. $where ."'
LIMIT 0, 3
ORDER BY l.id, c.id
"
;

  
    
    
    
    $aantal = mysql_num_rows($sql) or die(mysql_error());
    echo ($aantal == 1) ? $aantal.' resultaat gevonden <br><br>' : $aantal.' resultaten gevonden <br><br>';
        echo "de opgegeven zoekterm was: <b> $zoekterm </b><br><br>";
        
        //en de while loop wordt gestart om alles uit de database te laten zien
        echo '<hr size="1" color="black">';
        
        
while($row = mysql_fetch_array($sql))
    {

    $sql1 = mysql_query("SELECT * FROM relatie WHERE id = '".$row['c_id']."'") or die(mysql_error());
        $Categorie = $row['Categorie'];
        $Date = $row['Date'];
        $id      = $row['id'];
        $Omschrijving = substr($row['Omschrijving'], 0, 15);
        
while($row = mysql_fetch_array($sql1))
        
        echo '<table border="1" width="300"><tr><th width="60">Naam: </th><td>'.$row['Naam'].'</td></tr><br>';
        echo '<th>Datum: </th><td>'.$Date.'</td></tr><br>';
        echo '<th>Categorie: </th><td><a href="res_categorie.php?id='.$id.'">'.$Categorie.'</a></td></tr><br>';
        echo '<th>Omschrijving: </th><td>'.$Omschrijving.'</td></tr></table><br><hr size="1" color="black">';
    }
    
    }    
}

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

<form action="categorie.php" method="post">
  <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>
    <a href="javascript:history.go(-1);">&laquo; Ga terug</a>
  <?php
}
?>



        
Gewijzigd op 01/01/1970 01:00:00 door Jaap V
 
Jaron T

Jaron T

19/10/2009 15:16:00
Quote Anchor link
De fout lijkt me meer dan duidelijk ...
 
Lauren Zonneveld

Lauren Zonneveld

19/10/2009 15:16:00
Quote Anchor link
Volgens mij voer je de query als argument in bij mysql_num_rows en niet het resultaat van je query...
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysql_num_rows(mysql_query($sql));
 

Pagina: « vorige 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.