Ik heb nu een stukje code geschreven die er voor moet zorgen dat wanneer mensen een foto uploaden die van een te lage resolutie is, afgekeurd wordt. HEt probleem is dat mijn pagina uit een array van userfiles bestaat, dus er moet ook een array aan files gecheckt worden. Hoe doe ik dit nu in hemelsnaam?
Zo ver ben ik al:

<?
if ($_FILES['userfile']['tmp_name'][$i] != "") {
$dimensions = getimagesize($_FILES['userfile']['tmp_name'][$i]);
$breedte = $dimensions[0];
$hoogte = $dimensions[1];
if ($breedte < 1600) {
$resolutie[$i] = "{$_FILES['userfile']['name'][$i]} heeft een te lage resolutie! Verwacht geen perfecte afdruk!";
}
if ($hoogte < 1200) {
$resolutie[$i] = "{$_FILES['userfile']['name'][$i]} heeft een te lage resolutie! Verwacht geen perfecte afdruk!";
}
}
?>
Je kunt iig dit stuk

<?
if ($hoogte < 1200) {
$resolutie[$i] = "{$_FILES['userfile']['name'][$i]} heeft een te lage resolutie! Verwacht geen perfecte afdruk!";
}
?>

weglaten. Als $hoogte kleiner is dan 1600 is ie dus ook kleiner dan 1200 en hoeft er niet twee keer die melding te komen.
nee, foto's zijn niet altijd 4:3, ze kunnen ook 3:4 zijn. (portrait)

Edit: ik ben nu officieel gepromoveerd!

maar je hebt gelijk, ik kan ook zeggen dat zowel de hoogte als de breedte niet kleiner mogen zijn dan 1200.
Kutn00b ben ik ook. Dacht dat bij allebei $hoogte stond. Maar ene is $hoogte en andere $breedte. Sorry :)
nu staat er dus dit:

<?
if ($_FILES['userfile']['tmp_name'][$i] != "") {
$dimensions = getimagesize($_FILES['userfile']['tmp_name'][$i]);
$breedte = $dimensions[0];
$hoogte = $dimensions[1];
if ($breedte < 1200 && $hoogte < 1200) {
$resolutie[$i] = "{$_FILES['userfile']['name'][$i]} heeft een te lage resolutie! Verwacht geen perfecte afdruk!";
}
}
?>

@dutchcamel
Heeft dat iets met de "bas is een kutn00b - lan" te maken?

@bas
andere bas

Edit: maar hai dugget nog steeds niet :-(
$_FILES['userfile']['tmp_name'] is dus een array?

http://www.php.net/foreach

Of als je $i wil blijven gebruiken

<?
for ($i = 0; $i < count($array); $i++) {
// je code
}
?>
@dutchcamel
Heeft dat iets met de "bas is een kutn00b - lan" te maken?

Nop :)

Heeft dit iets met de online afdrukservice te maken? :)
het rare is dan dat deze wel werkt:

<?
if ($_FILES['userfile']['size'][$i] > (1024*$maxsize) ) {
$toobig[$i] = "{$_FILES['userfile']['name'][$i]} is te groot! Hij mag niet groter zijn dan $maxsize kb. Kom persoonlijk langs met een CD-ROM.";
?>

@dutchcamel
Jazeker ;)
trouwens, voor alle checks staat dit:
<?
while ($i < $count) {
//de checks
}
?>

waarbij $count het aantal verstuurde foto's is..
Hallo, weet echt niemand meer een oplossing?? Ik zit werkelijk vast...

Summary:

Ik moet dus van elke file (in de array) de hoogt en de breedte hebben, en die checken. Wanneer die niet klopt, geef de $resolutie[$i] een waarde van de tekst.

Dit werkt niet. Waarom niet?
Omdat met je while lus de $i niet meegeteld wordt.

Zoals ik al eerder gezegd heb, een array kun je veel beter doorlopen met een foreach() of desnoods een for().

http://www.php.net/foreach

<?
foreach($array as $key => $value) {
echo $key." - ".$value."<br>\n";
// kun je even zien wat hij doet als het niet duidelijk is
}
?>

<?
for ($i = 0; $i < count($array); $i++) {
// je code
}
?>

Wil je het echt perse met een while-loop doen (vraag me niet waarom je dat perse zou willen maar goed...:S) dan moet je onderaan je code (voor de } van de loop dus) deze regel toevoegen:

<?
$i++;
?>

Reageren