Like query Access in PHP

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Marcellino van Hecke

Marcellino van Hecke

20/10/2009 09:37:00
Quote Anchor link
Ik loop tegen het volgende probleem aan, ik kan gewoona alle data uit de database opvragen. Maar wanneer ik dit met LIKE probeer voor mijn zoekfunctie, loop ik tegen het probleem aan dat hij gewoon een blanco pagina weergeeft. Wanneer ik bijvoorbeeld de num_rows echo dan krijg ik -1 Iemand die misschien de oplossing weet? Onderstaand is mijn script:

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
<?php
if($conn) {
                
                $safe = array("'" => "","'" => "","/" => "");  
                $sword = $_GET['search'];
                $search = strtr($sword,$safe);  
                
                $row = odbc_exec($conn, "SELECT
                                               *
                                            FROM
                                               PRT_Export
                                           WHERE
                                               '"
.$select."'
                                             LIKE
                                             '"
.$search."'");
            
            }
elseif (odbc_error()) {
                echo 'Er is een probleem op getreden in onze database neem contact op met de beheerder.';
            }

            
            $nsend = odbc_num_rows($row);
            
            if($nsend != 0) {
                
                while($fsend = odbc_fetch_array($row)) {
                    if($fsend['DelIndId'] == 0) {
                        echo '<a href="verzendbepalingen.php?id='.$fsend['ID'].'">'.$fsend['Omsch'].'</a> ('.$fsend['Makey'].')<br />';
                    }
                    
                }
                
            }
else{
                echo'Er zijn geen resultaten gevonden die overeen komen met ';
                if(isset($_GET['search'])) {
                    echo '<b>'.$_GET['search'].'<b>';
                }
            }

?>
Gewijzigd op 01/01/1970 01:00:00 door Marcellino van Hecke
 
PHP hulp

PHP hulp

22/12/2024 18:08:43
 
Kitty N

kitty N

20/10/2009 11:00:00
Quote Anchor link
Probeer het volgende eens:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$row = odbc_exec($conn, "SELECT
                                               *
                                            FROM
                                               PRT_Export
                                           WHERE
                                               '".$select."'
                                             LIKE
                                             '*".$search."*'");


Ik dacht dat je bij odbc * moest gebruiken in je LIKE.
 
Jaron T

Jaron T

20/10/2009 11:15:00
Quote Anchor link
normaal moet het :
LIKE '%".$search."%'
zijn, maar met een odbc connector weet ik het niet ;)
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 11:20:00
Quote Anchor link
Owh klein foutje van mij, hij doet het niet met * en ook niet met %...
 
Kitty N

kitty N

20/10/2009 11:22:00
Quote Anchor link
Echo je query eens een keer zodat we kunnen zien wat hij verstuurd naar de database .. eventueel # proberen. Dacht ergens te hebben gelezen dat het * of # was.
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 11:31:00
Quote Anchor link
Bedoel je $row? Dan krijg ik: Resource id #4
Als ik echt de query echo krijg ik: SELECT * FROM PRT_Export WHERE 'Makey' LIKE 'cad'
 
Kitty N

kitty N

