Hoe kan ik een Json object in Mysql database krijgen?
Omdat ik heb gehoord dat het voor javascript niet mogelijk is objecten (data) op te slaan op de server dacht ik dat ik het beste voor javascript in combinatie met php zou moeten gaan maar helaas levert dit ook al problemen op.
Wat ik wil:
Dat een object dat ik vanuit de Linkedin API heb gehaald (zie hieronder)...
Quote:
function retrievegroup(o){
IN.API.Raw("/groups/"+ o +"/posts:(title,summary,attachment:(content-url))?category=discussion&order=recency").result(function(henk){
alert(JSON.stringify(henk)); //geeft weer wat er in elk pakketje van groepsberichten zit
alert(henk.values.length); //om te zien hoeveel berichten bij per groep ophaalt
SendSearchResults(henk); //stuurt het naar de functie die het doorstuurt met Ajax
function SendSearchResults(searchData){
$.ajax({
type: "POST",
url: "linkedin_link/pgi.php",
data: searchData,
success: function(data){
alert('Verzenden linkedin data naar php gelukt');
},
error: function() {
alert('fout bij verzenden linkedin data naar php');
}
});
}
IN.API.Raw("/groups/"+ o +"/posts:(title,summary,attachment:(content-url))?category=discussion&order=recency").result(function(henk){
alert(JSON.stringify(henk)); //geeft weer wat er in elk pakketje van groepsberichten zit
alert(henk.values.length); //om te zien hoeveel berichten bij per groep ophaalt
SendSearchResults(henk); //stuurt het naar de functie die het doorstuurt met Ajax
function SendSearchResults(searchData){
$.ajax({
type: "POST",
url: "linkedin_link/pgi.php",
data: searchData,
success: function(data){
alert('Verzenden linkedin data naar php gelukt');
},
error: function() {
alert('fout bij verzenden linkedin data naar php');
}
});
}
Dat dit object MET of zonder PHP in mijn MYSQL database komt te staan. Ik heb al geprobeerd om in PHP iets te maken wat dit in de MYSQL database moet krijgen, maar dit blijkt keer op keer niet te lukken en als het lukt dan is het record leeg.
Zie hieronder de php code:
Quote:
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
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$carly."')");
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$carly.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$carly.title."', '".$carly.message."', '".$carly.attachment.contentUrl"', 'Linkedin')");
}
?>
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$carly."')");
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$carly.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$carly.title."', '".$carly.message."', '".$carly.attachment.contentUrl"', 'Linkedin')");
}
?>
Voor zover ik weet volgens de documentatie van Linkedin is het object wat hij via de API code ophaalt een JSON object, en dat zal ik waarschijnlijk op 1 of andere manier moeten 'parsen', maar ik heb al vele bronnen doorgespit en geprobeerd zonder resultaat.
Kunnen jullie me alsjeblieft helpen met dit script?
Alvast reuze bedankt!
Hierbij mijn php code met JSON decode:
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
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
<?php
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
/*
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$carly.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$carly.title."', '".$carly.message."', '".$carly.attachment.contentUrl"', 'Linkedin')");
}
*/
?>
[/CODE]
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
/*
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$carly.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$carly.title."', '".$carly.message."', '".$carly.attachment.contentUrl"', 'Linkedin')");
}
*/
?>
[/CODE]
Jack Gommeren op 18/05/2012 13:01:33:
Dank je voor je antwoord, maar dat heb ik dus al geprobeerd maar nu krijg ik dus nog steeds een blanco record in mijn database.
Hierbij mijn php code met JSON decode:
Hierbij mijn php code met JSON decode:
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
<?php
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
/*
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$carly.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$carly.title."', '".$carly.message."', '".$carly.attachment.contentUrl"', 'Linkedin')");
}
*/
?>
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
/*
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$carly.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$carly.title."', '".$carly.message."', '".$carly.attachment.contentUrl"', 'Linkedin')");
}
*/
?>
Dat is logisch omdat je geen goede foutafhandeling hebt zie je niet wat er fout gaat.
Maar tenzij je voor elke gebruiker een nieuwe tabel aanmaakt zal het nooit werken.
Want je insert de data in de gebruikersnaam! Ik neem aan dat dat niet de bedoeling is?
Gewijzigd op 18/05/2012 13:07:43 door Chris PHP
haha ja ik weet dat dat raar is en ja ik maak voor elke gebruiker een nieuwe tabel aan. Ik ben bezig aan een prototype te ontwikkelen dus ik let even totaal niet op preformance en het prototype is ook maar voor 5 personen bedoeld en enkel als voorbeeld.
Mijn PHP kennis is ook erg beperkt, maar ik begin het heel erg langzaam door te krijgen. De tabel aanspreken, welke dezelfde naam heeft als de gebruikersnaam werkt perfect, en toen ik een proefje deed door normale tekst in $obj te zetten werkte dat ook gewoon zoals het hoort.
het probleem ligt echt bij php dat hij wel nieuwe records aanmaakt in de database maar er niets in zet. Daarbij denk ik niet dat ik aan foutafhandeling veel heb aangezien ik het stuur via AJAX en JQUERY dus kom ik zoiezo nooit op het php bestand zelf aan om te zien wat er mis gaat. (als ik de foutmelding dan nog uberhaupt zou kunnen begrijpen!).
Voor zover ik kan lezen op de link van Joey is een object wat je maakt met json een array. Dan zul je de array natuurlijk wel eerst moeten afdrukken als je het als tekst wilt opslaan.
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
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
<?php
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj.title."', '".$obj.message."', '".$obj.attachment.contentUrl"', 'Linkedin')");
};
?>
[/CODE]
maar dit werkt niet, nu wordt er al helemaal niks meer aangemaakt in de database, dus wellicht zit er ergens een fout in dit script maar ik kan echt niet zien waar..
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj.title."', '".$obj.message."', '".$obj.attachment.contentUrl"', 'Linkedin')");
};
?>
[/CODE]
maar dit werkt niet, nu wordt er al helemaal niks meer aangemaakt in de database, dus wellicht zit er ergens een fout in dit script maar ik kan echt niet zien waar..
Code (php)
1
2
3
2
3
<?php
.$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
?>
.$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
?>
Tevens raad ik je aan om toch eens de link van Joey goed door te lezen, daar staat dit netjes uitgelegd.
Gewijzigd op 18/05/2012 13:34:07 door Chris PHP
Maar ook dat staat op php.net:
Quote:
Description
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
(...)
Parameters
(...)
assoc
When TRUE, returned objects will be converted into associative arrays.
(...)
mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
(...)
Parameters
(...)
assoc
When TRUE, returned objects will be converted into associative arrays.
(...)
En vervolgens bij de examples nog veel meer voorbeelden.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
[/CODE]
ik heb het geprobeerd maar zonder resultaat.
Daarbij heb ik de link wel doorgenomen, maar mijn php kennis is eenmaal erg laag en wat het is met die handleiding is dat bij elk voorbeeld wat ze geven er wordt verwacht dat je veel voorkennis hebt van allerlei andere methods en dat soort dingen.
Voor zover ik kan begrijpen volgens de link zou de JSON decode:
[CODE]
$obj = json_decode($carly);
[/CODE]
genoeg moeten zijn, maar ik begrijp maar niet wat er dan nog mis is..
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
[/CODE]
ik heb het geprobeerd maar zonder resultaat.
Daarbij heb ik de link wel doorgenomen, maar mijn php kennis is eenmaal erg laag en wat het is met die handleiding is dat bij elk voorbeeld wat ze geven er wordt verwacht dat je veel voorkennis hebt van allerlei andere methods en dat soort dingen.
Voor zover ik kan begrijpen volgens de link zou de JSON decode:
[CODE]
$obj = json_decode($carly);
[/CODE]
genoeg moeten zijn, maar ik begrijp maar niet wat er dan nog mis is..
Jack Gommeren op 18/05/2012 13:44:10:
ik heb het geprobeerd maar zonder resultaat.
Daarbij heb ik de link wel doorgenomen, maar mijn php kennis is eenmaal erg laag en wat het is met die handleiding is dat bij elk voorbeeld wat ze geven er wordt verwacht dat je veel voorkennis hebt van allerlei andere methods en dat soort dingen.
Voor zover ik kan begrijpen volgens de link zou de JSON decode:
genoeg moeten zijn, maar ik begrijp maar niet wat er dan nog mis is..
Code (php)
1
2
3
2
3
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
ik heb het geprobeerd maar zonder resultaat.
Daarbij heb ik de link wel doorgenomen, maar mijn php kennis is eenmaal erg laag en wat het is met die handleiding is dat bij elk voorbeeld wat ze geven er wordt verwacht dat je veel voorkennis hebt van allerlei andere methods en dat soort dingen.
Voor zover ik kan begrijpen volgens de link zou de JSON decode:
genoeg moeten zijn, maar ik begrijp maar niet wat er dan nog mis is..
Do het eens zo en dan alsnog met de string die ik je gaf.
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
<?php
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly, true);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
?>
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
$obj = json_decode($carly, true);
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
?>
hele domme fout om over heen te kijken ik weet het. Json decode functie staat nu op true dus er zou een array uit moeten komen maar helaas, dit werkt ook niet..ik ga eens proberen met javascript om toch doorgestuurt te kunnen worden naar de php file zelf (ondanks dat dit juist tegen de bedoeling van AJAX ingaat) om in ieder geval te kunnen kijken wat er precies misgaat in die php file...
Is (indien iemand dat weet) wat de linkedin API mij teruggeeft in mijn javascript (zie eerste post) uberhaupt wel een JSON? heeft er iemand ervaring met de linkedin API?of API in het algemeen?
Als je nu eens print_r ($obj); doet zodat je eens kijkt of er wel iets in staat en zoja wat?
Dat is ietsje makkelijker trouble shooten :D
Quote:
Daarbij heb ik de link wel doorgenomen, maar mijn php kennis is eenmaal erg laag en wat het is met die handleiding is dat bij elk voorbeeld wat ze geven er wordt verwacht dat je veel voorkennis hebt van allerlei andere methods en dat soort dingen.
Een handige tutorial voor je: http://www.phphulp.nl/php/tutorial/overig/phpnet/757/
Tevens kan het aan mij liggen, maar in de voorbeelden word er wel geteld 1 functie gebruikt namelijk var_dump en die is om iets naar een scherm te echoën. Verder is alles gewoon op niveau PHP beginnerstutorial les 1.
Tevens kun je ook even de resultaten van de LinkedIn API even var_dumpen dan weet je meteen wat erin zit.
Ik zal dus even proberne de javascript in het php bestand zelf te zetten.
Je kan het php bestand ook gewoon direct in de browser aanroepen. Dat is het wel het makkelijkst om mee te testen. Maak in het php (voor de test) gewoon eerst zelf handmatig even de POST waardes aan, zodat je kan zien wat er gebeurt bij juiste input.
Dus ik moet wel via javascript de waardes naar php versturen. het php bestand werkt prima met 'handmatig' aangemaakte waardes.
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
<?php
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
//$obj = json_decode($carly, true);
$obj = "hoi";
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
/*
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
*/
?>
session_start(); // Start a new session
include '../connect.php'; // Zorgt ervoor dat ik geconnecteert ben met de database
$hans = $_SESSION['inlog_gebruiker']; //haalt uit de sessie de gebruikersnaam is wat: testnaam is.
$carly = $_POST['searchData']; // haal het pakketje met groepsberichten in Json? op
//$obj = json_decode($carly, true);
$obj = "hoi";
// de gebruikersnaam is ook mijn databasenaam.
// poging 1 om de variabele vanuit js in de database te krijgen
mysql_query("INSERT INTO ".$hans." (titelnaam) VALUES ('".$obj."')");
/*
// poging 2 om de waardes van de variabelen in de database te krijgen.
for (i=0; i<$cbj.length; i++) {
mysql_query("INSERT INTO ".$hans." (titelnaam, tekstnaam, urlnaam, bron) VALUES ('".$obj['title']."', '".$obj['message']."', '".$obj['attachment']."', 'Linkedin')");
};
*/
?>
^^ Bovenstaand script werkt prima, maar blijkbaar is er een probleem met de transactie van variabelen tussen javascript en php..