abonnement Unibet Coolblue Bitvavo
pi_31837436
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
array_intersect geeft alleen de waarde terug die in beide arrays voorkomen.

-r-
pi_31837710
ok, dan heb ik weer wat geleerd; jammer dat ze dat niet in het nederlands op php.net hebben staan maaruh goed weer wat geleerd
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31838281
@Roonaan: Het volgende is mijn uitkomst, toch wil ik je nog bedanken voor het plaatsen van een door jou geschreven code; je hebt me namelijk veel inzicht gegeven en laten zien dat ik nog heel veel moet leren.

Graag zou ik comments willen zien op het stukje dat ik heb geschreven.

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>';

?>


het idee is volgens mij het zelfde als die van jou maar dan met wat minder moelijke onderdelen

The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31838954
Commentaar: je gebruikt nog steeds engelse en nederlandse variabelenamen door elkaar. Je naamgeving is erg slordig. Tevens ben ik nog steeds overtuigd dat een recursieve aanpak hiervoor beter is.

-r-
pi_31839037
Okey... de variabelbenamingen kunnen beter, en zekers als je NL/ENG bedoelt maar daar heb ik helaas wel vaker last van, zal me ooit (spoedig) eens een vaste methode moeten aanleren.. en waarom denk je dat een recursive aanpak beter is? zou je dat eens kunnen uitleggen?

Heb je trouwens de code getest? hij doe't echt tis niet te geloven hehe..
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31840094
Recursief? Omdat als je het IRL zou doen het in principe ook een recursieve happening is :-) Meer dan een foreach. Zakdoekje leggen is wel weer loop-based daarentegen.

Getest? Gewoon extra debug lines laten outputten en vervolgens een peer keer draaien.

Die ob_start/ob_end_clean/ob_end_flush zat er pas heel laat in.

-r-
pi_31840935
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?
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.
Ja lekker!
pi_31842066
@Roonaan; je zult ongetwijfeld gelijk hebben (ps ik reageer later op email )

-edit-

zelf gefixt

[ Bericht 65% gewijzigd door Chandler op 31-10-2005 17:25:29 ]
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31843202
ps.

Ik heb net Wamp geinstalleerd (de laatste versie, php,mysql,apache etc) nu krijg ik echter steeds fout meldingen bij dit soort dingen.

echo parseTemplate(loadTemplate("./template.tpl"));

dat wil het nu zien als dit

$tpl = loadTemplate("./template.tpl");
echo parseTemplate($tpl);

maar dat wil ik dus weer niet, want het 1e voorbeeld is toch correct coding? en waar kan ik die setting in php.ini vinden cq veranderen?

Tnx
The people who lost my respect will never get a capital letter for their name again.
Like trump...
pi_31844610
quote:
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.
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 testen
pi_31890938
Ik heb een fotoalbum (deels zelf gemaakt / deels gedownload)
en deze geeft op de thumbnail pagina (soms, afhankelijk van het geladen album) de volgende notices:

Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 51

Notice: Undefined offset: -1 in D:\Data\WebDesign\pronkmedia.nl\fotoalbum\klein.php on line 53


Regel 49 t/m 59 zijn de volgende regels:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php

$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) &gt; (Count($DirArray) - 1)) {
$NextDir = "klein.php?dir=".$DirArray[0];
$NextDirNam = $DirArray[0];

?>

Hier moet het dus ergens fout gaan, ziet iemand misschien wat er mis gaat? Hieronder staat de volledige code van de pagina: (deze pagina van het fotoalbum leest een directory uit en maakt thumbnails)


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> 
?> 


Het script werkt overigens gewoon goed, ik wilde alleen alle notices wegwerken.
En deze krijg ik maar niet weg!
Ja lekker!
pi_31891522
Als $DirIndex = 0 is, dan krijg je hier $DirArray[$DirIndex - 1] die notice op. De array begint bij 0, dus -1 bestaat niet. Logisch.
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
pi_31892524
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.
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?
Ja lekker!
pi_31892939
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?
Door bv dit te doen:
1
2
3
if ($DirIndex > 0) {
    $PrevDir = "klein.php?dir=".$DirArray[$DirIndex - 1];
}

Er zijn natuurlijk nettere oplossingen te bedenken omdat je dit meerdere keren moet doen, maar dit is één manier iig

[ Bericht 3% gewijzigd door JeRa op 02-11-2005 12:24:07 ]
pi_31893470
Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
Ja lekker!
  woensdag 2 november 2005 @ 19:59:44 #191
76312 sh4dow
¯¯¯¯¯¯¯¯¯
pi_31906806
Om nog even terug te komen op m'n vraag.

Ik heb een .txt bestand met gastenboek berichten van een oud script. Nu heb ik een nieuw gastenboek met MySQL. Nu wil ik de oude berichten uit het txt bestand overzetten naar de MySQL database.

Hier een stukje van het data.txt bestand:

1
2
<?php $Bericht[] = array('Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'); ?>
<?php $Bericht[] = array('Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'); ?>


Hoe krijg ik deze arrays nu in de database? Ik ben al een paar dagen bezig geweest, maar ik kom er echt niet uit.
pi_31907371
heb je een database met een table messages aangemaakt?

Open het bestand data.txt.
Zet onderaan het bestand de volgende code :
1
2
3
4
5
6
7
8
<?php
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());
}
?>

