Array vullen
Ik krijg die echter niet voor elkaar, ik heb wat af gegoogled maar nergens echt een antwoord kunnen vinden.
Als een id in de foreach voorbij is gekomen wil ik dat deze in een array wordt opgeslagen.
Nu als de array echo laat deze alleen Array zien en geen waardes.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
foreach($werkdagen as $dag)
{
//lege variabele voor vergelijk maken
$last_id = '';
$medewerkers_geweest = array();
$medewerkers_laatst_gebruikt = array();
$data = mysql_fetch_array($result);
if ($data != 0)
{
// uitvoering dingen
$medewerkers_geweest[] = $data['id'];
$medewerkers_laatst_gebruikt[] = $data['id'];
}
else
{
// uitvoering nog meer dingen
}
echo $medewerkers_geweest;
echo $medewerkers_laatst_gebruikt;
}
?>
foreach($werkdagen as $dag)
{
//lege variabele voor vergelijk maken
$last_id = '';
$medewerkers_geweest = array();
$medewerkers_laatst_gebruikt = array();
$data = mysql_fetch_array($result);
if ($data != 0)
{
// uitvoering dingen
$medewerkers_geweest[] = $data['id'];
$medewerkers_laatst_gebruikt[] = $data['id'];
}
else
{
// uitvoering nog meer dingen
}
echo $medewerkers_geweest;
echo $medewerkers_laatst_gebruikt;
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Richard Duinmayer
$medewerkers_laatst_gebruikt = array();
Deze moeten dus BUITEN de foreach() staan.
http://nl3.php.net/print_r anders zie je nog heel weinig
En ik zou ze weergeven met Jacco schreef op 12.02.2009 15:03:
En ik zou ze weergeven met http://nl3.php.net/print_r anders zie je nog heel weinig
De echo is alleen voor nu om te controleren, straks moet er gecontroleerd worden of die id in die array staat, etc.
De echo zoals nu zegt alleen: array().
waarom niet array_push ?
Dreampower schreef op 12.02.2009 15:09:
waarom niet array_push ?
Waarom wél?
SanThe schreef op 12.02.2009 15:02:
$medewerkers_geweest = array();
$medewerkers_laatst_gebruikt = array();
Deze moeten dus BUITEN de foreach() staan.
$medewerkers_laatst_gebruikt = array();
Deze moeten dus BUITEN de foreach() staan.
Hm opzich logischer.. dank je wel
Is er een functie waarmee er een bepaald aantal in een array opgeslagen wordt en niet meer?
{
// opslaan
}
SanThe schreef op 12.02.2009 15:12:
if(count($array) < 10)
{
// opslaan
}
{
// opslaan
}
en dan kan ik met array_slice() het aantal waardes boven de bijvoorbeeld 10 weg halen toch?
Op de manier zoals ik aangaf zullen er slecht 9 elementen in het array() komen. Kleiner dan tien.
SanThe schreef op 12.02.2009 15:18:
Op de manier zoals ik aangaf zullen er slecht 9 elementen in het array() komen. Kleiner dan tien.
Oke, dank je wel ik ga het een en ander proberen :)
En dan aan de hand daar van een unieker persoon uit de database halen
De If ($data2['id'] != array_values($medewerkers_laatst_gebruikt) AND $data2['id'] != $last_id2) klopt ook niet echt, want hij print soms wel personen die in de array staan.
Code (php)
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
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
<?php
if ($data['id'] != $last_id)
{
$sql2 = "SELECT * FROM medewerkers
WHERE id!= '" . $data['id'] . "' and id!= '" . $last_id2 . "' and kantoornummer_id!='" . $data['kantoornummer_id'] . "' ORDER BY RAND()";
if(!$result2 = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens';
echo ': ' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
elseif(mysql_num_rows($result2) < 1)
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens.';
echo ' Het aantal rijen dat opgehaald is is '.mysql_num_rows().' terwijl er 1 rij was verwacht. (<pre>' . $sql . '</pre>)';
}
else
{
$data2 = mysql_fetch_assoc($result2);
$medewerkers_laatst_gebruikt[] = $data2['id'];
if ($data2['id'] != array_values($medewerkers_laatst_gebruikt) AND $data2['id'] != $last_id2)
{
// hier moet een andere medewerker komen te staan
echo $data2['voornaam'] . ' ' . $data2['achternaam'];
if(count($medewerkers_laatst_gebruikt) >= 10) // 10 elementen toegestaan + 1 (laatste) vervolgens - 2
{
$medewerkers_laatst_gebruikt[] = $data2['id'];
}
else
{
array_slice($medewerkers_laatst_gebruikt, 2);
}
//We slaan het id op het laatst in de while nog even op, om te controleren met de volgende opgehaalde rij.
$last_id2 = $data2['id'];
}
}
}
echo '</td>' . "\n";
echo '</tr>' . "\n";
if ($dag['dagnummer'] == 5)
{
echo '<tr><td class="hed" colspan="5"> </td></tr>';
}
//We slaan het id op het laatst in de while nog even op, om te controleren met de volgende opgehaalde rij.
$last_id = $data['id'];
}
else
{
?>
if ($data['id'] != $last_id)
{
$sql2 = "SELECT * FROM medewerkers
WHERE id!= '" . $data['id'] . "' and id!= '" . $last_id2 . "' and kantoornummer_id!='" . $data['kantoornummer_id'] . "' ORDER BY RAND()";
if(!$result2 = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens';
echo ': ' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
elseif(mysql_num_rows($result2) < 1)
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens.';
echo ' Het aantal rijen dat opgehaald is is '.mysql_num_rows().' terwijl er 1 rij was verwacht. (<pre>' . $sql . '</pre>)';
}
else
{
$data2 = mysql_fetch_assoc($result2);
$medewerkers_laatst_gebruikt[] = $data2['id'];
if ($data2['id'] != array_values($medewerkers_laatst_gebruikt) AND $data2['id'] != $last_id2)
{
// hier moet een andere medewerker komen te staan
echo $data2['voornaam'] . ' ' . $data2['achternaam'];
if(count($medewerkers_laatst_gebruikt) >= 10) // 10 elementen toegestaan + 1 (laatste) vervolgens - 2
{
$medewerkers_laatst_gebruikt[] = $data2['id'];
}
else
{
array_slice($medewerkers_laatst_gebruikt, 2);
}
//We slaan het id op het laatst in de while nog even op, om te controleren met de volgende opgehaalde rij.
$last_id2 = $data2['id'];
}
}
}
echo '</td>' . "\n";
echo '</tr>' . "\n";
if ($dag['dagnummer'] == 5)
{
echo '<tr><td class="hed" colspan="5"> </td></tr>';
}
//We slaan het id op het laatst in de while nog even op, om te controleren met de volgende opgehaalde rij.
$last_id = $data['id'];
}
else
{
?>
Gelieve Niet Bumpen::
Gewijzigd op 01/01/1970 01:00:00 door Richard Duinmayer
Je hebt mijn posts niet goed gelezen.
SanThe schreef op 12.02.2009 16:25:
Je hebt mijn posts niet goed gelezen.
Jawel, ik heb de break; er niet tussen gezegd.
Ik controleer of er 10 of minder in staan zo ja dan komt er 1 id bij zo nee dan gaan er 2 af.
Iig dat probeer ik te doen.
{
// stoppen
}
// toevoegen
Bij jou:
if(count($medewerkers_laatst_gebruikt) >= 10) // 10 elementen toegestaan
{
// toevoegen
}
Gewijzigd op 01/01/1970 01:00:00 door - SanThe -
Als de array 10 of minder bevat dan is het toch de bedoeling dat je er een extra id aan toevoegd?
>= is groter of gelijk aan
SanThe schreef op 12.02.2009 16:39:
>= is groter of gelijk aan
Haha stom, echter lijkt het erop of de array_slice nog niet helemaal zijn werk doet.
Er blijven veel meer id's in de array als 10.
Code (php)
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
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
<?php
$medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
{
$medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
}
else
{
array_slice($medewerkers_laatst_gebruikt, 2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
}
if ($data['id'] != $last_id)
{
$sql2 = "SELECT * FROM medewerkers
WHERE id!= '" . $data['id'] . "' and kantoornummer_id!='" . $data['kantoornummer_id'] . "' ORDER BY RAND()";
if(!$result2 = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens';
echo ': ' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
elseif(mysql_num_rows($result2) < 1)
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens.';
echo ' Het aantal rijen dat opgehaald is is '.mysql_num_rows().' terwijl er 1 rij was verwacht. (<pre>' . $sql . '</pre>)';
}
else
{
$data2 = mysql_fetch_assoc($result2);
if ($data['id'] != $last_id OR $data['id'] != $data2['id'])
{
// hier moet een andere medewerker komen te staan
echo $data2['voornaam'] . ' ' . $data2['achternaam'];
$medewerkers_laatst_gebruikt[] = $data2['id'];
}
}
}
?>
$medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
if(count($medewerkers_laatst_gebruikt) <= 10) // 10 elementen toegestaan + 1 (laatst gebruikte id)
{
$medewerkers_laatst_gebruikt[] = $data['id']; // id gebruikt in linkerkolom opslaan
}
else
{
array_slice($medewerkers_laatst_gebruikt, 2); // Bij 11 of meer worden er 2 gesliced, min 9 en max 11.
}
if ($data['id'] != $last_id)
{
$sql2 = "SELECT * FROM medewerkers
WHERE id!= '" . $data['id'] . "' and kantoornummer_id!='" . $data['kantoornummer_id'] . "' ORDER BY RAND()";
if(!$result2 = mysql_query($sql2))
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens';
echo ': ' . mysql_errno() . ':' . mysql_error() . '(<pre>' . $sql2 . '</pre>)';
}
elseif(mysql_num_rows($result2) < 1)
{
echo 'Helaas is er een fout opgetreden bij het ophalen van de gegevens.';
echo ' Het aantal rijen dat opgehaald is is '.mysql_num_rows().' terwijl er 1 rij was verwacht. (<pre>' . $sql . '</pre>)';
}
else
{
$data2 = mysql_fetch_assoc($result2);
if ($data['id'] != $last_id OR $data['id'] != $data2['id'])
{
// hier moet een andere medewerker komen te staan
echo $data2['voornaam'] . ' ' . $data2['achternaam'];
$medewerkers_laatst_gebruikt[] = $data2['id'];
}
}
}
?>
Gewijzigd op 01/01/1970 01:00:00 door Richard Duinmayer