between in samenwerking met Zoeken in MySQL tabel

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Gert Verachtert

Gert Verachtert

17/11/2009 20:51:00
Quote Anchor link
Ik heb dus volgend script in gebruik genomen: http://www.phphulp.nl/php/tutorials/3/100
Maar nu zit ik nog met het probleem dat mijn between functie niet wil werken.

Ingave gebeurd als volgend: Naam, begin nr en laatste nummer worden ingegeven per persoon, datum word automatisch mee weggeschreven door: $datum = time();
Naam: pers1 - Begin nr: 590123 - Laatste nr: 590321
Naam: pers2 - Begin nr: 590723 - Laatste nr: 590921
Naam: pers1 - Begin nr: 591123 - Laatste nr: 593321
Naam: pers1 - Begin nr: 599123 - Laatste nr: 599321
Naam: pers2 - Begin nr: 690123 - Laatste nr: 690321

Zoeken gebeurd als volgend: er wordt een nummer ingegeven om te zoeken
Nummer: 591277

Resultaat als dit nummer nergens tussen een begin of laatste nummer ligt:
Dit nummer is door niemand geboekt.

Resultaat als dit nummer ergens tussen een begin of laatste nummer ligt:
Naam: pers1 - Datum: 13-10-09

Dus die nummer 591277 zit tussen Begin nr: 591123 - Laatste nr: 593321 die door Naam: pers1 geboekt zijn op Datum: 13-10-09

De query heb ik aangepast naar:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT * FROM facturen WHERE '%$HTTP_POST_VARS[zoekterm]%' BETWEEN begin AND laatste";
maar dan krijg ik steeds de vermelding dat het getal dat ik ingeef om te zoeken, door niemand geboekt is.
Bij volgende code krijg ik wel een resultaat:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$sql = "SELECT * FROM facturen WHERE 591277 BETWEEN begin AND laatste";


Weet er iemand wat er mis is met mijn query?

Ook lukt het mij niet om de datum te tonen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
{
            echo "<p>Resultaat: <b>$row[naam]</b><br>";
            echo "<p>Datum: <b></b><br>";
        }


Alvast bedankt voor jullie moeite
 
PHP hulp

PHP hulp

28/11/2024 22:49:09
 
Hipska BE

Hipska BE

17/11/2009 21:44:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
$sql
= "SELECT * FROM facturen WHERE ". (int)$_POST['zoekterm']." BETWEEN begin AND laatste";
?>

is de enige correcte en veilige benadering..
 
Nicoow Unknown

Nicoow Unknown

17/11/2009 22:13:00
Quote Anchor link
Misschien even leuk om te weten voor sommige,
Door de typecast naar een Int, is er ook geen mysql_real_escape_string of wat dan ook nodig.
 
Gert Verachtert

Gert Verachtert

18/11/2009 09:29:00
Quote Anchor link
Bedankt allemaal, het werkt.
Nu heb ik alleen nog het probleem om de datum weer te geven bij de resultaten.
Bij het ingeven van de gegevens verstuur ik de datum op dat ogenblik automatisch mee door:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
$datum = time();

In de database komt hij zo terecht: 1258531507
Op een overzicht pagina roep ik de datum als volgt op:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo strftime("%d-%m-%Y",$datum); ?>
en daar zie ik hem dan als: 18-11-2009
Maar als ik dat op dezelfde manier doe bij resultaat.php krijg ik als resultaat: 01-01-1970
Doe ik het op deze manier:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
echo "<p>Resultaat: <b>$row[datum]</b><br>";
krijg ik als resultaat: 1258531507
Wat doe ik mis? Ben hier nog een echte leek in.
 
Hipska BE

Hipska BE

19/11/2009 16:18:00
Quote Anchor link
ten eerste doe je zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? echo '<p>Resultaat: <b>'.$row['datum'].'</b><br>'; ?>


ten tweede: Als welk type staat je datum opgeslaan in de database?
Dit hoort namelijk TIMESTAMP te zijn als je zoals je aangeeft met timestamps werkt. Verder kan ik je aanraden om met DATE of DATETIME te werken, dan kan je makkelijker mee berekeningen maken en kan je ook verder gaan dan 1970..

en ten derde: als je datum eenmaal als een correct type in de database zit (zie punt 2) dan kan je makkelijk dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
mysql> SELECT DATE_FORMAT(datum, '%d-%m-%Y') as datumF FROM tabel;
+------------+
| datumF     |
+------------+
| 19-11-2009 |
+------------+
1 row in set (0.00 sec)

Dus zo:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
<? $sql = "SELECT DATE_FORMAT(datum, '%d-%m-%Y') as datumF FROM tabel;"; ?>
Gewijzigd op 01/01/1970 01:00:00 door Hipska BE
 
Gert Verachtert

Gert Verachtert

19/11/2009 17:46:00
Quote Anchor link
@Hipska
Bedankt hiervoor, ik had ondertussen al een nieuw topic geopend voor dat datum probleem: http://www.phphulp.nl/forum/showtopic.php?cat=2&id=68899&page=
Daar hebben ze mij ook al geholpen, maar ik geraak er nog steeds niet uit.
 



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.