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:

<?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>'; 
                } 
            }
?>
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.
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]$row = odbc_exec($conn, "SELECT
PRT_Export.ID, PRT_Export.Makey, PRT_Export.Omsch
FROM
PRT_Export
WHERE((
(PRT_Export.".$select.")
Like
'*".$search."*'))");
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.
$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
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
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?
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..
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.
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.
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.

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

Reageren