[PHP]xpath dom resultaten direct in MYSQL plaatsen

Pagina: 1
Acties:
  • 362 views

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Goedemiddag,

Ik wil met behulp van de onderstaande code gegevens van een website halen (doormiddel van Domdocument) en vervolgens wil ik de gegevens die opgehaald zijn van een externe website, plaatsen in mijn eigen mysql database. De reden dat ik de gegevens zelf wil hebben heeft te maken met snelheidswinst.

Ik haal de gegevens netjes binnen en plaats ze in $string2a t/m n. Vervolgens wil ik de gegevens die in de variabelen staan in mijn database plaatsen. Hier gaat het echter mis, als ik de pagina vernieuw worden er geen gegevens aan mijn database toegevoegd.

Kan iemand mij vertellen wat ik fout doe??

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
//gegevens voor mysql
$database = "";
$server = ""; 
$user = ""; 
$wachtwoord = ";

//verbinden met mysql server maken.
mysql_connect("$server","$user", "$wachtwoord"); 

//database kiezen in mysql server.
mysql_select_db("$database");

$url = 'http://www.fis-ski.com/uk/disciplines/alpineskiing/cupstandings.html?suchen=true&suchcompetitorid=&suchseason=2010&sector=AL&suchgender=M&suchcup=WC&suchnation=&discipline=&search=Search';
$html = file_get_contents($url);
$doc = new DomDocument();
@$doc->loadHTML($html);

//scores uit het document filteren
$xpath = new DomXpath($doc);   

//output
$titels2a = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[2]");
$titels2b = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[3]");
$titels2c = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[5]");
$titels2d = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[6]");
$titels2e = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[8]");
$titels2f = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[9]");
$titels2g = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[11]");
$titels2h = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[12]");
$titels2i = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[14]");
$titels2j = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[15]");
$titels2k = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[17]");
$titels2l = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[18]");
$titels2m = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[20]");
$titels2n = $xpath->evaluate("/html/body/table/tr[4]//tr[4]//td[21]");

$string2a = utf8_decode(trim ($titels2a->item(0)->nodeValue)) . "\n";
$string2b = utf8_decode(trim ($titels2b->item(0)->nodeValue)) . "\n";
$string2c = utf8_decode(trim ($titels2c->item(0)->nodeValue)) . "\n";
$string2d = utf8_decode(trim ($titels2d->item(0)->nodeValue)) . "\n";
$string2e = utf8_decode(trim ($titels2e->item(0)->nodeValue)) . "\n";
$string2f = utf8_decode(trim ($titels2f->item(0)->nodeValue)) . "\n";
$string2g = utf8_decode(trim ($titels2g->item(0)->nodeValue)) . "\n";
$string2h = utf8_decode(trim ($titels2h->item(0)->nodeValue)) . "\n";
$string2i = utf8_decode(trim ($titels2i->item(0)->nodeValue)) . "\n";
$string2j = utf8_decode(trim ($titels2j->item(0)->nodeValue)) . "\n";
$string2k = utf8_decode(trim ($titels2k->item(0)->nodeValue)) . "\n";
$string2l = utf8_decode(trim ($titels2l->item(0)->nodeValue)) . "\n";
$string2m = utf8_decode(trim ($titels2m->item(0)->nodeValue)) . "\n";
$string2n = utf8_decode(trim ($titels2n->item(0)->nodeValue)) . "\n";

echo $string2a;
echo $string2c;
echo $string2d;
echo $string2e;
echo $string2f;
echo $string2g;
echo $string2h;
echo $string2i;
echo $string2j;
echo $string2k;
echo $string2l;
echo $string2m;
echo $string2n;

$query = "INSERT INTO ranglijsten (naam, allpoints, allranking, slpoints, slranking, gspoints, gsranking, sgpoints, sgranking, dhpoints, shranking, kbpoints, kbranking,) VALUES ('$string2a','$string2d','$string2c','$string2f','$string2e','$string2h','$string2g','$string2j','$string2i','$string2l','$string2k','$string2n','$string2m')";
$result = mysql_query($query);
                    if(!$result){
                    $error = "- Er is een server fout opgetreden. Onze excuses voor het ongemak.";
                                }

Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Krijg je ook geen foutmelding? Zo nee, welke?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik krijg helaas geen foutmeldingen....

Acties:
  • 0 Henk 'm!

  • Rekcor
  • Registratie: Februari 2005
  • Laatst online: 05-09 21:08
Dit is niet goed:
PHP:
1
$wachtwoord = "; 


