Pagina tegelijkertijd bezoeken
Pagina: « vorige 1 2 3 4 volgende »
Ik wil alleen een itemID meesturen naar shared/blocktime.php
In de head van pagina.php staat:
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
<script>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
</script>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
</script>
In shared/blocktime.php staat: (databaseconnectie is gemaakt in globals)
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
include("includes/globals.php");
if(isset($_POST['itemID'])){
$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");
}
?>
include("includes/globals.php");
if(isset($_POST['itemID'])){
$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");
}
?>
Het werkt nog niet...
Volgens mij moet ik de Ajax oproepen, maar hoe?
Heb je gecontroleerd of itemID niet leeg is? 'Het werkt niet' is niet duidelijk genoeg. Geef foutmeldingen mee of leg uit waar het fout gaat.
Ik heb <script> in de head staan (zie post hierboven). Maar het lijkt me dat ik in de body ook een actie moet geven?
Want ergens moet ik de variabel $itemID instoppen....
loadData(12345);
Gewijzigd op 13/01/2016 14:01:59 door - Ariën -
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<script>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
</script>
<?
loadData($itemID);
?>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
</script>
<?
loadData($itemID);
?>
Of doe ik het zo helemaal fout? Alleen het itemID moet doorgepost worden.
Javascript is geen PHP ?
Maar ergens moet ik mijn variabel $itemID meesturen die via een $_GET wordt binnengehaald op pagina.php waarin het javascript staat.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
loadData(<?php echo $_GET['itemID']; ?>);
</script>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
loadData(<?php echo $_GET['itemID']; ?>);
</script>
Gewijzigd op 13/01/2016 14:50:35 door Ozzie PHP
Want er wordt geen update gedaan in de database, db-connectie werkt...
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
include("includes/globals.php");
if(isset($_POST['itemID'])){
$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");
}
?>
include("includes/globals.php");
if(isset($_POST['itemID'])){
$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");
}
?>
Werkte mijn oplossing?
Ja, ik zie ook in de broncode dat 'ie erbij komt te staan met het juiste ID.
Zodat je die alsnog in je gegenereerde HTML kan plaatsen ter verduidelijking.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<script>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
loadData(<?php echo $_GET['itemID']; ?>);
</script>
$(document).ready(function(){
function loadData(itemID) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + itemID+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(username, time);
}, 30000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
loadData(<?php echo $_GET['itemID']; ?>);
</script>
Nog mooier is als je het item-ID enkel in je HTML-document defineert in een nieuwe variabele. En deze variabele overneemt in je functie die je in een js-bestand zet, die je dan inlaadt.
Dan hoef je niet steeds deze hele code bij elk bezoek op te halen.
Zo dus:
Code (php)
1
2
2
<script type="text/javascript">var itemID= '<?php echo $_GET['itemID']; ?>';</script>
<script type="text/javascript" src="script.js"></script>
<script type="text/javascript" src="script.js"></script>
En dan in je script.js:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
<script>
$(document).ready(function(){
loadData(itemID);
function loadData(id) {
// De rest van het script!
// Let op: Gebruik dan wel id i.p.v. itemID binnen de functie.
}
});
</script>
$(document).ready(function(){
loadData(itemID);
function loadData(id) {
// De rest van het script!
// Let op: Gebruik dan wel id i.p.v. itemID binnen de functie.
}
});
</script>
Gewijzigd op 13/01/2016 16:00:06 door - Ariën -
Ook krijg ik op test.php geen foutmelding in beeld...
test.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
<?
$itemID= '17';
echo $itemID;
?>
<script type="text/javascript">var itemID= '<?php echo $itemID; ?>';</script>
<script>
$(document).ready(function(){
loadData(itemID);
function loadData(id) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + id+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(id);
}, 3000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
</script>
$itemID= '17';
echo $itemID;
?>
<script type="text/javascript">var itemID= '<?php echo $itemID; ?>';</script>
<script>
$(document).ready(function(){
loadData(itemID);
function loadData(id) {
$.ajax({
url: "shared/blocktime.php",
type: "POST",
data: "{'itemID':'" + id+ "'}",
cache: false,
success: function(html){
$(".result").empty().html(html);
setTimeout(function () {
loadData(id);
}, 3000);
},
error:function (xhr, ajaxOptions, thrownError){
$(".result").empty().html('Error:'+ xhr.status + ' '+ thrownError);
}
});
}
});
</script>
shared/blocktime.php
Code (php)
1
2
3
4
5
6
7
8
2
3
4
5
6
7
8
<?
include("includes/globals.php");
$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");
?>
include("includes/globals.php");
$itemID = $_POST['itemID'];
$blocktime = time();
$update_item = mysql_query("UPDATE items SET blocktime = '".$blocktime."' WHERE itemID ='".$itemID."'");
?>
(Maak anders een tijdelijk formuliertje, of download een browser-addon zoals Poster voor Firefox))
PS: Gebruik van de shorttag <? raad ik af. Deze kan op sommige servers uitstaan met gevolg dat je PHP-source niet geparsed wordt en direct bij de client zichtbaar is(!!)
Gewijzigd op 13/01/2016 16:49:32 door - Ariën -
Dus het lijkt in het script op test.php fout te gaan... Maar waar?
Wordt de AJAX-request zelf wel uitgevoerd? Zet anders eens op diverse plekken een alert() met een logische tekst op wat strategische plekken in je JavaScript. Dan heb je een idee hoe je script wordt doorlopen.
Daarbij:
- zet het melden + weergeven van fouten in PHP eens aan
- krijg je javascript foutmeldingen?
- dump je query eens in shared/blocktime.php
Je vraagt je keer op keer hardop af waar je informatie vandaan kunt halen maar je laat ook nergens informatie tot je komen...
GOKJE:
De include in shared/blocktime.php werkt niet omdat dit een verkeerd pad is, include zal hier verder geen biet om geven, gebruik voor kritieke bestanden altijd een require, dan krijg je tenminste een foutmelding...
@Thomas: Ook include() geeft foutmeldingen als het pas niet klopt.