Inderdaad, en op deze pagina staan een paar prima functies daarvoor (in de comments): http://nl3.php.net/xml_parsequote:Op woensdag 14 januari 2009 07:29 schreef SuperRembo het volgende:
[..]
Je loopt recursief door de xml tree heen en bouwt ondertussen de array op. Lijkt me vrij recht toe recht aan.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $row = 0; $row_2= 0; $dump = array(); foreach ($xml AS $data){ $dump[$row] = $data; $row++; } foreach ($dump AS $data_2){ echo $data_2->NAAM; echo '<br />'; } |
En dat is een probleem omdat?quote:Op woensdag 14 januari 2009 09:50 schreef Likkende_Lassie het volgende:
Ik probeer het volgende, en ik kan niet anders dan de atribute op te roepen als $data_2->NAAM ipv $data_2[0];..
[ code verwijderd ]
Zorgen dat er arrays in komen, en geen objectenquote:Op woensdag 14 januari 2009 11:05 schreef Likkende_Lassie het volgende:
ik het niet zo wil aan roepen![]()
dus hoe dat te doen?
Je kan die hash die door simplexml wordt gemaakt toch omzetten naar elk formaat dat je zelf wil? Daar kun je gewoon je eigen routine voor schrijven. Of je zou je kunnen afvragen waarom je perse de data als array wil benaderen, wat is precies het voordeel?quote:Op woensdag 14 januari 2009 11:05 schreef Likkende_Lassie het volgende:
[..]
ik het niet zo wil aan roepen![]()
dus hoe dat te doen?
1 2 3 4 5 6 7 | foreach($xml->body[0]->attributes() as $a => $b) { if($a=='type') { echo $a,'="',$b,"\"</br>"; }else{ } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | $dom = new DomDocument(); $dom->load('/uploads/'.$_GET['option_2']); foreach ($dom->documentElement->childNodes as $articles) { if ($articles->nodeType == 1 && $articles->nodeName == "INFO") { foreach ($articles->childNodes as $item) { if ($item->nodeType == 1 AND $i < 1) { $files[0][] = $item->nodeName; } } $i++; } } ?> |
1 2 3 4 5 6 7 8 9 10 | images.id AS imageID, images.filex , images.filey FROM images_tree LEFT JOIN images ON images.cat_id = images_tree.id WHERE images_tree.tree_id = '1' GROUP BY images_tree.id ORDER BY images_tree.title LIMIT 20, 20 |
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 | -- Tabel structuur voor tabel `images` -- CREATE TABLE IF NOT EXISTS `images` ( `id` int(10) unsigned NOT NULL auto_increment, `cat_id` mediumint(8) unsigned NOT NULL, `user_id` mediumint(8) unsigned NOT NULL, `user_ip` varchar(32) NOT NULL, `filename` varchar(32) NOT NULL, `filedate` date NOT NULL, `filetype` char(1) NOT NULL, `filesize` int(10) unsigned NOT NULL, `filecrc` varchar(15) NOT NULL, `filex` mediumint(8) unsigned NOT NULL, `filey` mediumint(8) unsigned NOT NULL, `views` int(10) unsigned NOT NULL, `vote` tinyint(3) unsigned NOT NULL, `votes` mediumint(8) unsigned NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `filesize` (`filesize`,`filecrc`,`filex`,`filey`,`cat_id`), KEY `cat_id` (`cat_id`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; -- -------------------------------------------------------- -- -- Tabel structuur voor tabel `images_tree` -- CREATE TABLE IF NOT EXISTS `images_tree` ( `id` mediumint(8) unsigned NOT NULL auto_increment, `tree_id` mediumint(8) unsigned NOT NULL, `title` varchar(32) NOT NULL, `description` varchar(255) NOT NULL, `images` mediumint(8) unsigned NOT NULL, `images_size` bigint(20) unsigned NOT NULL, PRIMARY KEY (`id`), KEY `id` (`id`,`tree_id`), KEY `title` (`title`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1; |
1 2 3 | 1 SIMPLE images_tree index NULL title 34 NULL 1364 Using where; Using temporary 1 SIMPLE images ref cat_id cat_id 3 ****.images_tree.id 54 |
Dat heb je wanneer je LIMIT gebruikt.quote:Op donderdag 15 januari 2009 17:16 schreef Chandler het volgende:
Ja die index werkt idd heerlijk
-edit-
alleen bij de eerste pagina's scheelt het aardig, maar hoever ik in de database kom (qua records) hoe langzamer
ik doel eropquote:
1 2 3 4 5 | $PLAATJE = "rand(1,9)" echo "<img src =\"leukplaatje".$PLAATJE.".jpg\"/> "; ?> |
nee ik bedoel weren tegen sql injecties.quote:Op donderdag 15 januari 2009 20:36 schreef Xcalibur het volgende:
wat wil je dan beveiligen? en waarom?![]()
het random plaatje wat je post is op zich hartstikke leuk natuurlijk, maar heeft niks met beveiling te maken
Door te zorgen dat je in ieder geval niet de 25 gevaarlijkste programmeerfouten maakt.quote:Op donderdag 15 januari 2009 20:37 schreef cablegunmaster het volgende:
[..]
nee ik bedoel weren tegen sql injecties.
weren tegen kut users die mijn site proberen plat te leggen.
users die mn database proberen te mollen!
Pagina 1. 0.01quote:Op donderdag 15 januari 2009 17:37 schreef GlowMouse het volgende:
Dat heb je wanneer je LIMIT gebruikt.
Mag ik weten hoe snel de query is op pagina 1, en op pagina 10?
Mooi lineairquote:Op donderdag 15 januari 2009 23:33 schreef Chandler het volgende:
[..]
Pagina 1. 0.01
Pagina 10 0.09
Pagina 20 0.13
Pagina 50 0.3
Pagina 69 0.44
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 | $nr = 1; while($row = mysql_fetch_array($result)) { if (in_array($row['user'],$flow)) { $team = "Flow"; } else { $team = "Allstars"; } echo "<tr>"; echo "<td>"; echo $nr; echo "</td>"; echo "<td>"; echo $row['user']; echo "</td>"; echo "<td>"; echo $team; echo "</td>"; echo "<td>"; $points = $row['points']; $points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']); $points = $points + $points2; $points = round($points, 2); echo $points; echo "</td>"; |
1 2 3 4 5 6 7 8 9 10 11 12 13 | { $user = $row['user']; $points = $row['points']; $points2 = log($row['games'] + 1 ) * ($row['wins'] / $row['games']); $points = $points + $points2; mysql_query("UPDATE ur_pstats SET points2 = '$points' WHERE user = '$user"); } |
Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:quote:Op donderdag 15 januari 2009 23:42 schreef GlowMouse het volgende:
[..]
Mooi lineairNadeel van LIMIT, hij kan nooit weten wat er op de 59ste pagina komt zonder eerst de eerste 58 op te halen.
Vantevoren een tabel vullen met een extra veld waarin je aangeeft op welke plek welke foto komt. Op dat veld kun je indexeren en in je query kun je dan WHERE ipv LIMIT gebruiken.quote:Op vrijdag 16 januari 2009 08:48 schreef Chandler het volgende:
[..]
Goed, maar hoe kan ik dit versnellen cq optimaliseren? D:
1 2 3 4 5 6 7 8 | <strong class="TitleOff"> <a href="[b]url_die_ik_zoek[/b]">[b]Titel die ik zoek[/b]</a> </strong> <strong class="datetime"> <span style="font-size:10px;">Aired</span> <span style="font-size:10px;">[b]Datum die ik zoek[/b]</span> </strong>[b]Omschrijving die ik zoek[/b]</p> |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | @$dom->loadHTML($result); $xpath = new DOMXPath($dom); // -- Alle links $hrefs = $xpath->evaluate("/html/body//ol//li//a"); // -- Links doorlopen for ($i = 0; $i < $hrefs->length; $i++) { $href = $hrefs->item($i); $url = $href->getAttribute('href'); echo $url."<br />"; } |
Zo moeilijk is Xpath niet hoor ;)quote:Op vrijdag 16 januari 2009 15:25 schreef Roy_T het volgende:
Je zou eerst alle <p>'s met class "info" kunnen zoeken, en vervolgens daar doorheen loopen en binnen iedere gevonden <p> zoeken op link (href en titel), de tweede <span>, etc.
1 2 3 4 | foreach($nodes as $node) { $a = $node->getAttribute('href'); } |
Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeftquote:Op zaterdag 17 januari 2009 03:04 schreef Gloeidoos het volgende:
[..]
Zo moeilijk is Xpath niet hoor
[ code verwijderd ]
Hiermee kan je wel vooruit denk ik.
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 | if (isset($_GET['activate'])) { $activate = (int) $_GET['activate']; } else { $activate = 0; } if (isset($_GET['code'])) { $code = $_GET['code']; } else { $code = 0; } if ( ($activate > 0) && (strlen($code) == 32)) { include('include/inc_connect.php'); $query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;"; $result = mysql_query($query) or die(mysql_error()); if (mysql_affected_rows() == 1) { echo "<b class=\"title\">Geactiveerd</b>"; echo "<p>Je account is nu actief, je kan nu inloggen.</p>"; } else { echo "<b class=\"title\">Activeren niet succesvol</b>"; echo "<p>Je account kon niet geactiveerd worden. Kijk of de link klopt of neem contact op met onze <a href=\"mailto:xxxxxxxx\">Administrator</a></p>"; mysql_close(); } } else { echo "<b class=\"title\">Activatie link klopt niet!</b>"; echo "<p>Probeer opnieuw</p>"; } ?> |
Hehe het was al laat.quote:Op zaterdag 17 januari 2009 08:57 schreef Roy_T het volgende:
[..]
Alleen werkt dit natuurlijk niet, omdat een <p> geen href attribuut heeft
Wat heb je gedaan om te debuggen? Toen je om te debuggen "$query = "UPDATE users SET active_code = NULL WHERE user_nr = '".$active."' AND active_code = '".$code."' LIMIT 1 ;";" eens gewoon echode, wat kreeg te toen te zien?quote:Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
[ code verwijderd ]
Handig activeringssysteem. Code "'='' or ''='" (aanvullen met spaties tot 32 tekens) is altijd goedquote:Op zaterdag 17 januari 2009 12:24 schreef mrpaplu het volgende:
hey mensen, ik ben bezig met een pagina om je account te activeren. als je bent geregistreerd krijg je een mail met een link. (dat is nu nog gewoon op de site). De link ziet er uit als activate.php?activate=$activate&code=$code. Hier is $active het user_nr en $code de code die in de kolom active_code in de database is gezet. Alles werkt leuk en aardig, maar volgens mij doet hij het niet door de sql query. Hij veranderd namelijk ook niks in de database, maar hij komt wel door de check of $active > 0 en strlen($code) ==32. Iemand enig idee wat ik fout doe?
[ code verwijderd ]
<?php echo '<?php echo \'hoi!\'; ?>'; ?>quote:Op zondag 18 januari 2009 15:45 schreef cablegunmaster het volgende:
moet alleen nog weten hoe ik de php kan laten weergeven voor documenten , in html![]()
that allquote:Op zondag 18 januari 2009 16:03 schreef GlowMouse het volgende:
[..]
<?php echo '<?php echo \'hoi!\'; ?>'; ?>
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |