Formulier automatisch verzenden op een bepaald tijdstip.
Ik heb een pagina, waarin een formulier elke week iets moet posten in een database. Momenteel doe ik dat handmatig maar dat werkt niet echt lekker. De inhoud van het formulier wordt reeds automatisch opgehaald. Ik zoek alleen nog een oplossing om het elke week automatisch naar de database te schrijven. Iemand een voorzetje of uitleg hoe ik dit realiseer?
Of is het een extern formulier (dus niet in jouw beheer)?
Met cURL() (google maar) is dat gemakkelijk te doen.
Beter doe je er verstandig aan om een nieuw script te maken die bij elke uitvoer de data ophaalt en vervolgens opslaat. Met een cronjob of 'geplande taak' kan je dit op vaste tijden uitvoeren.
Ik snap wat je bedoelt, helaas is mijn php kennis niet zo groot, ben meer een hobbyist. Het cron gedeelte dat gaat wel lukken. Kun je me een voorbeeld geven hoe ik het script het beste kan maken?
Het ligt er eerst aan hoe je de data ophaalt. Dus als je wat uitgebreider kan vertellen?
De data die wordt opgehaald is content uit de broncode van een pagina, welke elke week gewijzigd wordt. Deze informatie wordt nu automatisch geladen in de textarea van een formulier. Dit wordt vervolgens handmatig naar Mysql geschreven om zo een archief op te bouwen. Die laatste handmatige stap wil ik eruit halen.
Waarom niet meteen in database opslaan?
Waardes die automatisch in het formulier staan nu direct in de query plaatsen, en de formulier-verstuur-controle eruit.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
$host = 'localhost';
$user = 'user';
$pass = 'wachtwoord';
$database = 'user1';
mysql_connect($host,$user,$pass) or die("Er kan geen verbinding gemaakt worden met de database.");
mysql_select_db($database);
if ($_POST[bevestiging] == 1) {
$sql = "INSERT INTO overzicht SET ";
$sql .= "id = ''";
$sql .= ", titel = '" . $_POST['titel'] . "'";
$sql .= ", bericht = '" . $_POST['bericht'] . "'";
$res = mysql_query($sql);
$_POST[bevestiging] = "";
} else {
echo"
<form action=\"bestand.php\" method=\"POST\">
<input type=\"hidden\" value=\"1\" name=\"bevestiging\" /><br />
<input type=\"text\" size=\"100\" name=\"titel\" value=\"overzicht - "; ?>
$host = 'localhost';
$user = 'user';
$pass = 'wachtwoord';
$database = 'user1';
mysql_connect($host,$user,$pass) or die("Er kan geen verbinding gemaakt worden met de database.");
mysql_select_db($database);
if ($_POST[bevestiging] == 1) {
$sql = "INSERT INTO overzicht SET ";
$sql .= "id = ''";
$sql .= ", titel = '" . $_POST['titel'] . "'";
$sql .= ", bericht = '" . $_POST['bericht'] . "'";
$res = mysql_query($sql);
$_POST[bevestiging] = "";
} else {
echo"
<form action=\"bestand.php\" method=\"POST\">
<input type=\"hidden\" value=\"1\" name=\"bevestiging\" /><br />
<input type=\"text\" size=\"100\" name=\"titel\" value=\"overzicht - "; ?>
Code (php)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
$content = file_get_contents('http://website.nu/folder/file.php/');
if ($content !== false) {
// do something with the content
echo "$content" ;
} else {
// an error happened
echo "FOUT!";
}
?>
$content = file_get_contents('http://website.nu/folder/file.php/');
if ($content !== false) {
// do something with the content
echo "$content" ;
} else {
// an error happened
echo "FOUT!";
}
?>
Je formulier en de afhandeling kan er uit. Doe dat eerst eens.
En volgensmij klopt je query niet echt.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
$content = file_get_contents('http://website.nu/folder/file.php/');
if ($content !== false) {
$host = 'localhost';
$user = 'user';
$pass = 'wachtwoord';
$database = 'user1';
mysql_connect($host,$user,$pass) or die("Er kan geen verbinding gemaakt worden met de database.");
mysql_select_db($database);
$sql = "INSERT INTO overzicht (titel, bericht) VALUES ('de titel', '" . mysql_real_escape_string($content)."')";
$res = mysql_query($sql) or echo mysql_error();
}
?>
$content = file_get_contents('http://website.nu/folder/file.php/');
if ($content !== false) {
$host = 'localhost';
$user = 'user';
$pass = 'wachtwoord';
$database = 'user1';
mysql_connect($host,$user,$pass) or die("Er kan geen verbinding gemaakt worden met de database.");
mysql_select_db($database);
$sql = "INSERT INTO overzicht (titel, bericht) VALUES ('de titel', '" . mysql_real_escape_string($content)."')";
$res = mysql_query($sql) or echo mysql_error();
}
?>
Toevoeging op 22/11/2015 21:52:40:
en natuurlijk nog een opmerking om eens naar mysqli en/of pdo te kijken, aangezien die mysql-verhaal verouderd is
Met behulp van een cronjob kun je het script één keer in de week laten draaien.