Verander de bestandsnaam in data.php
Zet hem in een directory waarvanuit je php bestanden kunt uitvoeren
Roep data.php aan in je browser.

Lijkt me niet zo moeilijk toch?

[ Bericht 10% gewijzigd door ikke_ook op 02-11-2005 20:28:28 ]
  FOK!-Schrikkelbaas woensdag 2 november 2005 @ 20:20:18 #193
1972 Swetsenegger
Egocentrische Narcist
pi_31907551
Eerst laadt je gewoon de txt gewoon in een text editor en met de replace functie strip je <?php $Bericht[] = array( en ); ?>
Dan hou je dus
1
2
'Patrick','iemand@hotmail.com',' ','Herveld','14-09-2004 21:46:28','Berichtje'
'Thomas','iemand@hotmail.com',' ','Hoogkerk','14-09-2004 23:16:05','Berichtje'

over.
Ik ga er van uit dat elk bericht volledig op 1 regel staat? of staan er in 'berichtje' ook enters?

Even van het eerste uitgaand:
http://nl3.php.net/manual/nl/function.file.php

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$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

}
?>
  FOK!-Schrikkelbaas woensdag 2 november 2005 @ 20:21:07 #194
1972 Swetsenegger
Egocentrische Narcist
pi_31907581
Die van ikke ook is een stuk slimmer
  woensdag 2 november 2005 @ 20:31:39 #195
76312 sh4dow
¯¯¯¯¯¯¯¯¯
pi_31908012
Ja ik heb de DB al klaar, ik ga nu even proberen die data.txt te includen en dan het script van ikke_ook te draaien.

Er zitten wel <BR> tags in het bestand
pi_31908215
in welk bestand zitten <br>'s? en wat bedoel je met includen??Heb je mijn beschrijving wel gelezen?daar hoef je niks te includen hoor..
  woensdag 2 november 2005 @ 20:40:05 #197
76312 sh4dow
¯¯¯¯¯¯¯¯¯
pi_31908380
in data.txt zitten wat <BR>'s in de 'berichtje' stukjes.

ik heb data.txt gerenamed naar data.php en deze include ik nu in een nieuw php bestand met jou code.
pi_31908630
Ok, dat kan ook idd, maar die <br> maakt niet uit hoor...die kun je toch ook gewoon in de database zetten?
  woensdag 2 november 2005 @ 20:51:08 #199
76312 sh4dow
¯¯¯¯¯¯¯¯¯
pi_31908812
Ja het is al gelukt met jou script alles komt netjes in de DB te staan nu, die <br>'s geven idd geen probleem, maar Swetsenegger had het daarover.

Heel erg bedankt!
pi_31908882
quote:
Op woensdag 2 november 2005 12:37 schreef Pronk het volgende:
Nouja, misschien niet de netste manier maar mijn notices zijn weg! Thx!
Voor $NextDir moet je een zelfde soort controle inbouwen (voor als je aan het eind van de lijst bent).

En als $PrevDir of $NextDir leeg zijn, dan moet je de links naar het volgende of vorige album niet tonen.

(Waarom gebruik je javascript en window.location en niet gewoon een <a> link?)
Wil iedereen die in telekinese gelooft nu mijn hand op steken?
| Foto's van toen en nu | Icons | Whatpulse keyboard | .NET developer? |
abonnement Unibet Coolblue Bitvavo
Forum Opties
Forumhop:
Hop naar:
(afkorting, bv 'KLB')