20/10/2009 11:35:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$row = odbc_exec($conn, "SELECT
                                               *
                                            FROM
                                               PRT_Export
                                           WHERE
                                               ".$select."
                                             LIKE
                                             '*".$search."*'");


Probeer dat eens. Weet alleen niet precies wat je in de like moet gebruiken, dus probeer daar *, # en %
Ik heb nu de '' weggehaald bij WHERE Makey

Had daar even overheen gelezen bij de eerste post. Verder bedoelde ik inderdaad echt de query.

En wat doet hij als je de query uitvoert in je database? Geeft hij daar dan een error? Hoeveel records zou hij dan eigenlijk terug moeten geven?
Gewijzigd op 01/01/1970 01:00:00 door kitty N
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 11:37:00
Quote Anchor link
Geen resultaat nog steeds blanco pagina.
 
Kitty N

kitty N

20/10/2009 11:41:00
Quote Anchor link
Dan zit er denk ik in je

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if($nsend != 0) {
                
                while($fsend = odbc_fetch_array($row)) {
                    if($fsend['DelIndId'] == 0) {
                        echo '<a href="verzendbepalingen.php?id='.$fsend['ID'].'">'.$fsend['Omsch'].'</a> ('.$fsend['Makey'].')<br />';
                    }
                    
                }
                
            }

?>


iets verkeerd, probeer het volgende eens:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
<?php
if($nsend != 0) {
                 echo 'Komt bij test<br>';
                while($fsend = odbc_fetch_array($row)) {
                    if($fsend['DelIndId'] == 0) {
                        echo '<a href="verzendbepalingen.php?id='.$fsend['ID'].'">'.$fsend['Omsch'].'</a> ('.$fsend['Makey'].')<br />';
                    }
                    
                }
                
            }

?>


Dit om te controleren of hij bij test komt.

Als hij test weer geeft moet je hem daarna verplaatsen. dan zetten onder de while en zo steeds verder. Dan laten weten waar hij test wel liet zien en waar niet.
Gewijzigd op 01/01/1970 01:00:00 door kitty N
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 11:47:00
Quote Anchor link
Als hij in de while staat komt hij niet meer tevoorschijn, er zou dus iets fout moeten zitten in die array. Als een query uitvoer zoals die in Access geproduceerd word doet hij het ook niet, dus het ligt toch echt aan die array, maar ik zie de fout niet:S
Gewijzigd op 01/01/1970 01:00:00 door Marcellino van Hecke
 
Kitty N

kitty N

20/10/2009 11:56:00
Quote Anchor link
Even kijken of ik het goed begrijp. Je hebt de query geechoëd.

je krijgt dan het volgende: SELECT * FROM PRT_Export WHERE 'Makey' LIKE 'cad'

Of hoe je hem nu hebt, maar ongeveer zo. (met *, # of % natuurlijk)

Als je deze kopieert en uitvoert in access krijg je geen resultaat te zien???
Gewijzigd op 01/01/1970 01:00:00 door kitty N
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 12:00:00
Quote Anchor link
Nee dan krijg ik helemaal niks...
 
Kitty N

kitty N

20/10/2009 12:31:00
Quote Anchor link
Marcellino schreef op 20.10.2009 12:00:
Nee dan krijg ik helemaal niks...


Dat wil dus zeggen dat je query nog niet goed is of dat er ook geen resultaat is voor die zoek functie.
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 12:41:00
Quote Anchor link
Maar als er een fout in zit hoort hij toch een error aan te geven.. Ik gebruik nu deze die wel goed werkt in access, maar niet in php.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$row = odbc_exec($conn, "SELECT
                                             PRT_Export.ID, PRT_Export.Makey, PRT_Export.Omsch
                                          FROM
                                             PRT_Export
                                         WHERE((
                                             (PRT_Export.".$select.")
                                         Like
                                             '*".$search."*'))");
Gewijzigd op 01/01/1970 01:00:00 door Marcellino van Hecke
 
Kitty N

kitty N

20/10/2009 13:05:00
Quote Anchor link
Marcellino schreef op 20.10.2009 12:41:
Maar als er een fout in zit hoort hij toch een error aan te geven.. Ik gebruik nu deze die wel goed werkt in access, maar niet in php.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
$row = odbc_exec($conn, "SELECT
                                             PRT_Export.ID, PRT_Export.Makey, PRT_Export.Omsch
                                          FROM
                                             PRT_Export
                                         WHERE((
                                             (PRT_Export.".$select.")
                                         Like
                                             '*".$search."*'))");


En je krijgt nu dus in access wel resultaat te zien? Hoeveel records krijg je daar terug?

echo eens $nsend
Gewijzigd op 01/01/1970 01:00:00 door kitty N
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 13:49:00
Quote Anchor link
Ik bedoel dat als ik deze dus handmatig invoer in access:

SELECT PRT_Export.ID, PRT_Export.Makey, PRT_Export.Omsch FROM PRT_Export WHERE(( (PRT_Export.Makey) Like '*cad*'))

Dan krijg ik 4 records 3 zijn er gevuld dus en als laatste krijg ik er nog eentje te zien en die is leeg.

1657 UCAD Cadmium (U)
3346 CADA Cadasil
3608 CAD Cadmium (b)

Als ik $nsend echo krijg ik als resultaat: -1
 
Kitty N

kitty N

20/10/2009 13:55:00
Quote Anchor link
Oke, dan zit er nu dus in je while nog iets niet goed. Ik zie ook zo snel niet wat er mis is..

Heb je ook error reporting aan staan?
Gewijzigd op 01/01/1970 01:00:00 door kitty N
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 14:06:00
Quote Anchor link
Ja error reporting staat gewoon aan, is echt heel vreemd ik heb ook nog gekeken op php.net en daar komt die -1 ook vaker voor bij Access. Daar zou ook de oplossing op moeten staan maar ik begrijp niks van die functies die ze daar neerzetten. http://php.net/manual/en/function.odbc-num-rows.php Wat ik dan ook vreemd vind is dat als ik die num_rows weg haal hij het ook niet doet. Dus dan zou de fout in die arrray moeten zitten..
 
Eddy E

Eddy E

20/10/2009 14:13:00
Quote Anchor link
Bij de NOTES op http://php.net/manual/en/function.odbc-num-rows.php staat ook: Note: Using odbc_num_rows() to determine the number of rows available after a SELECT will return -1 with many drivers..

Kortom... gebruik geen num_rows() maar gewoon count() op je array met resultaten.
 
Marcellino van Hecke

Marcellino van Hecke

20/10/2009 14:16:00
Quote Anchor link
Ah ok, daar heb ik dus overheen gekeken mijn fout. Ok nu krijg ik dus als ik $nsend echo als resultaat 1. Maar ik krijg nog steeds niks te zien uit mijn database. Fout zou dus in de odbc_fetch_array moeten zitten.
Gewijzigd op 01/01/1970 01:00:00 door Marcellino van Hecke
 
Marcellino van Hecke

Marcellino van Hecke

21/10/2009 08:32:00
Quote Anchor link
Ok ik zag dat ik DelIndId vergeten was er in te zetten en die staat er nu dus ook in, maar nog steeds geen resultaat.. Als ik deze query in Access uitvoer doet hij het wel.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
SELECT PRT_Export.ID, PRT_Export.Makey, PRT_Export.Omsch, PRT_Export.DelIndId FROM PRT_Export WHERE(( (PRT_Export.Makey) Like '*cad*'))
 

Pagina: 1 2 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.