P.S. heb je toestemming van die site om hun gegevens te jatten?

Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Ik zou eens beginnen me te verdiepen in arrays, lussen (for/while/whatever) en algemene programmeertechnieken :X En dan is het handig als je de error_reporting even dusdanig zet dat je wel errors gaat zien als er iets mis is/gaat. En verder: Debuggen: Hoe doe ik dat?
Rekcor schreef op donderdag 22 juli 2010 @ 15:13:
Dit is niet goed:
PHP:
1
$wachtwoord = "; 
Ik ging er even van uit dat het wachtwoord in de post eruit gesloopt was en dat er daarmee een quote teveel verdwenen is, maar anders is het wel een heel erge obvious fout :P Zelfs onze syntaxhighlighter toont het al :D
Rekcor schreef op donderdag 22 juli 2010 @ 15:13:

P.S. heb je toestemming van die site om hun gegevens te jatten?
Niet meteen van 't ergste uit gaan ;) Hij kan idd toestemming hebben, misschien is het een privé projectje, misschien is het ter lering etc. En feitelijk doet 'ie niet veel anders dan een willekeurige crawler a-la Google/Bing/whatever behalve dat 'ie wat selectiever crawled :P Daarmee is iig niet gezegd dat die gegevens weer gepubliceerd gaan worden, en als dat wel zo is heeft 'ie misschien wel toestemming ;)
Daarmee is je vraag overigens niet onterecht; het is voor TS inderdaad wel van belang van regelgeving op dit vlak op de hoogte te zijn

[ Voor 70% gewijzigd door RobIII op 22-07-2010 15:18 ]

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Tuurlijk zijn de db gegevens verwijderd! Ook al weet je het internetadres niet lijkt het mij beter om die gegevens voor mijzelf te houden. Debuggen hmmm thanks.... ook al weet ik in welk onderdeel het fout gaat, het moet ongeveer bij de sql query plaats vinden wat de echo functie verloopt prima.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
en toestemming ja! wil je het mailtje zien? Zij hebben mij zelfs gewezen op welke manier ik hun gegevens kan verkrijgen. Te grappig..

[ Voor 51% gewijzigd door Verwijderd op 22-07-2010 15:22 ]


Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
code:
1
kbranking,) VALUES ('
komma te veel

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
komma verwijderd nog niets... is de pagina aanroepen wel genoeg? Moet ik de database invoer niet laten triggeren doormiddel van een if statement ofzo...?

Acties:
  • 0 Henk 'm!

  • Shadowman
  • Registratie: Januari 2002
  • Niet online
Waarom zet je de error in een variabele, print je die wel? En wat geeft mysql_error() terug?
Kom je in if (!$result) { } btw? Neem aan van wel?

mysql_query voert de query uit, hoef je niet apart te triggeren, wel moet je controleren of het goed is gegaan en hier wat mee doen (en dat laatste lijkt nu niet te gebeuren, de controle wel).

Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
Had je al gekeken naar hoe je moet debuggen? Staat je error_reporting wel aan en worden foutmeldingen uberhaupt getoond (display_errors) ?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ja ben me nu aan het verdiepen hoe ik mijn code kan uitdiepen.... Als ik meer weet post ik het zsm

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
if(!$result){
    echo " Er is een server fout opgetreden. Onze excuses voor het ongemak.";
           }
else        {
        echo "ikkom zelf shier en daarmee moet ik kunnen bewijzen dat mijn query is uitgevoerd!";
              }


En ja hoor ik heb een foutmelding! Er is een server fout opgetreden. Onze excuses voor het ongemak."

Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

Dat je een foutmelding krijgt wordt ook niet bestreden, maar wát is de fout die mysql teruggeeft ?

Die moet je de juiste richting op kunnen sturen ;)

Acties:
  • 0 Henk 'm!

Verwijderd

Blijven der maar een paar dingen over.
Connectie word niet gemaakt (Gegevens onjuist of verbindings problemen)
Values zijn incorrect(Bijvoorbeeld een int in een varchar stoppen).
Dit zijn twee punten die alleen jijzelf kan testen

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik de gegevens direct in MYSQL invoer dan accepteert deze gewoon de ingevoerde gegevens dus het kan dan toch niet aan de database instellingen liggen?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
bij INSERT INTO vermeld ik niet de eerste kolom in de tabel genaamd "id" en is het auto increment in de tabel. Moet ik dit ook vermelden bij het commando INSERT?

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:03

Creepy

Tactical Espionage Splatterer

Controleer nu eerst eens welke fout je echt terugkrijgt van mysql (mysql_error()) anders blijf je maar blind gokken. Dat is echt een basis iets van het debuggen.

En als je iets toe wilt voegen en je hebt net als laatste gepost: gebruik van aub de edit knop.

Edit: RobIII :w

[ Voor 13% gewijzigd door Creepy op 22-07-2010 16:16 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
Goed. Hou-mijn-handje-eens-vast uurtje is om. Debuggen mag je lekker zelf doen, vooral als het zo basic is als dit :w

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij

Pagina: 1

Dit topic is gesloten.