Hallo,

Ik zit met het volgende probleem. Ik heb lang geleden wat met PHP gedaan, maar heb totaal geen idee wat er nu fout is aan mijn SQL aanroep. Ik heb begrepen dat er wijzigingen zijn in de SQL aanroep waardoor alles nu via SQLi gaat. Die stukjes script zijn allemaal aangepast van SQL naar SLQi. Maar in de debugging tool, PHPstorm, blijf ik nu de melding krijgen dat ik een parameter $query mis in mijn mysqli_query aanroep. Ik heb eerlijk werkelijk geen idee wat er nu fout gaat of wat ik mis. Uit de documentatie op de PHP site kan ik niet precies halen wat de $query parameter inhoud.

Hieronder het script. Zou iemand mijn kunnen en willen helpen? Als ik de logica door heb kan ik verder gaan met aanpassen en ombouwen.

<?
$DBhost = "host";
$DBuser = "username";
$DBpass = "password";
$DBname = "DBname";
header('Content-Type: text/html; charset=utf-8');

error_reporting(0);
@ini_set('display_errors', 0);

// error_reporting(E_ALL ^ E_NOTICE);

include("get_vars.php");
include("Mobile_Detect.php");
$detect = new Mobile_Detect();

$tijd = date("d-m-Y H:i:s");
$nieuwdatum = date("U");
$nb_dag = date("d");
$vorig_jaar = date("Y")-1;

$msql = mysqli_connect($DBhost,$DBuser,$DBpass,$DBname);

//Haal IP-adres bezoeker op
if (getenv("HTTP_CLIENT_IP")) { $uip = getenv("HTTP_CLIENT_IP"); }
elseif (getenv("HTTP_X_FORWARDED_FOR")) { $uip = getenv("HTTP_X_FORWARDED_FOR"); }
else { $uip = getenv("REMOTE_ADDR"); }

//Controleer IP-adres
$sql_ip = mysqli_query("SELECT * FROM animoso_ipblock WHERE ip = '$uip'");
if (mysqli_num_rows($sql_ip) > 0) { exit; }

// NACHTBATCH!
$rapportage_tekst = "";

// Wat is de datum van vandaag?
$vandaag = Date("d-m-Y");
$datearr2 = explode("-",$vandaag);
$d_vandaag = mktime(0,0,0,$datearr2[1],$datearr2[0],$datearr2[2]);
$datum_vandaag = strftime("%d-%m-%Y",$d_vandaag);

$d = mysqli_query("SELECT * FROM stats");
while ($record = mysqli_fetch_object($d))
{
$dd = $record->dag;
}

// Als een nieuwe dag aanbreekt, voer dan de volgende acties uit:
if ($dd <> "$nb_dag") {

// Dag = dag + 1
mysqli_query("UPDATE stats SET dag = '$nb_dag'");

mysqli_query("INSERT INTO animoso_acties VALUES('', 'HR', 'HR', 'HR', 'HR')");
mysqli_query("INSERT INTO animoso_acties VALUES('', 'Het systeem', 'heeft de nachtbatch', 'gestart', 'op $tijd')");

// Statistieken bijwerken
mysqli_query("INSERT INTO animoso_stats VALUES('', '$vandaag', '1')");

// IEDEREEN UITLOGGEN!
$rapportage_tekst = "$rapportage_tekst \n";
$sql_uitloggen = mysqli_query("SELECT * FROM animoso_leden WHERE active = '1' ORDER BY naam");
while ($record = mysqli_fetch_object($sql_uitloggen)) {
// mysqli_query("INSERT INTO animoso_acties VALUES('', 'Het systeem', 'heeft $record->vnaam $record->tussenvoegsel $record->naam', 'automatisch uitgelogd', 'op $tijd')");
$rapportage_tekst = "$rapportage_tekst Het systeem heeft $record->vnaam $record->tussenvoegsel $record->naam automatisch uitgelogd.\n";
}
mysqli_query("UPDATE animoso_leden SET active = '0', nieuwdatum = '$nieuwdatum' WHERE active = '1'");
mysqli_query("INSERT INTO animoso_acties VALUES('', 'Het systeem', 'heeft iedereen automatisch uitgelogd', 'voor de nachtbatch', 'op $tijd')");


// DEADLINE!!!
$tijd_nb = date("d-m-Y H:i:s");
$rapportage_tekst = "$rapportage_tekst \n";
$sql_optreden = mysqli_query("SELECT * FROM animoso_optredens WHERE blok = '0' AND jaar > '$vorig_jaar' AND status <> 'Geannuleerd'");
while ($record = mysqli_fetch_object($sql_optreden)) {
if ($record->d_dag<>"" && $record->d_dag>0) {

// Wat is de datum waarop de deadline is verstreken?
// $deadline = "-$record->deadline";
// $deadline = $deadline - 7;
$optreden_datum = "$record->dag-$record->maand-$record->jaar";
// $datearr = split("-",$optreden_datum);
// $timestamp = mktime(0,0,0,$datearr[1],$datearr[0],$datearr[2]);
// $timestamp2 = strtotime("$deadline days",$timestamp);
// $deadline_datum = strftime("%d-%m-%Y",$timestamp2);
$deadline_datum = "$record->d_dag-$record->d_maand-$record->d_jaar";
$datearr = split("-",$deadline_datum);
$timestamp = mktime(0,0,0,$datearr[1],$datearr[0],$datearr[2]);
$timestamp2 = strtotime("-7 days",$timestamp);
$herinnering_datum = strftime("%d-%m-%Y",$timestamp2);

if ((strtotime($datum_vandaag)) == strtotime($optreden_datum)) {
$rapportage_tekst = "$rapportage_tekst Het optreden $record->omschrijving vindt vandaag plaats in $record->locatie.\n";
mysqli_query("INSERT INTO animoso_acties VALUES('', 'Het optreden', '$record->omschrijving', 'vindt vandaag', 'plaats in $record->locatie')");
}

// Als vandaag -7 dagen een deadline is verstreken...
if ((strtotime($datum_vandaag)) == strtotime($herinnering_datum)) {
$rapportage_tekst = "$rapportage_tekst De deadline voor optreden $record->omschrijving is over 7 dagen verstreken.\n";
mysqli_query("INSERT INTO animoso_acties VALUES('', 'De deadline', 'voor optreden $record->omschrijving', 'is verstreken', 'over 7 dagen')");

// Selecteer alle leden...
$sql_leden= mysqli_query("SELECT * FROM animoso_leden WHERE rechten > '0' AND optredens = 1 ORDER BY naam");
while ($record2 = mysqli_fetch_object($sql_leden)) {
// Mail dan de mensen die hun status 'Ik weet het nog niet' hebben...
$sql_bezetting = mysqli_query("SELECT * FROM animoso_bezetting WHERE optreden = '$record->id' AND uid = '$record2->id' AND blok = '0'");
if (mysqli_num_rows($sql_bezetting)>0) {
while ($record3 = mysqli_fetch_object($sql_bezetting)) {
if ($record3->status=="Ik weet het nog niet") {
// Mail dan de mensen die hun status 'Onbekend' hebben...
$rapportage_tekst = "$rapportage_tekst $record2->vnaam $record2->tussenvoegsel $record2->naam heeft status 'Ik weet het nog niet' voor optreden $record->omschrijving en heeft een herinnering ontvangen op $record2->emailadres\n";
mail("$record2->emailadres", "Herinnering '$record->omschrijving'", "Beste $record2->vnaam,\n\nOp $record->dag-$record->maand-$record->jaar vindt het optreden '$record->omschrijving' plaats. Je hebt aangegeven dat je nog niet weet of je wel of niet aanwezig zal zijn. Laat dat alsnog even weten door hieronder de gewenste optie te kiezen. Wil je dat voor $deadline_datum doen, ook als je niet komt.\n\n----------------\nKlik hier als je kunt spelen: http://leden.animoso.nl/aanmelden.php?actie=ja&optreden=$record->id&uid=$record2->id&checksum=$record2->checksum\nKlik hier als je NIET kunt spelen: http://leden.animoso.nl/aanmelden.php?actie=nee&optreden=$record->id&uid=$record2->id&checksum=$record2->checksum\n----------------\n\nJe kunt je uiteraard ook vanuit leden.animoso.nl aan- of afmelden.\n\nAlvast bedankt!\n\nAnimoso.nl",
"From: Sambaband Animoso<[email protected]>\n"
."Reply-To: [email protected]\n"
."X-Mailer: PHP/" . phpversion());
mysqli_query("INSERT INTO animoso_acties VALUES('', '$record2->vnaam $record2->tussenvoegsel $record2->naam', 'heeft een herinnering', 'voor [$record->omschrijving] ontvangen', 'op $tijd')");
}
}
} else {
// Mail dan de mensen die hun status 'Onbekend' hebben...
$rapportage_tekst = "$rapportage_tekst $record2->vnaam $record2->tussenvoegsel $record2->naam heeft status 'Onbekend' voor optreden $record->omschrijving en heeft een herinnering ontvangen op $record2->emailadres\n";
mail("$record2->emailadres", "Herinnering '$record->omschrijving'", "Beste $record2->vnaam,\n\nOp $record->dag-$record->maand-$record->jaar vindt het optreden '$record->omschrijving' plaats. Je hebt nog niet aangegeven of je wel of niet aanwezig zal zijn. Laat dat alsnog even weten door hieronder de gewenste optie te kiezen. Wil je dat voor $deadline_datum doen, ook als je niet komt.\n\n----------------\nKlik hier als je kunt spelen: http://leden.animoso.nl/aanmelden.php?actie=ja&optreden=$record->id&uid=$record2->id&checksum=$record2->checksum\nKlik hier als je NIET kunt spelen: http://leden.animoso.nl/aanmelden.php?actie=nee&optreden=$record->id&uid=$record2->id&checksum=$record2->checksum\n----------------\n\nJe kunt je uiteraard ook vanuit leden.animoso.nl aan- of afmelden.\n\nAlvast bedankt!\n\nAnimoso.nl",
"From: Sambaband Animoso<[email protected]>\n"
."Reply-To: [email protected]\n"
."X-Mailer: PHP/" . phpversion());
mysqli_query("INSERT INTO animoso_acties VALUES('', '$record2->vnaam $record2->tussenvoegsel $record2->naam', 'heeft een herinnering', 'voor [$record->omschrijving] ontvangen', 'op $tijd')");
}
}
}
}
}

$tijd_nb = date("d-m-Y H:i:s");
// VERJAARDAGEN!!!
$rapportage_tekst = "$rapportage_tekst \n";
$sql_leden2= mysqli_query("SELECT * FROM animoso_leden WHERE rechten > '0' AND id <> '3' ORDER BY naam");
while ($record5 = mysqli_fetch_object($sql_leden2)) {
$geboortedatum_db = $record5->geboortedatum;
// $geboortedatum_db = str_replace("-1-","-01-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-2-","-02-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-3-","-03-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-4-","-04-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-5-","-05-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-6-","-06-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-7-","-07-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-8-","-08-",$geboortedatum_db);
// $geboortedatum_db = str_replace("-9-","-09-",$geboortedatum_db);
if ($geboortedatum_db<>"") {
$datearr3 = split("-",$geboortedatum_db);
$geboortedatum = "$datearr3[0]-$datearr3[1]";
$vandaag_geboorte = date("d-m");
if ($vandaag_geboorte==$geboortedatum) {
$rapportage_tekst = "$rapportage_tekst $record5->vnaam $record5->tussenvoegsel $record5->naam is vandaag ($record5->geboortedatum) jarig!\n";
mysqli_query("INSERT INTO animoso_acties VALUES('', '$record5->vnaam $record5->tussenvoegsel $record5->naam', 'is', 'jarig', 'vandaag')");
$sql_leden22= mysqli_query("SELECT * FROM animoso_leden WHERE rechten > '0' AND verjaardagsherinnering = '1' ORDER BY naam");
while ($record22 = mysqli_fetch_object($sql_leden22)) {
mail("$record22->emailadres", "Verjaardagsherinnering", "Beste $record22->vnaam,\n\nVandaag is $record5->vnaam $record5->tussenvoegsel $record5->naam jarig (geboren: $record5->geboortedatum).\n\nMocht je deze verjaardagsherinneringen niet meer willen ontvangen, schakel de optie dan uit onder 'Mijn gegevens' op leden.animoso.nl.\n\nAnimoso.nl",
"From: Sambaband Animoso<[email protected]>\n"
."Reply-To: [email protected]\n"
."X-Mailer: PHP/" . phpversion());
}
}
}
}

// Rapportage
// mail("[email protected]", "Rapportage Nachtbatch
//$datum2", "---- BEGIN RAPPORTAGE ----\n\nDe Nachtbatch van
//$tijd is met succes afgerond.\n\n$rapportage_tekst\n\n----
//EINDE RAPPORTAGE ----",
// "From: Sambaband Animoso<[email protected]>\n"
// ."Reply-To: [email protected]\n"
// ."X-Mailer: PHP/" . phpversion());

$tijd_nb = date("d-m-Y H:i:s");
mysqli_query("INSERT INTO animoso_acties VALUES('', 'Het systeem', 'heeft de nachtbatch', 'succesvol uitgevoerd', 'op $tijd_nb')");
} else {
mysqli_query("UPDATE animoso_stats SET aantal = aantal + 1 WHERE datum = '$vandaag'");
}
?>
en met de regels die ik op regel 16 wilde zetten? (na de regel $result = ... )

[size=xsmall]Toevoeging op 30/01/2019 16:00:48:[/size]

en met de regels die ik na regel 16 wilde hebben?
(na $result = ... )
Bedankt Ivo!,

Die regel zorgde voor de foutmelding die ik nodig had. Ik benaderde de foute database. Daar zat de tabel niet in die ik zocht. Nu werk de pagina wel.

Nu weet ik tenminste wel zeker dat het aanroepen van de database en de data in de database nog gewoon werkt.
Wanneer wordt bovenstaande code uitgevoerd? Is dit een include die iedere bezoeker voor zijn kiezen krijgt als 'ie de webpagina probeert te laden? Dan is dit een zogenaamde "poor man's cron(job)". Zou het in dat geval niet veel logischer zijn om hier ook een echte cronjob van te maken?
We hebben besloten om toch te proberen het geheel in een Wordpress/Drupal CMS te gieten. Het ombouwen kost teveel tijd, we kunnen die beter steken in iets nieuws en dat zover mogelijk doorontwikkelen.

Iedereen toch bedankt!

Reageren