Ik heb het volgende formulier:

<form method="post" action="index.php?page=add_album" enctype="multipart/form-data">
	<input type="hidden" name="MAX_FILE_SIZE" value="100000" />
	<p>
	<label for="naam" class="align_text">Album titel:</label>
	<input name="title" type="text" value="">
	</p>
	<?php
	$i = 1;
	while($i <= 30) {
		echo '<p>';
		echo '<label for="image' .$i. '" class="align_text">Afbeelding ' .$i. ':</label>';
		echo '<input name="image' .$i. '" type="file" value="' .$_POST['image'.$i]. '">';
		echo '</p>';
		echo '<p>';
		echo '<label for="remark' .$i. '" class="align_text">Opmerking:</label>';
		echo '<textarea cols="100" rows="10" name="remark' .$i. '">' .$_POST['remark'.$i] . '</textarea>';
		echo '</p>';
		$i++;
	}
	?>
	<p>
	<label for="head_image" class="align_text">Hoofdafbeelding:</label>
	<select name="head_image">
	<?php
		$i = 1;
		while($i <= 30) {
			echo '<option value="' .$i. '">Afbeelding ' .$i. '</option>';
			$i++;
		}
	?>
	</select>
	</p>
	<p>
	<label for="submit" class="align_text">&nbsp;</label>
	<input type="submit" name="reply" value="Plaatsen">
	</p>
	</form>

En ik controleer met php later of er een titel is ingevuld dmv !empty().

Als ik twee afbeeldingen upload gaat dit allemaal perfect.
Als ik er 10 upload zegt hij dat er geen titel is ingevuld, terwijl ik 100% zeker weet dat er een titel is ingevuld.
Ook mijn foutafhandeling is perfect en daar ligt het niet aan.
Is er een maximum aantal bestanden dat je per formulier kunt uploaden ofzo?

Bvd, RT.
Ik denk dat we je formulier verwerking hiervoor nodig hebben. Hier zit namelijk (voor zover ik zie) niets fout. Het enige wat ik anders zou doen is:

<input type="hidden" name="MAX_FILE_SIZE" value="100000" />


Men kan ook zelf een formulier maken en deze naar index.php?page=add_album sturen en dan bijv. als MAX_FILE_SIZE 1.000.000 ingeven. Dan zal de afbeelding groter mogen zijn. Ik zou dus gewoon een variabele vooraf definiëren met de MAX_FILE_SIZE. Heb je daar ook geen problemen mee ;-).
Óf je controleert nogmaals in je formulier verwerking of de MAX_FILE_SIZE 100.000 is, maar dat is een beetje dubbelop dan.
Oke, klopt dat had ik ff snel van internet gehaald dat van max_file_size.
Maargoed, hier mijn formulier verwerking:

show_form() geeft dus gewoon het formulier weer.


<?php
if($_SERVER['REQUEST_METHOD'] != "POST") {
	show_form();
} else {
	if(isset($_POST['title']) AND !empty($_POST['title'])) {
		$query = "SELECT * FROM albums WHERE title = '" .mysql_real_escape_string($_POST['title']). "'";
		$res = mysql_query($query);
		if($res) {
			if(mysql_num_rows($res) == 0) {
				$query = "INSERT INTO albums 
				(title,datetime,image) 
				VALUES ('" .$_POST['title']. "',NOW(),'foto" .$_POST['head_image']. "_small.jpg')";
				if(mysql_query($query)) {
					$album_id = mysql_insert_id();
					if(mkdir("../fotoboek/afbeeldingen/" . $_POST['title'], 0700)) {
						$i = 1;
						while($i <= 30) {
							if(is_uploaded_file($_FILES['image'.$i]['tmp_name'])) {
								$dest = "../fotoboek/afbeeldingen/" . $_POST['title'] . "/";
								if(move_uploaded_file($_FILES['image'.$i]['tmp_name'],$dest . "foto" .$i. ".jpg")) {
									$imagequery = "INSERT INTO images 
									(album_id,filename,number,comment,datetime) 
									VALUES('" .$album_id. "','foto" .$i. ".jpg','" .$i. "','" .$_POST['remark' .$i]. "',NOW())";
									if(mysql_query($imagequery)) {
										if(copy($dest . "foto" .$i. ".jpg",$dest . "foto" .$i. "_small.jpg")) {
											list($width, $height) = getimagesize($dest . "foto" .$i. "_small.jpg");
											if($width > 150) {
												$new_width = 150;
												$new_height = round(150 / $width * $height,1);
											} else {
												$new_width = $width;
												$new_height = $height;
											}
											$image = imagecreatefromjpeg($dest . "foto" .$i. "_small.jpg");
											if(unlink($dest . "foto" .$i. "_small.jpg")) {
												$destination = imagecreatetruecolor($new_width, $new_height);
											    imagecopyresampled($destination, $image, 0, 0, 0, 0, $new_width, $new_height, $width, $height);
											    imagejpeg($destination,$dest . "foto" .$i. "_small.jpg");
											    imagedestroy($image);
										    } else {
											    echo '<p><span class="error">Er is iets misgegaan bij het verwijderen van de originele thumbnail (' .$i. ').</span></p>';
										    }
									    } else {
											echo '<p><span class="error">Er is iets misgegaan bij het kopieëeren van de foto  (' .$i. ').</span></p>';
										}
									} else {
										echo '<p><span class="error">Er is iets misgegaan bij het de imagequery  (' .$i. ').</span></p>';
									}
								} else {
									echo '<p><span class="error">Er is iets misgegaan bij het kopieëeren van de tijdelijke foto  (' .$i. ').</span></p>';
								}
							}					
							$i++;
						}
					} else {
						echo '<p><span class="error">Er is iets misgegaan bij het aanmaken van de albumdir.</span></p>';
					}
				} else {
					echo '<p><span class="error">Er is iets misgegaan bij het invoegen van het album in de database.</span></p>';
				}
			}
		} else {
			echo '<p><span class="error">Er is iets misgegaan bij het vergelijken van de albums in de database.</span></p>';
		}
	} else {
		echo '<p><span class="error">Er is geen titel ingevuld, vul deze alsnog in.</span></p>';
		show_form();
	}
}
?>
Oké... Nou zover ik kan zien zit er niets fout. Ziet er allemaal keurig uit. Even nog voor de duidelijkheid: als je dus 10 bestanden wil uploaden geeft hij direct dat er geen titel is ingevuld, terwijl dat wel zo is? En als je minder dan 10 bestanden wil uploaden, doet hij het gewoon? Kijk eens met print_r($_POST) wat er in de $_POST-variabele zit bij minder dan 10 en 10 uploads.

<?php
echo '<pre>'.print_r($_POST, true).'</pre>';
?>
Ik wil net uploaden, maar nu doet hij helemaal niks meer. Er zit nu niks meer in de $_POST variabele als ik het formulier post. Heb niks aangepast aan de pagina.

Er rust een vloek op dat formulier oid :|.

Reageren