Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[PHP icm SQL] Hoe gegevens in een database te plaatsen?

Pagina: 1
Acties:

  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 12:10
Beste Tweakers,

ik zit met een lastig probleem waar ik niet uitkom:

We hebben php-script(s) gemaakt om met FQL(Facebook database) data op te halen. Deze scripts bestaan uit een groot deel standaardscript, met hier en daar gepersonaliseerde stukjes code. De opgehaalde data(JSON volgens mij) hebben we in een HTML-document gezet en netjes vormgegeven.

Nu is het de bedoeling dat ik de data in een database krijg. Hiervoor is een PhpMyAdmin-database ter beschikking gesteld. Ik ben al een tijdje aan het werk om die gegevens erin te krijgen, helaas lukt dat op de een of andere manier niet. Waarschijnlijk doe ik het op een manier waarop het niet mag of zit er ergens een fout. Ik heb weinig tot geen ervaring, dat helpt me ook niet erg...

Ik heb op StackOverflow al wat info gezocht en het op die manier geprobeerd, wanneer ik de code invoeg werkt het hele document echter niet meer :( Ook via Google kan ik niet uitvissen wat er mis zou kunnen gaan.

Momenteel zit het op de volgende manier in elkaar(alles staat in één bestand):

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
    //de fql-query
                            $fql = "SELECT uid, name, pic_square, online_presence
                            FROM user
                            WHERE online_presence IN ('active', 'idle', 'offline')
                            AND uid IN (
                            SELECT uid2 FROM friend WHERE uid1 = $user_id
                            )";
                            //Het resultaat gaat een array in
                            $result = $facebook->api(array(
                            'method' => 'fql.query',
                            'query' => $fql
                            ));
                            //Resultaat netjes vormgegeven in een tabel
                            echo "<tr class='information'><td>uid</td><td>naam</td><td>online status</td></tr>";
                            foreach($result as $fb_user) {
                            echo "<tr><td>".$fb_user["uid"]."</td><td>".$fb_user["name"]."</td><td>"
                            .$fb_user["online_presence"]."</td></tr>";
                            }
                            echo "</table>";
                            //echo "<pre>";
                            //var_dump($result);
                            //echo "</pre>";


Wat naar onder:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//CODE WAARMEE IK IN DATABASE PROBEER TE KOMEN:
                            
                            // Create Database connection
                            $con=mysqli_connect("localhost","user","pass","database");

                            
                            // Create data
                            foreach ( $result as $onlinePresence ) {
                            mysqli_query( $con, "INSERT INTO online_presence (uid, name, status) VALUES ( '".$onlinePresence['uid']."', '".$onlinePresence['online_presence']."', '".$onlinePresence[''])."' )" );
                            
                            if (mysqli_query($con,$sql))
                              {
                              //do nothing
                              }


Kan iemand mij een tip geven waar het fout gaat? Of op welke andere manier ik deze stap zou kunnen zetten?

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • rvrbtcpt
  • Registratie: November 2000
  • Nu online
Data toevoegen gaat inderdaad middels:
- Database verbinding maken
- SQL Insert statement maken met de juiste waardes.

Als dat niet werkt, is het de vraag: wat is de foutmelding die je krijgt?

  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 12:10
Frijns.Net schreef op vrijdag 11 april 2014 @ 10:11:
Data toevoegen gaat inderdaad middels:
- Database verbinding maken
- SQL Insert statement maken met de juiste waardes.

Als dat niet werkt, is het de vraag: wat is de foutmelding die je krijgt?
Nou, dat is het juist: Ik krijg geen foutmelding, alleen een volledig leeg HTML-document omdat de hele php-pagina blijkbaar niet meer werkt?

Ik heb de database-verbinding overigens met een ander scriptje getest. Bij geen verbinding een foutmelding, bij verbinding een leeg document. Meerdere malen een foutmelding gehad(could not connect, op het laatst 'table already exists'), tenslotte een leeg document en 1x een testcall om iets eruit te halen.

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • Marsjee
  • Registratie: Mei 2007
  • Laatst online: 22-06 12:44
// Report all PHP errors (see changelog)
error_reporting(E_ALL);


Zet dat is helemaal boven aan waar PHP opent

  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 12:10
Marsjee schreef op vrijdag 11 april 2014 @ 10:18:
// Report all PHP errors (see changelog)
error_reporting(E_ALL);


Zet dat is helemaal boven aan waar PHP opent
Zojuist geprobeerd, geen resultaat. Leeg, wit HTML-bestand:

HTML:
1
2
3
4
5
//returned code(plain html-doc)

    <head></head>
    <body>
    </body>


Edit: Trouwens, er staan wel een try en catch in. Die schijnt fouten op te vangen...?
Edit2: catch weghalen heeft geen resultaat.

[ Voor 14% gewijzigd door timmie1 op 11-04-2014 10:26 ]

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

Is dit ook alle code?

Je zou op z'n minst een tabel moeten zien gezien het
PHP:
1
2
3
4
5
6
7
                            //Resultaat netjes vormgegeven in een tabel 
                            echo "<tr class='information'><td>uid</td><td>naam</td><td>online status</td></tr>"; 
                            foreach($result as $fb_user) { 
                            echo "<tr><td>".$fb_user["uid"]."</td><td>".$fb_user["name"]."</td><td>" 
                            .$fb_user["online_presence"]."</td></tr>"; 
                            } 
                            echo "</table>";

gedeelte.

Ik mis echter een <table> openingstag, maar dat zou alsnog wat moeten weergeven. Die staat waarschijnlijk eerder in de code om niet bij elke database output een hele tabel te krijgen.

Verder gebeurt er ook niks. Heb je al wel een database waar je dingen in kunt stoppen en uit kunt halen?

[ Voor 6% gewijzigd door BLACKfm op 11-04-2014 10:27 ]


  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 12:10
BLACKfm schreef op vrijdag 11 april 2014 @ 10:26:
Is dit ook alle code?

Je zou op z'n minst een tabel moeten zien gezien het
PHP:
1
2
3
4
5
6
7
                            //Resultaat netjes vormgegeven in een tabel 
                            echo "<tr class='information'><td>uid</td><td>naam</td><td>online status</td></tr>"; 
                            foreach($result as $fb_user) { 
                            echo "<tr><td>".$fb_user["uid"]."</td><td>".$fb_user["name"]."</td><td>" 
                            .$fb_user["online_presence"]."</td></tr>"; 
                            } 
                            echo "</table>";

gedeelte.

Ik mis echter een <table> openingstag, maar dat zou alsnog wat moeten weergeven.

Verder gebeurt er ook niks. Heb je al wel een database waar je dingen in kunt stoppen en uit kunt halen?
Dit is niet alle code, het zijn gekopieerde stukken code. table-tag is er en dat doet het ook. Met de oude versie(zonder mijn code) doet hij het gewoon.

Ik heb een phpmyadmin database ter beschikking waar ik kan lezen en schrijven. Scripts staan op webservergedeelte op dezelfde server.

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

In essentie probeer je dus gegevens in je database te krijgen, het is dan van belang dat je ook een tabel hebt in je database waar je de gegevens in kunt opslaan/opvragen, heb je die?

  • timmie1
  • Registratie: Juni 2008
  • Laatst online: 12:10
BLACKfm schreef op vrijdag 11 april 2014 @ 10:33:
In essentie probeer je dus gegevens in je database te krijgen, het is dan van belang dat je ook een tabel hebt in je database waar je de gegevens in kunt opslaan/opvragen, heb je die?
Ik heb inderdaad een aantal tabellen gemaakt en in één van die tabellen probeer ik die gegevens te posten.

Spiegeltje, spiegeltje aan de wand, wie heeft de mooiste telefoon van het land?


  • Dido
  • Registratie: Maart 2002
  • Laatst online: 12:46

Dido

heforshe

In ieder geval ontbreekt er een '}' na je
code:
1
foreach ( $result as $onlinePresence ) {

maar die kan met copy/pasten zijn weggevallen.

Probeer eens om je nieuwe code regel voor regel toe te voegen , dan zie je wanneer e.e.a. op zijn plaat gaat :)

Wat betekent mijn avatar?


  • BLACKfm
  • Registratie: Maart 2004
  • Laatst online: 20-11 18:52

BLACKfm

O_o

De waardes uit je PHP en in de tabel zijn ook hetzelfde? Volgens mij is een verschil van - of _ en zelfs hoofdletters zeer cruciaal. Bij handwerk worden fouten gemaakt, dus controleer ook je spelling.

Om wat in de database te stoppen moeten deze waardes ($var) die je wilt invoeren wel gevuld zijn, worden deze wel gevoed?

Ik zie dat $onlinePresence['uid'] - $onlinePresence['online_presence'] en $onlinePresence[''] worden ingevoerd in de database. Set ze anders handmatig met eigen waardes om te kijken of het importdeel wel werkt. Als dat wel werkt en de waardes worden niet automatisch gevoed zit er wellicht een fout in het deel wat van facebook de gegevens ophaalt.

Edit: Ondanks dat de waarde wellicht leeg is zou die wel gewoon een lege regel in je tabel kunnen invoeren, aan de andere kant kan er een controle zijn die ik niet terugzie in de weergegeven code (if empty > insert nothing)

[ Voor 32% gewijzigd door BLACKfm op 11-04-2014 10:53 ]


  • Donderpoes
  • Registratie: April 2011
  • Laatst online: 11-05 23:09
Er staat een ) fout in:

PHP:
1
mysqli_query( $con, "INSERT INTO online_presence (uid, name, status) VALUES ( '".$onlinePresence['uid']."', '".$onlinePresence['online_presence']."', '".$onlinePresence[''])."' )" );


( () () ))

En phpmyadmin is geen database, maar een tool om een database te beheren.

Tevens zet je error reporting aan:

error_reporting(-1);
ini_set('display_errors', true);

En $onlinePresence[''] doet ook niet wat het moet doen denk ik.

[ Voor 7% gewijzigd door Donderpoes op 11-04-2014 11:55 ]

Pagina: 1