Thanks. Zat allemaal moeilijk te doen met die array's vergelijken, maar dat werkte allemaal niet.quote:Op dinsdag 6 oktober 2009 13:58 schreef Light het volgende:
Aangenomen dat je subqueries kunt gebruiken:
[ code verwijderd ]
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 | ( [1] => 2 [2] => 2 [3] => 0 [6] => 1 [8] => 1 [10] => 0 [11] => 1 [12] => 4 [13] => 2 [14] => 1 [27] => 1 [28] => 1 [33] => 1 ) gisteren:Array ( [1] => 2 [2] => 0 [3] => 0 [5] => 1 [6] => 2 [7] => 1 [8] => 1 [9] => 1 [11] => 0 [12] => 4 [13] => 3 [14] => 1 ) totaal:Array ( [12] => 8 [13] => 5 [1] => 4 [6] => 3 [14] => 2 [8] => 2 [2] => 2 [9] => 1 [5] => 1 [7] => 1 [11] => 1 [26] => 0 [27] => 0 [28] => 0 [33] => 0 [17] => 0 [16] => 0 [3] => 0 [4] => 0 [10] => 0 [15] => 0 ) geen hits SQL: SELECT * FROM `linkpartners` WHERE ID NOT in(1, 2, 3, 6, 8, 11, 12, 13, 14, 5, 7, 9) |
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 | $totaal = array(); foreach(array_keys($hitsArray) as $key) { if(isset($hitsArrayYesterday[$key])) { $totaal[$key] = $hitsArray[$key] + $hitsArrayYesterday[$key]; } } foreach(array_keys($hitsArrayYesterday) as $key) { if(!isset($totaal[$key])) { $totaal[$key] = $hitsArrayYesterday[$key]; } } $SQLnohits = "SELECT * FROM `linkpartners` WHERE ID NOT in("; foreach(array_keys($totaal) as $key) { $SQLnohits .= $key .", "; } $SQLnohits = substr($SQLnohits, 0, -2) .")"; $querynohits = mysql_query($SQLnohits); while($row = mysql_fetch_object($querynohits)) { $totaal[$row->ID] = 0; } arsort($totaal); ?> |
Laat je niet een komma teveel genereren?quote:Op dinsdag 6 oktober 2009 15:28 schreef pc-fr34k het volgende:
Ik had al eerder hier hulp gevraagd voor dit probleem, dacht dat het goed was maar blijkbaar nog niet. Ik heb dus 3 arrays in totaal. $hitsArray staan de hits per partner van vandaag en in $hitsArrayYesterday staan die van gisteren. Die worden samengevoegd in $totaal, waarna de overige partners zonder hits worden binnengehaalt.
Arrays:
[ code verwijderd ]
Code:
[ code verwijderd ]
Wie o wie heeft door wat er nou fout is?
Bedankt..
Daar is dit stuk voorquote:Op dinsdag 6 oktober 2009 15:55 schreef Lantashh het volgende:
[..]
Laat je niet een komma teveel genereren?
1 2 3 | $SQLnohits = substr($SQLnohits, 0, -2) .")"; ?> |
Dat gaat goed tot je een keer een array met maar 1 element hebt.quote:Op dinsdag 6 oktober 2009 16:36 schreef pc-fr34k het volgende:
[..]
Daar is dit stuk voor
[ code verwijderd ]
Als je kijkt naar die uiteindelijke query zie je ook dat het klopt.(onderaan die array's in dat eerste stuk)
1 2 3 | $keys = implode(', ', array_keys($totaal)); ?> |
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 | error_reporting(E_ALL); class main { function test() { echo 'main:test()<br />'; } } class sub extends main { function test() { echo 'main:submodule:test()<br /'; parent::test(); } public function test2() { echo 'main:submodule:test2()<br />'; $this->test(); } } $x = new main(); $x->test(); $x->test2(); ?> |
1 |
gebruik GREATEST(0, aantal-2)quote:Op woensdag 7 oktober 2009 20:45 schreef Swetsenegger het volgende:
[ code verwijderd ]
Hoe voorkom ik nou dat aantal op -1 komt te staan als er onverhoopt maar 1 aantal was voor de query?
Wat de copulatie doet dit??quote:
1 |
Tnx, ik dacht dat het via een de hoofdclass overgenomen zou worden (denk net andersom blijkbaar).quote:Op woensdag 7 oktober 2009 20:45 schreef GlowMouse het volgende:
je moet ook new sub(); doen, anders gebruik je de eerste class.
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 | error_reporting(E_ALL); class main { public function test() { echo 'main:test()<br />'; } } class db extends main { var $secret = 123; function set() { $this->secret = true; } function abc() { echo 'abc'; echo $this->secret; } } class sub extends main { public function test() { echo 'main:submodule:test()<br />'; parent::test(); } public function test2() { echo 'main:submodule:test2()<br />'; $this->test(); } public function start() { db::set(); } public function woei() { db::abc(); } } $x = new sub; $x->woei(); echo '<hr>'; $x->test2(); ?> |
quote:Op dinsdag 6 oktober 2009 18:58 schreef Light het volgende:
[..]
Dat gaat goed tot je een keer een array met maar 1 element hebt.
Het kan veel overzichtelijker en korter:
[ code verwijderd ]
1 2 3 4 5 6 7 8 9 | foreach(array_keys($hitsArray) as $key) { if(!isset($totaal[$key])) { $totaal[$key] = $hitsArray[$key]; } } ?> |
1 2 3 4 5 6 7 8 9 | foreach(array_keys($hitsArrayYesterday) as $key) { if(!isset($totaal[$key])) { $totaal[$key] = $hitsArrayYesterday[$key]; } } ?> |
1 2 3 4 5 | unset($_SESSION['cardid']); // Stop de kaart in een sessie. $_SESSION['cardid'] = $_POST['cardid']; ?> |
omdat hij dat niet doet. dat is juist het probleemquote:Op donderdag 8 oktober 2009 18:28 schreef slacker_nl het volgende:
$_SESSION['cardid'] = $_POST['cardid']; overwrite het toch gewoon, dus waarom unsetten?
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 | $directory="Icons"; $results = array(); $handler = opendir($directory); while ($file = readdir($handler)) { if ($file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess"){ $currentModified = filectime($directory."/".$file); $file_names[] = $file; $file_dates[] = $currentModified; } } closedir($handler); arsort($file_dates); //Match file_names array to file_dates array $file_names_Array = array_keys($file_dates); foreach ($file_names_Array as $idx => $name) $name=$file_names[$name]; $file_dates = array_merge($file_dates); $i = 0; //Loop through dates array and then echo the list foreach ($file_dates as $$file_dates){ $j = $file_names_Array[$i]; $file = $file_names[$j]; $i++; echo "Latest icons: $file<br/>"; } ?> |
Gedaanquote:
Weet niet of het sneller is, maar..quote:Op vrijdag 9 oktober 2009 19:47 schreef WebbySP het volgende:
Hoi,
ik werd naar dit topic verwezen, dus vandaar hier nog maar eens :
Ik heb een pagina waarop een aantal duizend icons te vinden zijn. Alles werkt perfect, alleen wil ik nu een dingetje toevoegen, namelijk : de laatste (3) toevoegingen. Oftewel, de nieuwste 3 icons.
Ik heb nu een scriptje (zie hieronder) die de hele directory doorloopt en dan vervolgens ALLE icons weergeeft in een lijst.
Niet alleen duurt het (te) lang voordat ie alles heeft doorgespit, maar ook moeten er maar 3 weergegeven worden.
Is het mogelijk om het script aan te passen dat ie sneller werkt én ook alleen de laatste 3 icons alleen in een lijstje weergeeft ?
[ code verwijderd ]
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 | $directory="pics/aruba_2009/"; $max = 3; $results = array(); $handler = opendir($directory); while ($file = readdir($handler)) { if ($file != '.' && $file != '..' && $file != "robots.txt" && $file != ".htaccess"){ $date = filemtime($directory."/".$file); $date = filectime($directory."/".$file); $file_dates[$date][] = $file; } } closedir($handler); krsort($file_dates); $last_three = array_slice($file_dates,0,$max); $i = 0; foreach($last_three as $files) { foreach($files as $file) { if ($i < $max) { print "$file \n"; $i++; } else { break 2; } } } ?> |
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |