anoniem Geplaatst: 22 juli 2005 Delen Geplaatst: 22 juli 2005 ik heb een hele rits playlisten van een programma met de volgende structuur:[code:1:4e9659b217]<b>1</b> <n>Tieners</n> <s>076</s> <t>Dwell in Your house</t>[/code:1:4e9659b217]B = bundelnr N = bundeltitel S = nr binnen de bundel T = Titel nu wil ik met php en mysql analyseren hoevaak elk lied is geweest... Ik had het idee dat ik dan zoiets moest hebben[code:1:4e9659b217]<?php $playlist = "OPS30052004.pls"; $playlist = readfile($playlist); $lied = explode("</t>", $playlist); ?>[/code:1:4e9659b217]Dan zou er een array aangemaakt moeten worden, maar als ik dat heb gedaan en ik echo hem, dan geeft hij aan dat de offset undefined is..., maar als ik de inhoud kopieer als de var $playlist en laat dat exploden, dan werkt het prima. wat doe ik nou fout... is het overigens slim de dit te onderzoeken met een explode? [b:4e9659b217]EDIT:[/b:4e9659b217] en hoe maak ik van[code:1:4e9659b217]<b>1</b> <n>Tieners</n> <s>076</s> <t>Dwell in Your house</t>[/code:1:4e9659b217]alles op 1 regel, dus[code:1:4e9659b217]<b>1</b><n>Tieners</n><s>076</s><t>Dwell in Your house</t>[/code:1:4e9659b217] Quote Link naar reactie
anoniem Geplaatst: 23 juli 2005 Auteur Delen Geplaatst: 23 juli 2005 ik heb dit probleem nu zelf al gefixt, maar nu zit ik met iets anders. De eerste keer(als de db leeg is) werkt alles prima. De 2e keer worden alleen de eerste 2 geupdate, en dan komt er steeds 1 extra reload bij om hem erbij te krijgen. dus na 1x 3, vervolgens nog eens 2x voor 4, en dan nog eens 3x voor 5 enzovoort. op de duur ontstaat er een eternalloop(nouja, tot max exe time), waarin hij maar blijft updaten. (als er 1 nr in het bestand staat al na 4 keer) Er wordt hierbij geschreven naar een lege regel Waar gaat het mis in de volgende code [code:1:f6162e4e82]<table cellpadding="3" cellspacing="3"> <?php $playlist = "OPS12102004.pls"; $playlist = file_get_contents($playlist); $charsfout = array("<b>", "</b>", "<n>", "</n>", "<s>", "</s>", "<t>", "</t>", "'", "\r\n"); $charsgoed = array("", "", "%", "", "%", "", "%", "%end%", "", ""); $playlist = str_replace($charsfout, $charsgoed, $playlist); $lied = explode("%end%", $playlist); $aantal = count($lied)-1; for($i=0; $i<$aantal; $i++){ $data = explode("%", $lied[$i]); // $data[0] = Bundelnr // $data[1] = Bundelnaam // $data[2] = Liednr // $data[3] = Liednaam require("verbind.php"); $geupdate = "no"; $sql_read = 'SELECT *, COUNT(*) AS tablesize FROM ' . $tabel . ' WHERE `bundelnaam` = \''.$data[1].'\' AND `liednr` = \''.$data[2].'\' GROUP BY `liednr`'; $query_r = mysql_query($sql_read) or die (mysql_error()); while ($result = mysql_fetch_array($query_r)) { if ($result["tablesize"] >= "1") { $aantal = $result["aantal"]+1; $sql_update = 'UPDATE `register` SET `aantal` = \''.$aantal.'\' WHERE `bundelnaam` = \''.$data[1].'\' AND `liednr` = \''.$data[2].'\''; $query_u = mysql_query($sql_update) or die (mysql_error()); $geupdate = "yes"; } } if ($geupdate == "no"){ $sql_add = 'INSERT INTO ' . $tabel . ' (`id`, `bundelnaam`, `liednr`, `liednaam`) VALUES (\'\', \''.$data[1].'\', \''.$data[2].'\', \''.$data[3].'\')'; $query_a = mysql_query($sql_add) or die (mysql_error()); } print "<tr><td align='right'>" . $data[1] . "</td><td align='center'>".$data[2]."</td><td align='left'>" . $data[3] . "</td></tr>\n"; } ?> </table>[/code:1:f6162e4e82] de instellingen van mijn db zijn:[code:1:f6162e4e82] `id` int(11) NOT NULL auto_increment, `bundelnaam` varchar(99) NOT NULL default '', `liednr` varchar(11) NOT NULL default '', `liednaam` varchar(99) NOT NULL default '', `aantal` int(11) NOT NULL default '1', PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1;[/code:1:f6162e4e82] Quote Link naar reactie
anoniem Geplaatst: 23 juli 2005 Auteur Delen Geplaatst: 23 juli 2005 Wat is nu precies de rol van de database? Je doet iets met een file en iets met die tabellen. Ik begrijp niet goed wat je nu precies wilt. Wil je alle data vanuit die playlist in je database stoppen? en vervolgens tellen hoe vaak een liedje voorkomt? Als je dat wilt dan zou ik met foreach van alle waardes in je array die je krijgt door je explode steeds een insert query doen in je database. Misschien begrijp ik je niet goed hoor. Trouwens, voor bug-fixen op je bestaande code kan ik je aanraden om eens wat query's te echoen en te bekijken hoe die eruit zien en waarom die dus niet goed in je DB gestopt worden. Het is voor ons lastig om op deze manier je code te debuggen. Quote Link naar reactie
anoniem Geplaatst: 24 juli 2005 Auteur Delen Geplaatst: 24 juli 2005 [quote:8492522ee8="Japaveh"]Wil je alle data vanuit die playlist in je database stoppen? en vervolgens tellen hoe vaak een liedje voorkomt?[/quote:8492522ee8] Ja dat was het idee. Ik snap alleen niet hoe je die foreach dan moet gebruiken... Is dat niet wat ik doe met [code:1:8492522ee8]$lied = explode("%end%", $playlist); $aantal = count($lied)-1; for($i=0; $i<$aantal; $i++){[/code:1:8492522ee8]Zou je mij kunnen uitleggen op welke manier ik zo'n foreach gebruik (in mijn voorbeeld)? Ik heb wel gekeken op php.net/foreach maar dan nog snap ik niet hoek dat hier toepas... Quote Link naar reactie
anoniem Geplaatst: 24 juli 2005 Auteur Delen Geplaatst: 24 juli 2005 [quote:07f91ce3b3="ANNErd"][quote:07f91ce3b3="Japaveh"]Wil je alle data vanuit die playlist in je database stoppen? en vervolgens tellen hoe vaak een liedje voorkomt?[/quote:07f91ce3b3] Ja dat was het idee. Ik snap alleen niet hoe je die foreach dan moet gebruiken... Is dat niet wat ik doe met [code:1:07f91ce3b3]$lied = explode("%end%", $playlist); $aantal = count($lied)-1; for($i=0; $i<$aantal; $i++){[/code:1:07f91ce3b3]Zou je mij kunnen uitleggen op welke manier ik zo'n foreach gebruik (in mijn voorbeeld)? Ik heb wel gekeken op php.net/foreach maar dan nog snap ik niet hoek dat hier toepas...[/quote:07f91ce3b3] Op zich is de foreach niet strikt noodzakelijk, en het zal je probleem ook niet oplossen. Het is gewoon een nettere manier om deze string waarde voor waarde af te lopen . Daarom heet het ook foreach. Echo je strings eens en zie welke querys uitgevoerd worden. Alleen op deze manier kun je er achter komen waarom het pas bij de tweede keer werkt. Quote Link naar reactie
anoniem Geplaatst: 25 juli 2005 Auteur Delen Geplaatst: 25 juli 2005 dat heb je dan verkeerd begrepen, het werkt juist alleen de allereerste keer... [b:d7a5384297]EDIT: [/b:d7a5384297]EUREKA: In de while, gebruik ik ook een var die aantal heet, die gooit de andere var aantal dus in de war... Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen