[PHP]Geen foutmelding, maar niks in database gezet

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Hey..

Ik ben een scriptje aan het schrijven om sommige topic titels van GOT op mijn site te krijgen.
Maar nu zit ik met 1 probleempje.. hij geeft geen foutmelding, maar hij werkt gewoon niet! :(

Kan iemand mij misschien verder op weghelpen?

Updater :
PHP:
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
include ("include/config.php");
include ("include/xml.php");

// Make a selection of the XML
$arr = array("topic_name", "topic_id", "topic_lastmodified_timestamp", "topic_messagecount", "topic_pagecount", "topic_lastmessage_id", "topic_lastposter_nickname"); 

$xml = new xml();
if ($xml->parse($arr, "http://gathering.tweakers.net/xml/list_topics/5/7")) {
  if (count($xml->items) > 0) {
    //$db->query("DELETE FROM got_topics");
    foreach ($xml->items as $key => $value) {
      if (substr_count(strtoupper($value["TOPIC_NAME"]), "Rosetta@home")) {
        $sql = "INSERT INTO got_topics VALUES ('%s','%s',%d,'%s','%s','%s',%d, %d)";
        $sql = sprintf($sql, $value["TOPIC_ID"], $value["TOPIC_NAME"], $value["TOPIC_LASTMODIFIED_TIMESTAMP"], $value["TOPIC_MESSAGECOUNT"], $value["TOPIC_PAGECOUNT"], $value["TOPIC_LASTPOSTER_NICKNAME"], $value["TOPIC_LASTMESSAGE_ID"], 1);
        mysql_query($sql) or die('Error ,query failed');
      } else if (substr_count(strtoupper($value["TOPIC_NAME"]), "SOB")) {
        $sql = "INSERT INTO got_topics VALUES ('%s','%s',%d,'%s','%s','%s',%d, %d)";
        $sql = sprintf($sql, $value["TOPIC_ID"], $value["TOPIC_NAME"], $value["TOPIC_LASTMODIFIED_TIMESTAMP"], $value["TOPIC_MESSAGECOUNT"], $value["TOPIC_PAGECOUNT"], $value["TOPIC_LASTPOSTER_NICKNAME"], $value["TOPIC_LASTMESSAGE_ID"], 2);
        mysql_query($sql) or die('Error ,query failed');
      }
    }
  }
}
?>

xml.php
PHP:
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
79
80
81
82
83
84
<?

class xml  {
var $parser;
var $current_tag="";        // Bijhouden van huidige XML tag
var $aantal = 0;            // Totaal aantal items
var $items;             // Opslaan van XML data in de vorm van een Array
var $source;                // Bron bestand
var $map_array;         // Alle te parsen tags
var $max;               // Maximaal aantal te parsen elementen


   function xml()
   {
       $this->parser = xml_parser_create();

       xml_parser_set_option($this->parser, XML_OPTION_CASE_FOLDING, true);
       xml_set_element_handler($this->parser, "tag_open", "tag_close");
       xml_set_character_data_handler($this->parser, "cdata");
   }

   function parse($arr, $file="", $max=4096)
   { 
        xml_set_object($this->parser, $this);        
        
        // Controleer of het tweede argument daadwerkelijk een array is
        if (is_array($arr))
        {    
            $file = ($file =="" && $this->source !="") ? $this->source : $file;
            while (list ($key, $val) = each ($arr)) {
                $this->map_array[$key] = strtoupper(trim($val));
            }
            $this->aantal = 0;
            $this->current_tag = "";
            $this->max=$max;
            
            // Controleer of het bestand bestaat
            if ($fp = fopen($file, "r"))
            {
                while ($data = fread($fp, 10000)) {
                    if (!xml_parse($this->parser, $data, feof($fp))) {
                        die(sprintf("XML error: %s at line %d",
                        xml_error_string(xml_get_error_code($this->parser)),
                        xml_get_current_line_number($this->parser)));
                    }
                }
                fclose($fp);
            } else echo "Kan bestand '$file' niet openen";
        } else echo "Het eerste argument is geen Array";
   }

   function tag_open($parser, $tag, $attributes)
   { 
       $this->current_tag = $tag;
   }

   function cdata($parser, $cdata)
   {
        if ($this->aantal < $this->max && 
           sizeof($this->map_array) > 0 &&
           in_array($this->current_tag, $this->map_array))
        {
            $this->items[$this->aantal][$this->current_tag] = $cdata;
            if ($this->current_tag == end($this->map_array)) {
                $this->aantal++;
            }
        }
   }

   function tag_close($parser, $tag)
   {
        $this->current_tag = "";
   }
   
   function free()
   {
        xml_parser_free($this->parser); 
   }

} 
?>


Bvd!

Maico

Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
leuk zo'n lap code.. welke regel gaat het fout?

en ja dat kan je zelf prima uitzoeken, plaats hier en daar eens wat echo-tjes van belangrijke vars, en wie weet los je dit probleem zelf zo op ;)

trouwens werkt het ook wel om in de die() de mysql_error() te laten zien.. dan weet je tenminste hoe/wat

[ Voor 23% gewijzigd door BasieP op 18-12-2005 01:03 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
BasieP schreef op zondag 18 december 2005 @ 01:01:
leuk zo'n lap code.. welke regel gaat het fout?

en ja dat kan je zelf prima uitzoeken, plaats hier en daar eens wat echo-tjes van belangrijke vars, en wie weet los je dit probleem zelf zo op ;)
Welke regel het foutgaat weet ik dus niet :P

Maar dat echo zal ik zo wel eens kijken :)

Acties:
  • 0 Henk 'm!

  • Erkens
  • Registratie: December 2001
  • Niet online

Erkens

Fotograaf

hoe staat je error_reporting?
als je toch aan het kijken bent, hoe staat je display_errors setting in php.ini?

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Naast wat BasieP zegt: begin eens met error_reporting(E_ALL); boven je code te zetten. Wie weet krijg je dan wel een error. :)
edit:
Erkens is een vieze voorkruiper. :(
:w Erkens. :>

[ Voor 18% gewijzigd door NMe op 18-12-2005 01:05 ]

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op zondag 18 december 2005 @ 01:04:
Naast wat BasieP zegt: begin eens met error_reporting(E_ALL); boven je code te zetten. Wie weet krijg je dan wel een error. :)
edit:
Erkens is een vieze voorkruiper. :(
:w Erkens. :>
hehe >:)

Bedankt bijde, maar dit geeft geen foutmelding

Btw voor php settings www.serverstrike.nl/phpinfo.php

error_reporting 2039
display_errors On
display_startup_errors Off

[ Voor 18% gewijzigd door Verwijderd op 18-12-2005 01:09 ]


Acties:
  • 0 Henk 'm!

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Anders beantwoord je de vraag van Erkens even hoe je display_errors staat. Het is heel leuk dat je dat in je script zet, maar als display_errors uit staan in je config, dan krijg je dus mooi niets te zien...

:+ @ edit

[ Voor 4% gewijzigd door Glashelder op 18-12-2005 01:10 ]

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Glashelder schreef op zondag 18 december 2005 @ 01:09:
Anders beantwoord je de vraag van Erkens even hoe je display_errors staat. Het is heel leuk dat je dat in je script zet, maar als display_errors uit staan in je config, dan krijg je dus mooi niets te zien...

:+ @ edit
als je het boven je script zet, en het staat anders in je config gaat je script voor.

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • Glashelder
  • Registratie: September 2002
  • Niet online

Glashelder

Anti Android

Als je display_errors op off staat krijg je niets te zien.

PV 4915wp op oost, 2680 wp op west, 1900 wp op zuid. pvoutput - AUX 8 kW bi bloc


Acties:
  • 0 Henk 'm!

  • BasieP
  • Registratie: Oktober 2000
  • Laatst online: 22-07-2024
Glashelder schreef op zondag 18 december 2005 @ 01:21:
Als je display_errors op off staat krijg je niets te zien.
maar daarvoor geld hetzelfde ;)
trouwens staat ie praktisch altijd aan. zeker bij eigen installs

[ Voor 14% gewijzigd door BasieP op 18-12-2005 01:27 ]

This message was sent on 100% recyclable electrons.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

@TS: krijg je trouwens een witte pagina zonder überhaupt wat erop? Of krijg je gewoon een lege pagina binnen je eigen layout? Wekt het script de indruk wel iets te doen? Druk op elk strategisch punt (minstens aan het begin van elk codeblok in een if/switch/for/while/enz) een waarde af. Welke waarde maakt niet uit, als je er maar aan kan zien waar het programma zich bevindt. Op het moment dat het script vroegtijdig stopt met het afdrukken van waardes, dan weet je waar het stopt. Zie ook P&W FAQ - Leer **** debuggen!!.

Ik stel dus voor dat je eerst even goed gaat debuggen en dan je bevindingen hier post. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op zondag 18 december 2005 @ 01:44:
@TS: krijg je trouwens een witte pagina zonder überhaupt wat erop? Of krijg je gewoon een lege pagina binnen je eigen layout? Wekt het script de indruk wel iets te doen? Druk op elk strategisch punt (minstens aan het begin van elk codeblok in een if/switch/for/while/enz) een waarde af. Welke waarde maakt niet uit, als je er maar aan kan zien waar het programma zich bevindt. Op het moment dat het script vroegtijdig stopt met het afdrukken van waardes, dan weet je waar het stopt. Zie ook P&W FAQ - Leer **** debuggen!!.

Ik stel dus voor dat je eerst even goed gaat debuggen en dan je bevindingen hier post. :P
Krijg idd een witte pagina.. (is ook buite me layout, wat hoort)

Als ik er een ' timer' ingooi dan zie ik wel hoelang hij erover doet..en dat is rond de 0.8sec. dus volgens mij doet hij toch iets ;).

En met debuggen was ik al bezig nu :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
uhm.. is dit misschien iets..

als ik voor
PHP:
4
if ($xml->parse($arr, "http://gathering.tweakers.net/xml/list_topics/5/7")) {
echo $xml;

Krijg ik wel een output, doe ik hem daarna niet meer

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

8)7

$xml->parse() returnt ook geen waarde, dus je kan hem niet zo in een if gebruiken... Laat die method true returnen bij succes (of iets anders voor mijn part :P), en false als het mislukt. Dan kun je het wel zo in een if gebruiken.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op zondag 18 december 2005 @ 02:30:
8)7

$xml->parse() returnt ook geen waarde, dus je kan hem niet zo in een if gebruiken... Laat die method true returnen bij succes (of iets anders voor mijn part :P), en false als het mislukt. Dan kun je het wel zo in een if gebruiken.
het was al laat :z

Maar dit weet ik nu..

Ik heb van :

if ($xml->parse($arr, "http://gathering.tweakers.net/xml/list_topics/5/7")) {

Even een if -> else constructie gemaakt
En hij gaat naar de else oftewel, hij pakt die regel niet/is niet goed :)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Dat zeg ik toch? Laat die parse method eens een waarde returnen...true als het lukt, false als het niet lukt. Verder een beetje offtopic, maar het afdrukken van strings in je XML-klasse is vies. Laat je XML klasse gewoon waarden returnen die je uit kan lezen in je hoofdapplicatie, dan kun je daar bepalen wat je af moet drukken. Dat is een stuk flexibeler en netter, aangezien je dan je uitvoer allemaal centraal hebt staan.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op zondag 18 december 2005 @ 12:54:
Dat zeg ik toch? Laat die parse method eens een waarde returnen...true als het lukt, false als het niet lukt. Verder een beetje offtopic, maar het afdrukken van strings in je XML-klasse is vies. Laat je XML klasse gewoon waarden returnen die je uit kan lezen in je hoofdapplicatie, dan kun je daar bepalen wat je af moet drukken. Dat is een stuk flexibeler en netter, aangezien je dan je uitvoer allemaal centraal hebt staan.
A zo :> :9

Nou igg krijg ik dan dit :


Warning: Missing argument 1 for parse() in /xxxx/test/include/xml.php on line 23
Het eerste argument is geen Array

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

:? Wat heeft dat te maken met de tips die ik gaf? Je hebt blijkbaar de aanroep van de methode aangepast? :?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
-NMe- schreef op zondag 18 december 2005 @ 13:35:
:? Wat heeft dat te maken met de tips die ik gaf? Je hebt blijkbaar de aanroep van de methode aangepast? :?
Nee.. ik laat hem de waarde returnen van parse, dat zei je toch.. ?

(Ik ben echt geen supere scripter dus denk niet dat ik eigenweis wil zijn :+)

Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Parse heeft geen waarde, want die heb je er nog niet in geprogrammeerd. Aan je aanroepende code (die if op regel 12) hoef je niets aan te passen. Aan de functiedeclaratie ook niet, maar wel aan de definitie ervan: je moet gewoon zorgen dat op de punten waar dat relevant is een waarde gereturnd wordt waar dat relevant is. Die nieuwe foutmelding die je nu krijgt kan alleen voortkomen uit een foute aanpassing in ofwel de aanroep, ofwel de declaratie van de functie, dus je doet iets niet helemaal goed. :P

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1