array_intersect geeft alleen de waarde terug die in beide arrays voorkomen.quote:Op maandag 31 oktober 2005 13:56 schreef Chandler het volgende:
@Roonaan: ik ben nu al een tijd bezig je functie te ontleden maar heb een vraag en kan daar niet een begrijpelijk antwoord op vinden op www.php.net
waar staan de volgende functie voor!
array_intersect ? want uit de uitleg en voorbeeld kom ik niet
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 | $vorigeTrekking = array("eric" => array("eric", "marc"), "marc" => array("marc", "eric"), "tess" => array("tess", "joop", "kees"), "joop" => array("joop", "tess", "kees", "loes"), "kees" => array("kees", "tess", "joop"), "loes" => array("loes"), "joke" => array("joke")); $alleDeelnemers = array_keys($vorigeTrekking); $lootenSelect = array(); $includeUsers = array(); $over = array(); echo '<pre>'; for ($x = 0; $x < 100; $x++) { $doBreak = true; foreach ($vorigeTrekking as $kiesUser => $excludeUsers) { // bereken users die niet mag kiezen $includeUsers = $alleDeelnemers; $over = $alleDeelnemers; foreach ($excludeUsers as $id => $value) { foreach ($over as $fID => $fName) { if ($fName == $value) { unSet($over[$fID]); } } } echo '<br>'; foreach ($lootenSelect as $id => $value) { foreach ($over as $fID => $fName) { if ($fName == $value) { unSet($over[$fID]); } } } echo 'user : ' . $kiesUser . "<br /><br /><br />"; echo 'mag niet kiezen : ' . implode(", ", $excludeUsers) . "<br />"; echo 'mag wel kiezen : ' . implode(", ", $includeUsers) . "<br />"; echo 'reeds gekozen : ' . implode(", ", $lootenSelect) . "<br />"; echo 'blijft over : ' . implode(", ", $over) . "<br />"; if (count($over) > 0) { $rnd = $alleDeelnemers[array_rand($over)]; echo 'random : ' . $rnd . "<br>"; $lootenSelect[$kiesUser] = $rnd; echo '<hr>'; } else { echo 'random : geen mogelijkheid meer over, start over'; $doBreak = false; } } if ($doBreak == true) { break; } } echo '</pre>'; echo 'selected users'; echo '<pre>'; var_dump($lootenSelect); echo '</pre>'; ?> |
Ik heb het opgelost! Voor de nieuwsgierigen, er kwam een "." voor in de meegestuurde GET waarde. Het cookie lijkt onmogelijk uit te lezen door die punt.quote:Op maandag 31 oktober 2005 14:09 schreef Pronk het volgende:
Ik heb een probleem met cookies die moeten worden geplaatst en uitgelezen aan de hand van de GET waarde die aan een de pagina wordt meegegeven.
[ code verwijderd ]
Het cookie wordt wel geplaatst (met de juiste waarde)
Als ik nu nog een keer dezelfde GET waarde aan de pagina mee geef dan zou er geen "blabla" op mijn scherm mogen verschijnen.
Dit gebeurt wel, dus het cookie wordt toch niet goed uitgelezen.
Heeft iemand een idee waarom dit fout gaat?
Zolang PHP nog steeds crasht als je een recursieve functie op wat grotere datasets uitvoert (stack overflow) wijk ik toch uit naar andere talen om een aanpak te testenquote:Op maandag 31 oktober 2005 15:23 schreef Ro�a� het volgende:
Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | $NextDir = "klein.php?dir=".$DirArray[$DirIndex + 1]; $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; $NextDirNam = $DirArray[($DirIndex + 1)]; $PrevDirNam = $DirArray[($DirIndex - 1)]; if ($DirIndex == 0) { $PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)]; $PrevDirNam = $DirArray[(Count($DirArray) - 1)]; } if (($DirIndex + 1) > (Count($DirArray) - 1)) { $NextDir = "klein.php?dir=".$DirArray[0]; $NextDirNam = $DirArray[0]; ?> |
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 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 | <HTML> <HEAD> <TITLE>Fotoalbum</TITLE> </HEAD> <BODY TEXT='#000000' LINK='#000000' VLINK='#000000' ALINK='#000000'> <TABLE WIDTH='800' BORDER='1' bordercolor='#FFFFFF' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> <TR> <TD bordercolor='#000000' bgcolor='#CCCCCC'><CENTER><STRONG>Foto overzicht: <? echo"$_GET[dir]"; ?></STRONG></CENTER></td> </TR> </TABLE> <? function getDirList ($dirName) { static $result_array=array(); $d = dir($dirName); while($entry = $d->read()) { if ($entry != "." && $entry != "..") { if (is_dir($dirName."/".$entry)) { array_push($result_array,$entry); } } } $d->close(); sort($result_array); return $result_array; } function getDirContents ($dirName) { static $result_array=array(); $d = dir($dirName); while($entry = $d->read()) { if ($entry != "." && $entry != "..") { if (!is_dir($dirName."/".$entry)) { str_replace(" ", "[spc]",(str_replace("&", "[amp]",$entry))); array_push($result_array,$entry); } } } $d->close(); sort($result_array); return $result_array; } $DirArray = getDirList("./"); for($i=0; $i < count($DirArray); $i++) { if($_GET['dir']==$DirArray[$i]) { $DirIndex = $i; } } $NextDir = "klein.php?dir=".$DirArray[$DirIndex + 1]; $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; $NextDirNam = $DirArray[($DirIndex + 1)]; $PrevDirNam = $DirArray[($DirIndex - 1)]; if ($DirIndex == 0) { $PrevDir = "klein.php?dir=".$DirArray[(Count($DirArray) - 1)]; $PrevDirNam = $DirArray[(Count($DirArray) - 1)]; } if (($DirIndex + 1) > (Count($DirArray) - 1)) { $NextDir = "klein.php?dir=".$DirArray[0]; $NextDirNam = $DirArray[0]; } ?> <TABLE WIDTH='800' BORDER='0' CELLSPACING='0' CELLPADDING='0' ALIGN='CENTER'> <tr> <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$PrevDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$PrevDirNam);?></td></tr></table><td> <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='index.php';" valign='top' align="center" bordercolor='#000000'>Terug naar het album overzicht</td></tr></table><td> <td width='33%' valign='top'><table width='100%' height='50' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td style='CURSOR: hand' onMouseover="this.bgColor='#CCCCCC'" onMouseout="this.bgColor='#FFFFFF'" onclick="window.location='<?echo"$NextDir";?>';" valign='top' bordercolor='#000000'><?echo str_replace(".", " ",$NextDirNam);?></td></tr></table><td> </tr> </TABLE> <table width="800" border='0' cellspacing='0' cellpadding='0' align="center"><tr> <? $Column = 1; $DirName = $DirArray[$DirIndex]; $CurrentDir = "./".$DirName; $DirContents = getDirContents($CurrentDir); for($i=0; $i < count($DirContents); $i++) { echo "<td height='140' width='20%'><table width='100%' height='100%' bordercolor='#FFFFFF' border='1' cellspacing='0' cellpadding='3'><tr><td height='100%' style='CURSOR: hand' onMouseover=\"this.bgColor='#CCCCCC'\" onMouseout=\"this.bgColor='#FFFFFF'\" onclick=\"window.location='groot.php?dir=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirName)))."&image=".str_replace(" ", "[spc]",(str_replace("&", "[amp]",$DirContents[$i])))."&index=".$i."';\" valign='top' align='center' bordercolor='#000000'><img vspace='10' width='125' border='0' src='".$CurrentDir."/".$DirContents[$i]."'></td></tr></table></td>"; if($Column==5) { $Column = 0; echo "</tr>"; } $Column++; } if($Column != 0) { for($i=$Column; $i<8;$i++){ echo "<td>"; } } echo "</table>"; ?> </BODY></HTML> ?> |
Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?quote:Op woensdag 2 november 2005 11:19 schreef SuperRembo het volgende:
Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch.
Door bv dit te doen:quote:Op woensdag 2 november 2005 11:57 schreef Pronk het volgende:
[..]
Dit heb ik nagekeken en dit klopt natuurlijk helemaal, maar wat kan ik nu doen om te zorgen dat die 'notice' verdwijnt. Dus hoe kan ik zorgen het script van te voren weet dat het niet verder of terug moet tellen?
1 2 3 | $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1]; } |
1 2 | <?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?> |
1 2 3 4 5 6 7 8 | for($i=0;$i<count($Bericht);$i++){ $query = "INSERT INTO messages (name,email,bla,woonplaats,date,message) VALUES ('".$Bericht[$i][0]."','".$Bericht[$i][1]."','".$Bericht[$i][2]."', '".$Bericht[$i][3]."','".$Bericht[$i][4]."','".$Bericht[$i][5]."')"; mysql_query($query)or die(mysql_error()); } ?> |
1 2 | 'Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje' |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | $array=file(berichten.txt); //Hiermee zet hij je txt file in een array, waarbij elke regel een element is. foreach ($array as $line){ //Hiermee stap je door de array heen $line=str_replace(''','',$line); //hiermee haal je de ' weg $stuk=explode(',',$line); //hiermee verdeel je de regel in losse elementen $query="INSERT INTO database (id,naam,email,iets,woonplaats,datum,bericht) VALUES(0,'".$stuk[0]."','".$stuk[1]."','".$stuk[2]."','".$stuk[3]."','".$stuk[4]."','".$stuk[5]."')"; mysql_query($query); // naar database schrijven } ?> |
Voor $NextDir moet je een zelfde soort controle inbouwen (voor als je aan het eind van de lijst bent).quote:Op woensdag 2 november 2005 12:37 schreef Pronk het volgende:
Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
Forum Opties | |
---|---|
Forumhop: | |
Hop naar: |