zoek kriteria.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Marcel sauer

marcel sauer

30/03/2015 19:04:56
Quote Anchor link
hier doet hij het nog steeds niet als ik dit heb.....
hij doet dan alleen tussen leeftijden zoeken en de andere niet.
als ik de birthday regel verwijder werken de andere weer...

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

$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
 
PHP hulp

PHP hulp

29/03/2024 12:33:13
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/03/2015 19:42:27
Quote Anchor link
Ja dat kan, je moet controleren of zoekwoord4 en zoekwoord5 niet leeg zijn.
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
 
Marcel sauer

marcel sauer

30/03/2015 19:57:51
Quote Anchor link
kan ik zoekwoord 4 en 5 niet ook met en mysql_real_escape_string($_POST['zoekwoord4'] doen? en zo ja hoe pas ik dat dan toe op de INTERVAL ??

ik krijg het echt nog niet werkend.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/03/2015 20:33:15
Quote Anchor link
Wat ik zou doen:
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
<?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);
?>
Gewijzigd op 30/03/2015 21:18:35 door Ger van Steenderen
 
Marcel sauer

marcel sauer

30/03/2015 20:50:11
Quote Anchor link
wow dat is even een hele andere opzet!

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)
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
<?
$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
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/03/2015 21:16:52
Quote Anchor link
Ik heb de code even wat aangepast want is_numeric dekt niet helemaal de lading. Dan kan je bv ook 20.5 invullen en dat zou ook wel eens een SQL fout op kunnen leveren.

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

- SanThe -

30/03/2015 21:17:37
Quote Anchor link
Regel 2 en 3 moeten uiteraard na regel 6 staan.
Ik mis de sluiting } van regel 6 {.
Voer je de query wel uit?
 
Marcel sauer

marcel sauer

30/03/2015 21:23:44
Quote Anchor link
ik bedoel ik krijg nu een wit scherm als ik de zoek opdracht geef via het form.
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)
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
<?

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

- SanThe -

30/03/2015 22:28:26
Quote Anchor link
Regel 46 klopt niet.
Zie de vorige posts.
 
Ger van Steenderen
Tutorial mod

Ger van Steenderen

30/03/2015 22:35:18
Quote Anchor link
Om te beginnen moet je als je aan het ontwikkelen bent altijd ervoor zorgen dat je error reporting aan staat (in PHP). Dit kan je per script regelen of in php.ini als je een eigen test omgeving hebt.
In het script zelf bovenaan:
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);
?>

Edit: ik had het net omgedraaid ;-(
Gewijzigd op 30/03/2015 22:38:17 door Ger van Steenderen
 
Marcel sauer

marcel sauer

31/03/2015 21:04:07
Quote Anchor link
Ben ik weer.

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)
PHP script in nieuw venster Selecteer het PHP script
1
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);
?>
Gewijzigd op 31/03/2015 21:06:37 door marcel sauer
 
Frank Nietbelangrijk

Frank Nietbelangrijk

31/03/2015 23:41:33
Quote Anchor link
Ik zou
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);
?>

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

marcel sauer

02/04/2015 21:14:18
Quote Anchor link
pfffff hoop koppijn en zoeken toch weer het oude script van mij geprobeerd.
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 :
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? if (!empty($_POST['zoekwoord1']) { ?>


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

Frank Nietbelangrijk

02/04/2015 21:17:38
Quote Anchor link
Precies wat ik mijn vorige post gezegd heb dus... Lees het eens door ;-)
 
Marcel sauer

marcel sauer

02/04/2015 21:21:57
Quote Anchor link
jep frank!

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.
 

Pagina: « vorige 1 2



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.