JQuery & PHP
Ik loop nu tegen een ernstige probleem aan.
Via JQuery wordt een id gemaakt, en resultaat komt dan zo uit:
Nu wil ik die ID in een PHP variabele toepassen dus zou je dit moeten krijgen:
Enkel werkt het niet op die manier, weet iemand de juiste manier?
Alvast bedankt!
Ik denk dat het niet anders kan dan PHP in je jQuery te gebruiken.
Code (php)
1
2
3
4
5
2
3
4
5
<script>
var html = '{0}';
$("#id").html(html.format(video['id']));
<?php $id=?>document.write(video['id']);<?php ; ?>
</script>
var html = '{0}';
$("#id").html(html.format(video['id']));
<?php $id=?>document.write(video['id']);<?php ; ?>
</script>
Zoiets zal je dan krijgen.
Gewijzigd op 07/11/2013 12:51:34 door Michael -
die javascript zit in een php file, dat werkt dan toch niet?
Alleen PHP is Server-Side en Javascript Client-Side dit gaat dus volgens mij nooit werken. PHP word eerst uit gevoerd en daarna pas de Javascript. Javascript -> PHP kan niet (tenzij je met redirect werkt, url parameters, of formulieren) maar PHP -> Javascript kan wel.
Wat is je bedoeling, misschien is er een andere oplossing?
Nu wil ik dat id in een PHP variabele hebben.
Enkel weet ik niet hoe ik dat kan doen.
Want als ik dat in een PHP variabele heb is mijn script dus klaar.
Maar Dylan waar kom die ID vandaan? En wat wil je doen? Wat is de bedoeling?
Die ID haalt ie uit de search API van YouTube.
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
33
34
35
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
33
34
35
var url = "https://gdata.youtube.com/feeds/api/videos";
var data = {"q":query, "alt":"json", "max-results":"10", "v":"2", "orderby":"relevance", "format":"5"};
$.getJSON(url, data, function (data) {
var items = [];
$.each(data.feed.entry, function (key, val) {
try {
var videoID = val.media$group.yt$videoid.$t;
var video = { "id" : videoID,
"thumbnail" : val.media$group.media$thumbnail[1].url,
"title" : val.title.$t,
"uploader" : val.author[0].name.$t,
"length" : secondsToHMS(val.media$group.yt$duration.seconds),
"views" : numAddCommas(val.yt$statistics.viewCount)};
searchResults[videoID] = video;
var html = "<a href='javascript:selectVideo(\"{0}\")' class='result clearfix'>" +
"<img src='{1}' alt='' />" +
"<div class='details'>" +
"<span>{2}</span><br />" +
"By: {3}<br />" +
"{4} | {5} views" +
"</div>" +
"</a>";
items.push(html.format(
videoID,
video["thumbnail"],
video["title"],
video["uploader"],
video["length"],
video["views"]));
} catch (e) {
return "continue";
}
});
var data = {"q":query, "alt":"json", "max-results":"10", "v":"2", "orderby":"relevance", "format":"5"};
$.getJSON(url, data, function (data) {
var items = [];
$.each(data.feed.entry, function (key, val) {
try {
var videoID = val.media$group.yt$videoid.$t;
var video = { "id" : videoID,
"thumbnail" : val.media$group.media$thumbnail[1].url,
"title" : val.title.$t,
"uploader" : val.author[0].name.$t,
"length" : secondsToHMS(val.media$group.yt$duration.seconds),
"views" : numAddCommas(val.yt$statistics.viewCount)};
searchResults[videoID] = video;
var html = "<a href='javascript:selectVideo(\"{0}\")' class='result clearfix'>" +
"<img src='{1}' alt='' />" +
"<div class='details'>" +
"<span>{2}</span><br />" +
"By: {3}<br />" +
"{4} | {5} views" +
"</div>" +
"</a>";
items.push(html.format(
videoID,
video["thumbnail"],
video["title"],
video["uploader"],
video["length"],
video["views"]));
} catch (e) {
return "continue";
}
});
Gewijzigd op 07/11/2013 13:17:45 door Dylan Zoethout
en je wil die informatie kenbaar maken aan de databese, dan heb Ajax nodig.
Dan tonen we hoe je die via Ajax kan versturen
Gewijzigd op 07/11/2013 13:30:59 door Kris Peeters
Dylan Zoethout op 07/11/2013 12:53:00:die de javascript zit in een php file, dat werkt dan toch niet?
Je kunt javascript,html,css,e.d. gebruiken in een PHP file.
Of het mooi is, is wat anders :)
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
Omdat je al gebruik maakt van Json is hier een veel mooiere oplossing voor te bedenken.
Gewijzigd op 07/11/2013 13:25:04 door Michael -
Ik heb enkel een manier nodig om het in een variabele te krijgen van PHP bestand, het is een one page.
Een nieuwe ajax call met php maken met de opgehaalde video's
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
script.js:
var deID = document.write(video['id']);
<?php
/*
* JS variabele opslaan in PHP variabele $string
*/
$id = "<script>document.write(deID);</script>";
?>
var deID = document.write(video['id']);
<?php
/*
* JS variabele opslaan in PHP variabele $string
*/
$id = "<script>document.write(deID);</script>";
?>
Gewijzigd op 07/11/2013 13:35:56 door Dylan Zoethout
En weet 99% zeker dat het niet kan, maar meten is weten. Javascript = Client, PHP = Server
Hoe zou ik het anders kunnen zoen om alsnog die ID te bemachtigen?
Hertog Jan op 07/11/2013 13:40:33:
Dylan dat wil sws niet want script.js is javascript bestand en dat php zal dan niet worden uitgevoerd.
En weet 99% zeker dat het niet kan, maar meten is weten. Javascript = Client, PHP = Server
En weet 99% zeker dat het niet kan, maar meten is weten. Javascript = Client, PHP = Server
Het voorbeeld dat ik gaf werkt prima hoor. Maar goed daarom zei je ook 99%.
Ik zei ook dat het niet de mooiste oplossing is en met json een betere manier is.
Gewijzigd op 07/11/2013 15:23:13 door Michael -
Hertog Jan op 07/11/2013 13:31:50:
Een nieuwe ajax call met php maken met de opgehaalde video's
Het is maar 1 video per keer, hoe doe ik zoiets?
Michael - op 07/11/2013 13:49:11:
Het voorbeeld dat ik gaf werkt prima hoor. Maar goed daarom zei je ook 99%.
Ik zei ook dat het niet de mooiste oplossing is en met json een betere manier is.
Hertog Jan op 07/11/2013 13:40:33:
Dylan dat wil sws niet want script.js is javascript bestand en dat php zal dan niet worden uitgevoerd.
En weet 99% zeker dat het niet kan, maar meten is weten. Javascript = Client, PHP = Server
En weet 99% zeker dat het niet kan, maar meten is weten. Javascript = Client, PHP = Server
Het voorbeeld dat ik gaf werkt prima hoor. Maar goed daarom zei je ook 99%.
Ik zei ook dat het niet de mooiste oplossing is en met json een betere manier is.
Nou volgens mij niet, je hebt nu niet het ID in een variabele maar een javascript string. Hoe krijg je dat id nu in de database?
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<script>
var id = 2;
</script>
<?php
$id = "<script>document.write(id);</script>";
mysql_query('INSERT INTO tabel SET id = "'.$id.'"');
?>
var id = 2;
</script>
<?php
$id = "<script>document.write(id);</script>";
mysql_query('INSERT INTO tabel SET id = "'.$id.'"');
?>
Oftewel in je database komt nu letterlijk '<script>document.write(id);</script>' te staan.
Toevoeging op 07/11/2013 14:03:51:
Dylan Zoethout op 07/11/2013 13:52:26:
Het is maar 1 video per keer, hoe doe ik zoiets?
Wat heb je al, al naar een ajax call gekeken wat ik zei?
Gewijzigd op 07/11/2013 14:03:16 door Joakim Broden
Merk op:
- Een aantal functies heb ik niet. Ik heb een aantal dingen weggelaten uit jouw code, specifiek om te zorgen dat deze code werkt; gewoon alles copy/pasten naar een leeg index.php bestand
- Dus, onderaan mijn code zie je hoe de Ajax call gebeurt.
Jij moet dan maar zorgen dat jouw functionaliteit terug in mijn code wordt gepuzzled (of omgekeerd :) )
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?php
// ajax verzoek
if(!empty($_GET['ajax'])) {
// Als je hier bent, komt dit van een Ajax verzoek. Alles wat we hier echo'en komt terug naar javascript.
// merk op: eerste video = $_POST['ids'][0]; tweede video = $_POST['ids'][1]; ...
// Jij kan dus $_POST['ids'] gebruiken om in de database te zetten
// bericht sturen terug naar javascript:
echo 'Berichtje van de server. print_r($_POST, 1) = <pre>' . print_r($_POST, 1) . '</pre>';
exit;
}
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
var searchResults = new Array();
var searchIds = new Array(); // array met de id's van de resultaten
function search(query) {
var url = "https://gdata.youtube.com/feeds/api/videos";
var data = {"q":query, "alt":"json", "max-results":"10", "v":"2", "orderby":"relevance", "format":"5"};
$.getJSON(url, data, function (data) {
var items = [];
var index = -1;
$.each(data.feed.entry, function (key, val) {
try {
index++;
var videoID = val.media$group.yt$videoid.$t;
var video = { "id" : videoID,
"thumbnail" : val.media$group.media$thumbnail[1].url,
"title" : val.title.$t,
"uploader" : val.author[0].name.$t //,
//"length" : secondsToHMS(val.media$group.yt$duration.seconds),
//"views" : numAddCommas(val.yt$statistics.viewCount)
};
// ik heb die twee functies secondsToHMS() en numAddCommas() niet, ik negeer dit even.
searchResults[videoID] = video;
searchIds.push(video.id);
var html = "<a href='javascript:selectVideo(\"" + video.id + "\")' class='result clearfix'>" + // ik heb selectVideo() niet, dit zal niet werken bij mij
"<img src='" + video.thumbnail + "' alt='' />" +
"<div class='details'>" +
"<span>" + video.title + "</span><br />" +
"By: " + video.uploader + "<br />" +
"</div>" +
"</a>";
$('#container').append(html);
} catch (e) {
return "continue";
}
});
// Nu gaan we die items naar de server sturen met Ajax
$.ajax({ // begin verzoek
url: 'index.php?ajax=1',
data: {ids: searchIds},
type: 'post',
success: function(data) { // Als de server terug is met het verzoek, wordt dit uitgevoerd. variabele data bevat de echo van de server.
// we steken die data de messages div
$('#messages').html(data);
}
});
});
}
</script>
<style>
#messages, #container {
max-height: 350px;
overflow: auto;
border: 1px solid grey;
}
</style>
<input onchange="search(this.value)" placeholder="search">
<div id="container"></div>
<div id="messages"></div>
// ajax verzoek
if(!empty($_GET['ajax'])) {
// Als je hier bent, komt dit van een Ajax verzoek. Alles wat we hier echo'en komt terug naar javascript.
// merk op: eerste video = $_POST['ids'][0]; tweede video = $_POST['ids'][1]; ...
// Jij kan dus $_POST['ids'] gebruiken om in de database te zetten
// bericht sturen terug naar javascript:
echo 'Berichtje van de server. print_r($_POST, 1) = <pre>' . print_r($_POST, 1) . '</pre>';
exit;
}
?>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>
var searchResults = new Array();
var searchIds = new Array(); // array met de id's van de resultaten
function search(query) {
var url = "https://gdata.youtube.com/feeds/api/videos";
var data = {"q":query, "alt":"json", "max-results":"10", "v":"2", "orderby":"relevance", "format":"5"};
$.getJSON(url, data, function (data) {
var items = [];
var index = -1;
$.each(data.feed.entry, function (key, val) {
try {
index++;
var videoID = val.media$group.yt$videoid.$t;
var video = { "id" : videoID,
"thumbnail" : val.media$group.media$thumbnail[1].url,
"title" : val.title.$t,
"uploader" : val.author[0].name.$t //,
//"length" : secondsToHMS(val.media$group.yt$duration.seconds),
//"views" : numAddCommas(val.yt$statistics.viewCount)
};
// ik heb die twee functies secondsToHMS() en numAddCommas() niet, ik negeer dit even.
searchResults[videoID] = video;
searchIds.push(video.id);
var html = "<a href='javascript:selectVideo(\"" + video.id + "\")' class='result clearfix'>" + // ik heb selectVideo() niet, dit zal niet werken bij mij
"<img src='" + video.thumbnail + "' alt='' />" +
"<div class='details'>" +
"<span>" + video.title + "</span><br />" +
"By: " + video.uploader + "<br />" +
"</div>" +
"</a>";
$('#container').append(html);
} catch (e) {
return "continue";
}
});
// Nu gaan we die items naar de server sturen met Ajax
$.ajax({ // begin verzoek
url: 'index.php?ajax=1',
data: {ids: searchIds},
type: 'post',
success: function(data) { // Als de server terug is met het verzoek, wordt dit uitgevoerd. variabele data bevat de echo van de server.
// we steken die data de messages div
$('#messages').html(data);
}
});
});
}
</script>
<style>
#messages, #container {
max-height: 350px;
overflow: auto;
border: 1px solid grey;
}
</style>
<input onchange="search(this.value)" placeholder="search">
<div id="container"></div>
<div id="messages"></div>
Gewijzigd op 07/11/2013 14:20:30 door Kris Peeters
Hertog Jan op 07/11/2013 14:02:47:
Nou volgens mij niet, je hebt nu niet het ID in een variabele maar een javascript string. Hoe krijg je dat id nu in de database?
Oftewel in je database komt nu letterlijk '<script>document.write(id);</script>' te staan.
Code (php)
1
2
3
4
5
6
7
8
9
2
3
4
5
6
7
8
9
<script>
var id = 2;
</script>
<?php
$id = "<script>document.write(id);</script>";
mysql_query('INSERT INTO tabel SET id = "'.$id.'"');
?>
var id = 2;
</script>
<?php
$id = "<script>document.write(id);</script>";
mysql_query('INSERT INTO tabel SET id = "'.$id.'"');
?>
Oftewel in je database komt nu letterlijk '<script>document.write(id);</script>' te staan.
Klopt. Werkt alleen voor echo. Excuses :)
Gewijzigd op 07/11/2013 15:22:51 door Michael -