allen

Achtergrond
ik heb een onderhouds tabel en een klanten tabel
in de onderhouds tabel is een link naar de klanten (een klant ID)
nu wil ik een lijst tonen van alle klanten waar het jaarlijks (of 2 jaarlijks) onderhoud bijna vervalt
dus wil zeggen de query roept alle items op die tussen 15-10-14 en 15-11-14 in de tabel staan voor jaarlijks onderhoud en 15-10-13 en 15-11-13 voor 2 jaarlijks onderhoud.

deze query werkt.

<?php
$onderhoudj="Jaarlijks";
$onderhoudjj="2jaarlijks";
$exp1j= date('Ymd', time() - 31536000);  // huidige datum -1 jaar 
$dom1j= date('Ymd', time() - 34128000);  // huidige datum -1 jaar + 30 dagen
$exp2j= date('Ymd', time() - 63072000);  // huidige datum -2 jaar
$dom2j= date('Ymd', time() - 68256000);  // huidige datum -2 jaar + 30 dagen


$sql_onderhoud= mysql_query("SELECT *,DATE_FORMAT(Datum_onderhoud, '%d.%m.%Y') AS datum
FROM onderhoud 
WHERE  (typeonderhoud='$onderhoudj' AND Datum_onderhoud BETWEEN '$dom1j' AND '$exp1j') 
OR (typeonderhoud='$onderhoudjj' AND Datum_onderhoud BETWEEN '$dom2j' AND '$exp2j')
ORDER BY Datum_onderhoud ASC");
?>

hieruit krijg ik de Klant_ID zodat ik weet wie dit is.

nu wil ook de naam tonen + adres ,... van de klanten waar hun onderhoud bijna vervalt.
ik had gedacht met een join, maar dit geeft telkens een error, heb al verschillende tuts nagegaan maar lukt mij niet om een goed resultaat te bekomen dit is de query

<?php
$sql_onderhoud= mysql_query("SELECT 
klanten_gegevens.Naam,
klanten_gegevens.Voornaam,
klanten_gegevens.email,
klanten_gegevens.Adres,
klanten_gegevens.Huisnummer,
klanten_gegevens.Toevoeging,
klanten_gegevens.Postcode,
klanten_gegevens.Gemeente,
klanten_gegevens.Id_klant,
onderhoud.DATE_FORMAT(Datum_onderhoud, '%d.%m.%Y') AS datum,
onderhoud.Klant_ID
FROM onderhoud JOIN klanten_gegevens ON onderhoud.Klant_ID=klanten_gegevens.Id_klant 
WHERE  (typeonderhoud='$onderhoudj' AND Datum_onderhoud BETWEEN '$dom1j' AND '$exp1j')
OR (typeonderhoud='$onderhoudjj' AND Datum_onderhoud BETWEEN '$dom2j' AND '$exp2j')
ORDER BY Datum_onderhoud ASC");
?>


kan iemand ne tip geven
merci
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given

[size=xsmall]Toevoeging op 15/11/2015 12:36:47:[/size]

dus er zit ergens een fout in de sql
En dus vraag je de fout op die de query geeft, in jouw geval met mysql_error().
error is: Query was empty

hij vind geen gegevens ...
Nee, je voert geen query uit volgens die melding. Dat is heel wat anders.
dit is wat ik doe

<?php
while($toon_sql_onderhoud= mysql_fetch_array($sql_onderhoud))
{
$jaarlijks_Datum= $toon_sql_onderhoud['datum'];
$Klant_ID= $toon_sql_onderhoud['Klant_ID'];
$Naam=  $toon_sql_onderhoud['Naam'];
$Voornaam=  $toon_sql_onderhoud['Voornaam'];
$Adres=  $toon_sql_onderhoud['Adres'];
$Huisnummer=  $toon_sql_onderhoud['Huisnummer'];
$Toevoeging=  $toon_sql_onderhoud['Toevoeging'];
$Postcode=  $toon_sql_onderhoud['Postcode'];
$Gemeente=  $toon_sql_onderhoud['Gemeente'];
$gsmtelefoon=  $toon_sql_onderhoud['gsmtelefoon'];
$email=  $toon_sql_onderhoud['email'];
}
?>


error zit op de lijn van de "While"
Nee, de error zit in de query, want $sql_onderhoud bevat reen MySQL resource. Kijk dus eerst naar de foutafhandeling.

<?php
if (($sql_onderhoud = mysql_query(.....)) === false) {
  echo mysql_error();
}
?>


[size=xsmall]Toevoeging op 15/11/2015 12:54:07:[/size]

Overigens doe je er goed aan om over te stappen op mysqli of PDO, gezien de mysql extensie gaat verdwijnen.
Word je zelf niet helemaal scheel van al die (semi-willekeurige?) hoofd- en kleine letters in je kolomnamen? Grote kans dat hier ergens iets fout zit.

Afhankelijk van het file system van je OS zijn tabelnamen mogelijk case-sensitive. Voor kolomnamen lijkt het niet uit te maken. Dus het is ofwel zoiets (je ontwikkelt in WAMP/XAMP onder Windows, en je productie webserver opereert onder UNIX?), of je hebt ergens een spellingsfout in je kolommen zitten. Zoiets zal het zijn.

En ja, druk eens een foutmelding af zoals Ben aangeeft, dat is de meest directe manier om iets te debuggen.
de case is dubbelchecked en alles is correct in sql en phpvariablen
de check voor de query


<?php 
if ($sql_onderhoud = mysql_query("SELECT 
klanten_gegevens.Naam,
klanten_gegevens.Voornaam,
klanten_gegevens.email,
klanten_gegevens.Adres,
klanten_gegevens.Huisnummer,
klanten_gegevens.Toevoeging,
klanten_gegevens.Postcode,
klanten_gegevens.Gemeente,
klanten_gegevens.Id_klant,
DATE_FORMAT(onderhoud.Datum_onderhoud, '%d.%m.%Y') AS datum,
onderhoud.Klant_ID
FROM onderhoud JOIN klanten_gegevens ON onderhoud.Klant_ID=klanten_gegevens.Id_klant 
WHERE (typeonderhoud='$onderhoudj' AND Datum_onderhoud BETWEEN '$dom1j' AND '$exp1j') OR (typeonderhoud='$onderhoudjj' AND Datum_onderhoud BETWEEN '$dom2j' AND '$exp2j') ORDER BY Datum_onderhoud ASC") === false) {
  echo "de error is : ". mysql_error();
}
?>


dan geeft hij geen error boodschap
maar ook geen gegevens -
Kortom, laat je hele script eens zien. Is de kolom Datum_onderhoud van het type DATE of DATETIME?

Reageren