Hoe kan ik een Json object in Mysql database krijgen?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Bart de Molenaar

Bart de Molenaar

17/05/2012 23:27:47
Quote Anchor link
Beste allen,

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');
}
});

}


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)
PHP script in nieuw venster Selecteer het PHP script
1
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')");
}



?>


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!
 
PHP hulp

PHP hulp

25/11/2024 06:54:44
 
Joey Drieling

Joey Drieling

18/05/2012 05:39:35
Quote Anchor link
Kijk is wat mijn groote vriend google vond toen ik ff 'php json' in typte. http://www.php.net/manual/en/function.json-decode.php
 
Bart de Molenaar

Bart de Molenaar

18/05/2012 13:01:33
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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]
 
Chris PHP

Chris PHP

18/05/2012 13:06:34
Quote Anchor link
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:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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')");
}

*/

?>


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
 
Bart de Molenaar

Bart de Molenaar

18/05/2012 13:12:37
Quote Anchor link
Hey Chris,

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!).
 
Chris PHP

Chris PHP

18/05/2012 13:18:40
Quote Anchor link
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.
 
Bart de Molenaar

Bart de Molenaar

18/05/2012 13:29:32
Quote Anchor link
voor zover mijn PHP kennis reikt om een array uit te lezen in PHP (als het na de Json decode dan een php array is geworden):

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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..
 
Chris PHP

Chris PHP

18/05/2012 13:33:32
Quote Anchor link
Probeer dit eens.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
.$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
 
Wouter J

Wouter J

18/05/2012 13:40:59
Quote Anchor link
Er wordt standaard een object getoond en dus geen array. Als je parameter 2 op true zet krijg je een array.

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.
(...)

En vervolgens bij de examples nog veel meer voorbeelden.
 
Bart de Molenaar

Bart de Molenaar

18/05/2012 13:44:10
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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..
 
Chris PHP

Chris PHP

18/05/2012 13:47:36
Quote Anchor link
Jack Gommeren op 18/05/2012 13:44:10:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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')");
};


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 (php)
PHP script in nieuw venster Selecteer het PHP script
1
$obj = json_decode($carly);


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)
PHP script in nieuw venster Selecteer het PHP script
1
$obj = json_decode($carly, true);
 
Bart de Molenaar

Bart de Molenaar

18/05/2012 14:10:20
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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')");
};


?>


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?
 
Chris PHP

Chris PHP

18/05/2012 14:12:18
Quote Anchor link
Jack,

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
 
Wouter J

Wouter J

18/05/2012 14:31:20
Quote Anchor link
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.
 
Bart de Molenaar

Bart de Molenaar

18/05/2012 15:05:55
Quote Anchor link
klopt, ik ben nu ook van plan om te echo'en, print_r'en enzo.. maar probleem is als ik vanuit mijn .js file iets verstuur (met AJAX) dan springt mijn browser niet direct door naar het php bestand om daar te zien wat hij output.

Ik zal dus even proberne de javascript in het php bestand zelf te zetten.
 
Erwin H

Erwin H

18/05/2012 15:09:51
Quote Anchor link
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.
 
Bart de Molenaar

Bart de Molenaar

18/05/2012 20:30:13
Quote Anchor link
hey sorry voor de late reactie,.. mijn internet viel om de zoveel tijd aan en uit dat ik er nogal moedeloos van werd.. maar het punt is dat mijn javascript juist zelf de API moet aanroepen om daar waardes uit te krijgen en deze naar php te versturen, vervolgens moet php het in de database zetten..

Dus ik moet wel via javascript de waardes naar php versturen. het php bestand werkt prima met 'handmatig' aangemaakte waardes.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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')");
};
*/


?>


^^ Bovenstaand script werkt prima, maar blijkbaar is er een probleem met de transactie van variabelen tussen javascript en php..
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.