zoek kriteria.
hij doet dan alleen tussen leeftijden zoeken en de andere niet.
als ik de birthday regel verwijder werken de andere weer...
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE
(`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
AND (`country` LIKE '%".mysql_real_escape_string($_POST['zoekwoord2'])."%' )
AND (`birthday` BETWEEN (CURRENT_DATE - INTERVAL '$zoekwoord5' YEAR) AND (CURRENT_DATE - INTERVAL '$zoekwoord4' YEAR)) ";
?>
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE
(`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
AND (`country` LIKE '%".mysql_real_escape_string($_POST['zoekwoord2'])."%' )
AND (`birthday` BETWEEN (CURRENT_DATE - INTERVAL '$zoekwoord5' YEAR) AND (CURRENT_DATE - INTERVAL '$zoekwoord4' YEAR)) ";
?>
EDIT: zou dit aan de variable kunnen liggen? de ene $zoekwoord5 en de ander$_POST['zoekwoord2'] ??
Gewijzigd op 30/03/2015 19:27:01 door marcel sauer
In bovenstaande query levert dat een SQL-foutmelding op (waarop je overigens altijd moet controleren).
Ik zou overigens alle voor velden kijken of ze ingevuld zijn, is dat niet het geval weglaten uit de where.
Gewijzigd op 30/03/2015 19:44:59 door Ger van Steenderen
ik krijg het echt nog niet werkend.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
$wheres = array();
if (!empty($_POST['zoekwoord1']) {
$wheres[] = "id LIKE '%" . mysql_real_escape_string($_POST['zoekwoord1']) . "%'";
}
// hetzelfde voor 2 en 3
if(filter_input(INPUT_POST,'zoekwoord4', FILTER_VALIDATE_INT)
&& filter_input(INPUT_POST,'zoekwoord5', FILTER_VALIDATE_INT)) {
$wheres[] = "birthday BETWEEN (CURRENT_DATE - INTERVAL " .$_POST['zoekwoord5'] . " YEAR) AND (CURRENT_DATE - INTERVAL " . $_POST['zoekwoord4'] . " YEAR)";
}
$query = "SELECT id,
user_name,
birthday,
TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM users WHERE
" . implode(" AND\n\t", $wheres);
?>
$wheres = array();
if (!empty($_POST['zoekwoord1']) {
$wheres[] = "id LIKE '%" . mysql_real_escape_string($_POST['zoekwoord1']) . "%'";
}
// hetzelfde voor 2 en 3
if(filter_input(INPUT_POST,'zoekwoord4', FILTER_VALIDATE_INT)
&& filter_input(INPUT_POST,'zoekwoord5', FILTER_VALIDATE_INT)) {
$wheres[] = "birthday BETWEEN (CURRENT_DATE - INTERVAL " .$_POST['zoekwoord5'] . " YEAR) AND (CURRENT_DATE - INTERVAL " . $_POST['zoekwoord4'] . " YEAR)";
}
$query = "SELECT id,
user_name,
birthday,
TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM users WHERE
" . implode(" AND\n\t", $wheres);
?>
Gewijzigd op 30/03/2015 21:18:35 door Ger van Steenderen
klinkt logisch alleen ik wist niet dat je een array in een query kon gebruiken!
even ter verduidelijking.
de
if(is_numeric
betekent als er een cijfer ingevuld is toch?
en dan nog een vraagje de implode is neem ik aan een soort include?
en de AND\n\t is dat hij het op een nieuwe regel moet weergeven?
ik ga dit even proberen werkend te krijgen.
Toevoeging op 30/03/2015 21:05:23:
dit werkt niet ....
het formulier staat op een andere pagina trouwens.
Code (php)
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
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
<?
$zoekwoord4 = trim($_POST['zoekwoord4']);
$zoekwoord5 = trim($_POST['zoekwoord5']);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
[code]<?php
$wheres = array();
if (!empty($_POST['zoekwoord']) {
$wheres[] = "id LIKE '%" . mysql_real_escape_string($_POST['zoekwoord']) . "%'";
}
if (!empty($_POST['zoekwoord1']) {
$wheres[] = "user_name LIKE '%" . mysql_real_escape_string($_POST['zoekwoord1']) . "%'";
}
if(is_numeric($zoekwoord4) && is_numeric($zoekwoord5)) {
$wheres[] = "birthday BETWEEN (CURRENT_DATE - INTERVAL $zoekwoord5 YEAR) AND (CURRENT_DATE - INTERVAL $zoekwoord4 YEAR)";
}
$query = "SELECT id,
user_name,
birthday,
TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM users WHERE
" . implode(" AND\n\t", $wheres);
?>
[\code]
$zoekwoord4 = trim($_POST['zoekwoord4']);
$zoekwoord5 = trim($_POST['zoekwoord5']);
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
[code]<?php
$wheres = array();
if (!empty($_POST['zoekwoord']) {
$wheres[] = "id LIKE '%" . mysql_real_escape_string($_POST['zoekwoord']) . "%'";
}
if (!empty($_POST['zoekwoord1']) {
$wheres[] = "user_name LIKE '%" . mysql_real_escape_string($_POST['zoekwoord1']) . "%'";
}
if(is_numeric($zoekwoord4) && is_numeric($zoekwoord5)) {
$wheres[] = "birthday BETWEEN (CURRENT_DATE - INTERVAL $zoekwoord5 YEAR) AND (CURRENT_DATE - INTERVAL $zoekwoord4 YEAR)";
}
$query = "SELECT id,
user_name,
birthday,
TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM users WHERE
" . implode(" AND\n\t", $wheres);
?>
[\code]
Gewijzigd op 30/03/2015 21:05:59 door marcel sauer
Met "Het werkt niet" kunnen we weinig. Wat werkt er niet? en anders echo $query eens, daar kunnen we in ieder geval iets uit opmaken
Ik mis de sluiting } van regel 6 {.
Voer je de query wel uit?
ik ben al aan het zoeken of er ergens een punt of comma vergeten is maar ben er nog niet achter.
moet er trouwens geen " teken na de $wheres komen?
EDIT: Santhe, in mijn script staat het sluit teken wel.
Toevoeging op 30/03/2015 22:18:40:
het laatste voorbeeld
Code (php)
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
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
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$zoekwoord4 = trim($_POST['zoekwoord4']);
$zoekwoord5 = trim($_POST['zoekwoord5']);
[code][code]<?php
$wheres = array();
if (!empty($_POST['zoekwoord']) {
$wheres[] = "id LIKE '%" . mysql_real_escape_string($_POST['zoekwoord']) . "%'";
}
if (!empty($_POST['zoekwoord1']) {
$wheres[] = "user_name LIKE '%" . mysql_real_escape_string($_POST['zoekwoord1']) . "%'";
}
if(is_numeric($zoekwoord4) && is_numeric($zoekwoord5)) {
$wheres[] = "birthday BETWEEN (CURRENT_DATE - INTERVAL $zoekwoord5 YEAR) AND (CURRENT_DATE - INTERVAL $zoekwoord4 YEAR)";
}
$query = "SELECT id,
user_name,
birthday,
TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM users WHERE
" . implode(" AND\n\t", $wheres);
?>
krijg ik niet aan de praat ik blijf een wit scherm krijgen zelfs echo's krijg ik niet te zien.
toch snap ik niet waarom ondertsaande het niet doet :
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE (`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
AND (`birthday` TIMESTAMPDIFF(YEAR, birth_date, CURRENT_DATE) BETWEEN '$zoekwoord5' AND '$zoekwoord4')
";
?>
en dit onderstaande wel.
dan zit er toch iets in de regel birthday niet goed?
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE (`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
";
?>
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$zoekwoord4 = trim($_POST['zoekwoord4']);
$zoekwoord5 = trim($_POST['zoekwoord5']);
[code][code]<?php
$wheres = array();
if (!empty($_POST['zoekwoord']) {
$wheres[] = "id LIKE '%" . mysql_real_escape_string($_POST['zoekwoord']) . "%'";
}
if (!empty($_POST['zoekwoord1']) {
$wheres[] = "user_name LIKE '%" . mysql_real_escape_string($_POST['zoekwoord1']) . "%'";
}
if(is_numeric($zoekwoord4) && is_numeric($zoekwoord5)) {
$wheres[] = "birthday BETWEEN (CURRENT_DATE - INTERVAL $zoekwoord5 YEAR) AND (CURRENT_DATE - INTERVAL $zoekwoord4 YEAR)";
}
$query = "SELECT id,
user_name,
birthday,
TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age
FROM users WHERE
" . implode(" AND\n\t", $wheres);
?>
krijg ik niet aan de praat ik blijf een wit scherm krijgen zelfs echo's krijg ik niet te zien.
toch snap ik niet waarom ondertsaande het niet doet :
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE (`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
AND (`birthday` TIMESTAMPDIFF(YEAR, birth_date, CURRENT_DATE) BETWEEN '$zoekwoord5' AND '$zoekwoord4')
";
?>
en dit onderstaande wel.
dan zit er toch iets in de regel birthday niet goed?
<?
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE (`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
";
?>
Gewijzigd op 30/03/2015 22:22:26 door marcel sauer
Zie de vorige posts.
In het script zelf bovenaan:
Edit: ik had het net omgedraaid ;-(
Gewijzigd op 30/03/2015 22:38:17 door Ger van Steenderen
dit heb ik nu maar als ik dit op mijn site zet werkt alleen de birthday. de andere geven de Er is iets fout gegaan bij het zoeken in de database. dat is de else.
de error reporting heb ik er ook in staan alleen niet hier gepost.
wel op een iets andere manier maar hij werkt prima. (omgekeerd ) :P
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE (`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
AND (`birthday` BETWEEN (CURRENT_DATE - INTERVAL $zoekwoord5 YEAR) AND (CURRENT_DATE - INTERVAL $zoekwoord4 YEAR))
";
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>
$zoekwoord4 = $_POST['zoekwoord4'];
$zoekwoord5 = $_POST['zoekwoord5'];
if($_SERVER['REQUEST_METHOD'] == 'POST')
{
$query = "SELECT id, user_name, birthday, TIMESTAMPDIFF(YEAR, birthday, CURDATE()) AS age FROM users WHERE (`id` LIKE '%".mysql_real_escape_string($_POST['zoekwoord'])."%' )
AND (`user_name` LIKE '%".mysql_real_escape_string($_POST['zoekwoord1'])."%' )
AND (`birthday` BETWEEN (CURRENT_DATE - INTERVAL $zoekwoord5 YEAR) AND (CURRENT_DATE - INTERVAL $zoekwoord4 YEAR))
";
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>
Gewijzigd op 31/03/2015 21:06:37 door marcel sauer
even bovenaan in je script zetten. En jouw witte pagina kan ook komen omdat er typefouten in je script zitten waardoor je script helemaal niet gestart kan worden en je dus enkel een witte pagina overhoudt. Ivo wees me hier onlangs nog op in dit topic. Als je dit Topic leest dan weet je ook dat het beter is om de instellingen in php.ini te veranderen of om een .htaccess bestand aan te maken.
Gewijzigd op 31/03/2015 23:41:51 door Frank Nietbelangrijk
ik kan er niet uit komen.
nu vandaag voor de 5e x het script met de $wheres variable geprobeerd.
zoeken en zoeken waarom ik alleen maar een wit scherm krijg.
de error reporting werkt voor geen meter..
deze boven aan gezet en er komen nogsteeds geen errors uit.....
dan maar even proberen met een if(1){ }
en deze werkt nog niet....
hoewel!
als ik even alle andere if's weg haal begint er leven in te komen!
toch weer alles terug gezet en zoeken beetje bij beetje.
in eens valt mijn oog op de :
ik zie dat de ( voor de !empty niet afgesloten wordt!
alles aan gepast en je raad het vast al?
alles werkt nu bijna top!
in ieder geval wil ik alvast iedereen bedanken die hieraan mee gedacht en geholpen heeft met als uitzondering GER!
hier heb ik veel van geleerd van de schrijf wijze waarop je dus ook een where kan uitvoeren.
het enigste wat nog niet werkt is de birthday WEERGAVEN!!
als ik zeg tussen 10 en 20 jaar dan geeft hij weer 10 tot 19 jaar.
waar moet ik de + 1 plaatsen?
EDIT : GEVONDEN! ++$variable doet het werk! alles werkt top nu!
Gewijzigd op 02/04/2015 21:44:14 door marcel sauer
Precies wat ik mijn vorige post gezegd heb dus... Lees het eens door ;-)
ik heb alleen jouw topic nog niet gelezen. als ik me ergens in vast bijt houd ik me ook alleen daarmee bezig om afleiding te voorkomen.
aan de ene kant een goede eigenschap maar soms ook een slechte.
je topic ga ik zeker nog even door lezen.