For loop opvangen in functie.

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Ik heb het volgende: (functie)
PHP:
<?php
include($modx->config['base_path'].'manager/includes/config.inc.php');
function uploadfoto($foto) {
    //kijken of er een bestand is geselecteerd 
    if(isset($_FILES[$foto])) { 
        //als het bestand groter is dan 2048000 bytes(2MB) word hij niet toegelaten 
        if($_FILES[$foto]['size'] > 2048000) { 
            echo "Het bestand is <b>" . $_FILES[$foto]['size'] . "</b>, het maximale toegstaan is <b>2MB</b>"; 
        } 
        else { 
            //kijken of het bestand wel een gif, png of jpg is 
            if($_FILES['bestand']['type'] == "image/gif" || $_FILES[$foto]['type'] == "files/gif"  || $_FILES[$foto]['type'] == "image/pjpeg" || $_FILES[$foto]['type'] == "image/jpeg") { 
                //kijken of er een nieuwe naam aan het bestand is gegeven 
                if(empty($_POST['naam'])) { //For loop afvangen?????
                    $naam = $_FILES[$foto]['name']; 
                } 
                else { 
                    //strip de extensie om die achter de nieuwe bestandsnaam te plakken 
                    $x = strrchr($_FILES[$foto]['name'], "."); 
                    $naam = $_POST['naam'] . $x; 
                }         
                //het bestand uploaden met de nieuwe of oude naam 
                move_uploaded_file($_FILES[$foto]['tmp_name'], "/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam); 
                //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien 
                chmod("/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam, 0777); 
                echo "Bestand uploaden gelukt!<br />";
                echo "<img src=\"$link\" width=\"150\" height=\"150\">";
                echo "bestand uploaden gelukt!";
                return $naam;           
            } 
            else { 
                echo "Het bestand is geen png, jpg of gif"; 
            } 
        }    
    }
}
 
?>

En hier gebruik ik hem in:
PHP:
<?php 
for($i = 1; $i <= 8; $i++) { ?>
<tr>
<td>Foto <?php echo $i; ?></td>
<td><input type="file" name="foto<?php echo $i; ?>" title="foto<?php echo $i; ?>" />
Bestandsnaam<input type="text" name="naam" title="naam" value="naam<?php echo $i; ?>" /></td>
</tr><?php } ?>
</tr>
<tr>
</table>
<input type="submit" name="uploadfotos" value="Sla op!">
</form>

Nu moet ik die for loop in de functie op zien te vangen, want nu heb ik als resultaat, dat de naam8 als naam wordt meegegeven. terwijl natuurlijk 8 x een naam ingevoerd moet kunnen worden.
Iemand een idee?
 
"naam" is geen unieke naam, dus wordt er bij het versturen van het formulier slechts één naam meegestuurd, dit kun je gemakkelijk zien door even $_POST op het scherm te zetten
PHP:
print_r($_POST);
Om dit op te lossen kun je er een array van maken (name="naam[]") of net als bij je andere input een combinatie te maken met je loop waarde (name="naam<?php echo $i; ?>").

Als je deze wijziging doorvoert en nogmaals $_POST op het scherm zet, zul je zien dat alle waardes wel verzonden worden. Deze waardes kun je dan weer gebruiken bij de verwerking.
 
Nu gebruik ik dit:
PHP:
  //kijken of het bestand wel een gif, png of jpg is 
            if($_FILES['bestand']['type'] == "image/gif" || $_FILES[$foto]['type'] == "files/gif"  || $_FILES[$foto]['type'] == "image/pjpeg" || $_FILES[$foto]['type'] == "image/jpeg") { 
                //kijken of er een nieuwe naam aan het bestand is gegeven 
				$namen = array('naam1','naam2','naam3','naam4' , 'naam5' , 'naam6' , 'naam7' , 'naam8' );		
                if(empty($_POST[$namen])) { //For loop afvangen?????
                    $naam = $_FILES[$foto]['name']; 
                }

Maar dan krijg ik een melding warnig illegal offset type.
En hij post alleen naam 8 nog maar, zou je kunnen en willen toelichten hoe ik de array toepas, en waarom dat zo moet?(anders leer ik er niks van ;)

EDIT:
Hmm dit even geprobeerd, maar dan krijg ik hem niet aan het posten, als ik echo dan krijg ik netjes naam1 t/m 8.
Wat zie ik hier over het hoofd?
PHP:
<?php


include($modx->config['base_path'].'manager/includes/config.inc.php');
function uploadfoto($foto) {
    //kijken of er een bestand is geselecteerd 
    if(isset($_FILES[$foto])) { 
        //als het bestand groter is dan 2048000 bytes(2MB) word hij niet toegelaten 
        if($_FILES[$foto]['size'] > 2048000) { 
            echo "Het bestand is <b>" . $_FILES[$foto]['size'] . "</b>, het maximale toegstaan is <b>2MB</b>"; 
        } 
        else { 
            //kijken of het bestand wel een gif, png of jpg is 
            if($_FILES['bestand']['type'] == "image/gif" || $_FILES[$foto]['type'] == "files/gif"  || $_FILES[$foto]['type'] == "image/pjpeg" || $_FILES[$foto]['type'] == "image/jpeg") { 
                //kijken of er een nieuwe naam aan het bestand is gegeven 
					$namen[1] = "naam1"; 
					$namen[2] = "naam2"; 
					$namen[3] = "naam3"; 
					$namen[4] = "naam4"; 
					$namen[5] = "naam5"; 
					$namen[6] = "naam6"; 
					$namen[7] = "naam7"; 
					$namen[8] = "naam8"; 

					for ($nr=1; $nr <=8; $nr++){
				    $var =  $namen[$nr]."";
		}
                if(empty($_POST[$var])) { //For loop afvangen?????
                    $naam = $_FILES[$foto]['name']; 
                } 
                else { 
                    //strip de extensie om die achter de nieuwe bestandsnaam te plakken 
                    $x = strrchr($_FILES[$foto]['name'], "."); 
                    $naam = $_POST[$var] . $x; 
                }         
                //het bestand uploaden met de nieuwe of oude naam 
                move_uploaded_file($_FILES[$foto]['tmp_name'], "/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam); 
                //voor linux of unix hosts chmodden we het bestand naar 777 zodat iedereen um kan zien 
                chmod("/xampp/htdocs/modx/modx/assets/modules/reizen/foto/" . $naam, 0777); 
                echo "Bestand uploaden gelukt!<br />";
                echo "<img src=\"$link\" width=\"150\" height=\"150\">";
                echo "bestand uploaden gelukt!";
				print_r($_POST);
				

                return $naam;           
            } 
            else { 
                echo "Het bestand is geen png, jpg of gif"; 
            } 
        }    
    }
}
 
?>
 
Laatst bewerkt:
Het ligt eraan welke wijziging je hebt aangebracht in het formulier zelf. Ik heb eerder in deze thread twee mogelijkheden gegeven en beiden geven een andere indeling.

De extra code die je hebt toegevoegd zal niet werken omdat $var in je for loop altijd naam8 als resultaat zal geven, maar je zit wel op het goede spoor.

Hier een werkend voorbeeld van een upload script met aparte namen ($map even wijzigen):
PHP:
<?php
	if ($_SERVER["REQUEST_METHOD"] == "POST") {
		$map = "C:\\xampp\\htdocs\\upload\\";
		$berichten = array();
		foreach ($_FILES as $veld=>$upload) {
			if ($upload["name"] <> "") {
				if ($upload["size"] > 2048000) { 
					$berichten[] = $upload["name"]." is te groot en daarom niet opgeslagen"; 
				} else{
					if ($upload['type'] <> "image/jpeg" && $upload['type'] <> "image/jpg" && $upload['type'] <> "image/gif" && $upload['type'] <> "image/png") {
						$berichten[] = $upload["name"]." is geen plaatje, dus niet opgeslagen".$upload['type'];
					} else {
						$naam = str_replace("foto","naam",$veld);
						if ($_POST[$naam] <> "") {
							$bestand = $_POST[$naam].substr($upload["name"],(strlen($upload["name"])-4));
						} else {
							$bestand = $upload["name"];
						}
						if (file_exists($map."/".$bestand)) {
							$berichten[] = "Het bestand ".$bestand." bestaat al. Upload is niet opgeslagen";
						} else {
							if (move_uploaded_file($upload['tmp_name'], $map."/".$bestand)) {
								$berichten[] = $bestand." opgeslagen";
							} else {
								$berichten[] = $bestand." NIET opgeslagen";
							}
						}
					}
				}
			}
		}
		echo "<pre>".print_r($berichten,true)."</pre>";
	}
	echo "<form method='post' action='".$_SERVER["PHP_SELF"]."' enctype='multipart/form-data'>";
	echo "<table>";
	for($i = 1; $i <= 8; $i++) {
		echo "
			<tr>
				<td>Foto ".$i."</td>
				<td><input type='file' name='foto".$i."' /></td>
				<td>Bestandsnaam <input type='text' name='naam".$i."' /></td>
			</tr>
		";
	}
	echo "<tr><td colspan='3'><input type='submit' value='Sla op!'></td></tr>";
	echo "</table>";
	echo "</form>";
?>
Als je de opmaak uit je eigen code overzet, zou je een werkend geheel moeten hebben :)
 
Great :D

Eindelijk werkt het (bijna) zoals het moet.

Alleen hoe post ik nu de locatie van het geuploade bestand naar de database?
Er hangt natuurlijk geen value aan, en zal ook niet uitmaken, ik zou iets moeten returnen uit de function, echter vraag ik me af hoe?

Ik heb hem namelijk zo gevormd, dat je een soort form hebt waar je titel enz.. kan invullen, daaronder de foto's en 1x submit, dus hij slaat in zn geheel alles op. omdat die foto's gekoppeld moeten worden aan een bepaalde reis die je aanmaakt.


Aanmaakformulier
PHP:
<?php include 'dbconnect.php'; 
      include 'upload.php';
				//Voeg toe aan Database
				if (isset($_POST['uploadfotos'])){
				$foto1 = uploadfoto ('foto1');
	
$query2 = "INSERT INTO reizen_aanbod VALUES('','".$_POST['titel']."','".$_POST['sterren']."','".$_POST['tekst']."', '".$_POST['prijs']."', '".$_POST['soort']."', '".$_POST['accommodatie']."', '".$_POST['aanbieding']."',now(),'".$_POST['gebied']."','" .$_POST['9']."') ";
$result = mysql_query($query2) or die(mysql_error());
		echo "Opgeslagen";
		}	
    else{
	}
$query="SELECT * FROM reizen_aanbod
        WHERE id = '".$_GET['nid']."' ";
		//query uitvoeren
		$result = mysql_query($query) or die(mysql_error());
		while ($record = mysql_fetch_array($result)) {
			$titel = $record['titel'];
			$prijs = $record['prijs'];
			$sterren = $record['sterren'];
			$tekst = $record['tekst'];
			$aanbieding = $record['aanbieding'];
			$soort = $record['soort'];
			$accommodatie = $record['accommodatie'];
			$gebied = $record['gebied'];
			}

	
	
	$list .= ' <select name="soort">';
$sql = "SELECT * FROM `reizen_soort` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list .= '<option value="'.$disp['soort'].'">  '.$disp['soort'].' </option>';          }
			  $list .= '</select></td></tr>';
		
	$list1 .= ' <select name="gebied">';
$sql = "SELECT * FROM `reizen_gebieden` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list1 .= '<option value="'.$disp['gebied'].'">  '.$disp['gebied'].' </option>';          }
			  $list1 .= '</select></td></tr>';
	
	$list2 .= ' <select name="accommodatie">';
$sql = "SELECT * FROM `reizen_accommodatie` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list2 .= '<option value="'.$disp['accommodatie'].'">  '.$disp['accommodatie'].' </option>';          }
			  $list2 .= '</select></td></tr>';
			
	$list3 .= '<select name="sterren">';
$sql = "SELECT * FROM `reizen_sterren` ";
$result = mysql_query($sql);
		while($disp = mysql_fetch_array($result))
		{
			$list3 .= '<option value="' .$disp['sterren'].'"> '.$disp['sterren'].' </option>';	}
			$list3 .= '</select></td></tr>';
			
	
		?>
<table>
<form method="post" action="" enctype="multipart/form-data">
<tr>
<td>Titel</td>
<td><input type="text" value="<?php echo $titel; ?>" name="titel" /></td>
</tr>
<tr>
<td>Prijs</td>
<td>
<input type="text" value="<?php echo $prijs; ?>" name="prijs" /> (invullen met eventuele punt dus geen komma)</td>
</tr>
<tr>
<td>Sterren</td>
<td><?php echo $list3;?></td>
</tr>
<tr>
<td>Beschrijving</td>
<td><textarea type="text" value="<?php echo $tekst; ?>" name="tekst" /></textarea> (invullen met eventuele punt dus geen komma)</td>
</tr>
<tr>
<td>Aanbieding</td>
<td><input type="checkbox" value="Ja" name="aanbieding" />Vink aan als het een aanbieding is, dan verschijnt deze reis op de voorpagina!</td>
</tr>
<tr>
<td>Soort</td>
<td><?php echo $list;?></td>
</tr>
<tr>
<td>Accommodatie</td>
<td><?php echo $list2 ;?></td>
</tr>
<tr>
<td>Regio</td>
<td><?php echo $list1;?></td><br />
<?php
 echo "<form method='post' action='".$_SERVER["PHP_SELF"]."' enctype='multipart/form-data'>";
  echo "<table>";
  for($i = 1; $i <= 8; $i++) {
  echo "
  <tr>
      <td>Foto ".$i."</td>
        <td><input type='file' name='foto".$i."' /></td>
          <td>Bestandsnaam <input type='text'  name='naam".$i."' /></td>
        </tr>
      ";
   }
    echo "<tr><td colspan='3'><input type='submit' name='uploadfotos' value='Sla op!'></td></tr>";
    echo "</table>";
    echo "</form>";
	?>

Functie
PHP:
<?php
	function uploadfoto($foto) {
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
          $map = "C:\\xampp\\htdocs\\modx\\modx\\assets\\modules\\reizen\\foto\\" . $naam;
        $berichten = array();
        foreach ($_FILES as $veld=>$upload) {
            if ($upload["name"] <> "") {
                if ($upload["size"] > 2048000) { 
                    $berichten[] = $upload["name"]." is te groot en daarom niet opgeslagen"; 
                } else{
                    if ($upload['type'] <> "image/jpeg" && $upload['type'] <> "image/jpg" && $upload['type'] <> "image/gif" && $upload['type'] <> "image/png") {
                        $berichten[] = $upload["name"]." is geen plaatje, dus niet opgeslagen".$upload['type'];
                    } else {
                        $naam = str_replace("foto","naam",$veld);
                        if ($_POST[$naam] <> "") {
                            $bestand = $_POST[$naam].substr($upload["name"],(strlen($upload["name"])-4));
                        } else {
                            $bestand = $upload["name"];
                        }
                        if (file_exists($map."/".$bestand)) {
                            $berichten[] = "Het bestand ".$bestand." bestaat al. Upload is niet opgeslagen";
                        } else {
                            if (move_uploaded_file($upload['tmp_name'], $map."/".$bestand)) {
                                $berichten[] = $bestand." opgeslagen";
                            } else {
                                $berichten[] = $bestand." NIET opgeslagen";
                            }
                        }
                    }
                }
            }
        }
        echo "<pre>".print_r($berichten,true)."</pre>";
    }
    echo "<form method='post' action='".$_SERVER["PHP_SELF"]."' enctype='multipart/form-data'>";
    echo "<table>";
    for($i = 1; $i <= 8; $i++) {
        ;
    }
 //   echo "<tr><td colspan='3'><input type='submit' value='Sla op!'></td></tr>";
    echo "</table>";
    echo "</form>";
	}
?>
 
Laatst bewerkt:
Om te beginnen kan het geheel buiten de function blijven zolang je er geen extra zaken bij gaat maken.

Welke code je toe moet voegen om het geheel in de database te zetten hangt van je database structuur af. Aan je insert query te zien stop je alle reis data in een tabel, dus ik neem aan dat de fotos in een andere tabel staan (tabel met bijvoorbeeld id,reis_id,bestand).

Als bovenstaande klopt (en het geheel buiten een function blijft): moet je om te beginnen de reis_id hebben, die kun je krijgen door na het inserten (regel 8) mysql_insert_id() te gebruiken
PHP:
$reis_id = mysql_insert_id();
Nu dit bekend is kun je na het opslaan van elke foto (dus na "bestand is opgeslagen") een query uitvoeren:
PHP:
mysql_query("insert into fotos values('',".$reis_id.",'".$bestand."')");
 
Nee het geheel staat in een tabel. als laatste in de tabel heb ik een veld foto.

Tevens heb ik geen reis_id, ik gebruik alleen id, of is dit fout? ik begin net , dus ik leer graag bij ;)
 
het verdelen in meerdere tabellen is aan te bevelen zodat je meerdere foto's per reis kunt toevoegen zonder de reis gegevens telkens opnieuw op te slaan (maakt muteren wat vervelend).

Id in reis is prima, maar koppel die dan met reis_id in een tabelletje foto
en hierbij een auto increment veld id.

deze kun je dan weer ophalen als:
select r.*, f.* from reis r left join foto f on (f.reis_id = r.id)

het resultaat lijkt alsof het 1 tabel is, terwijl er in feite twee tabellen zijn, zodat wanneer iets aangepast moet worden, dit maar 1 keer hoeft.
 
Niet fout, maar wel ongebruikelijk. Maargoed, je wilt dus alle foto's in één veld stoppen. Wat je zou kunnen doen is een array maken voor de foto's (op dezelfde manier als ik $berichten heb gebruikt). Als de array $afbeeldingen heet, kun je na "bestand opgeslagen" de array vullen met
PHP:
$afbeeldingen[] = $bestand;
Dit levert een array met alle foto's op die je dan kunt opslaan door het te serializen binnen de query. Voorbeeld
PHP:
$q = "insert into <tabel> values ('".serialize($afbeeldingen)."','iets anders','etc')";
Als je de foto's op een andere pagina weer uit de database haalt, kun je de array weer terugkrijgen met
PHP:
$afbeeldingen = unserialize($row["kolomnaam"]);
 
Dan denk ik persoonlijk dat het misschien toch makkelijker is als ik en aparte tabel maajk voor foto's. Vooral omdat er een stuk of 8 per reis gekoppeld moeten worden.

Nu ben ik er niet bepaald een held in, en moet ik eerlijkheids halve zeggen dat ik de twee laatste antwoorden niet helemaal begrijp.

LAten we zeggen dat ik een reis aan wil maken, en daar per reis 8 foto's aan wil hangen, en deze dus ook opslaan in de DB, hoe begin ik daarmee?

Ik vraag bewust niet om een complete code, want ik wil graag ervan leren, en begrijpen wat ik aan het doen ben, zodat ik het later ook weer kan toepassen.
 
Stel, in je tabel reizen_aanbod staat deze info:

[table="width: 500, class: dotted"][tr][td]id[/td][td]titel[/td][td]prijs[/td][td]sterren[/td][td]tekst[/td][td]aanbieding[/td][td]soort[/td][td]accommodatie[/td][td]gebied[/td][/tr]
[tr][td]1[/td][td]disney arrangement[/td][td]99[/td][td]5[/td][td]lang weekend in een disney hotel, toegang inbegrepen[/td][td]nee[/td][td]bus[/td][td]hotel[/td][td]parijs[/td][/tr]
[tr][td]2[/td][td]excursie parijs[/td][td]125[/td][td]3[/td][td]3 daagse excursie reis in en om parijs[/td][td]ja[/td][td]bus[/td][td]hotel[/td][td]parijs[/td][/tr][/table]

In een andere tabel reizen_fotos staan de fotos:

[table="width: 500, class: dotted"][tr][td]id[/td][td]reis_id[/td][td]foto[/td][/tr]
[tr][td]1[/td][td]1[/td][td]disneyland_1.jpg[/td][/tr]
[tr][td]2[/td][td]1[/td][td]disneyland_2.jpg[/td][/tr]
[tr][td]3[/td][td]1[/td][td]disneyland_3.jpg[/td][/tr]
[tr][td]4[/td][td]1[/td][td]disneyland_4.jpg[/td][/tr]
[tr][td]5[/td][td]2[/td][td]excursiereis_1.jpg[/td][/tr]
[tr][td]6[/td][td]2[/td][td]excursiereis_2.jpg[/td][/tr][/table]

Als je nu bijvoorbeeld bezig bent met ophalen van de gegevens voor reis met id 1, kun je dmv een nieuwe query[sql]select foto from reizen_fotos where reis_id=1[/sql]alle fotos ophalen die bij dat id horen.
 
Dat is een heldere uitleg(excuus voor mijn late antwoord), ik heb inmiddels de database hierop aangepast, en kan een id meegeven en het bestand, echter het id van de reis blijft 0.

Wat doe ik hier nog verkeerd?
PHP:
<?php include 'dbconnect.php'; 
      //include 'upload.php';
				//Voeg toe aan Database
				if (isset($_POST['uploadfotos'])){
				
	
$query2 = "INSERT INTO reizen_aanbod VALUES('','".$_POST['titel']."','".$_POST['sterren']."','".$_POST['tekst']."', '".$_POST['prijs']."', '".$_POST['soort']."', '".$_POST['accommodatie']."', '".$_POST['aanbieding']."',now(),'".$_POST['gebied']."','" .$_POST['9']."') ";
$reis_id = mysql_insert_id();
$result = mysql_query($query2) or die(mysql_error());

		echo "Opgeslagen";
		}	
    else{
	}
$query="SELECT * FROM reizen_aanbod
        WHERE id = '".$_GET['nid']."' ";
		//query uitvoeren
		$result = mysql_query($query) or die(mysql_error());
		while ($record = mysql_fetch_array($result)) {
			$titel = $record['titel'];
			$prijs = $record['prijs'];
			$sterren = $record['sterren'];
			$tekst = $record['tekst'];
			$aanbieding = $record['aanbieding'];
			$soort = $record['soort'];
			$accommodatie = $record['accommodatie'];
			$gebied = $record['gebied'];
			}

	
	
	$list .= ' <select name="soort">';
$sql = "SELECT * FROM `reizen_soort` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list .= '<option value="'.$disp['soort'].'">  '.$disp['soort'].' </option>';          }
			  $list .= '</select></td></tr>';
		
	$list1 .= ' <select name="gebied">';
$sql = "SELECT * FROM `reizen_gebieden` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list1 .= '<option value="'.$disp['gebied'].'">  '.$disp['gebied'].' </option>';          }
			  $list1 .= '</select></td></tr>';
	
	$list2 .= ' <select name="accommodatie">';
$sql = "SELECT * FROM `reizen_accommodatie` ";
        $result = mysql_query($sql);
         while($disp = mysql_fetch_array($result))
         {
              $list2 .= '<option value="'.$disp['accommodatie'].'">  '.$disp['accommodatie'].' </option>';          }
			  $list2 .= '</select></td></tr>';
			
	$list3 .= '<select name="sterren">';
$sql = "SELECT * FROM `reizen_sterren` ";
$result = mysql_query($sql);
		while($disp = mysql_fetch_array($result))
		{
			$list3 .= '<option value="' .$disp['sterren'].'"> '.$disp['sterren'].' </option>';	}
			$list3 .= '</select></td></tr>';
			
	
		?>
<table>
<form method="post" action="" enctype="multipart/form-data">
<tr>
<td>Titel</td>
<td><input type="text" value="<?php echo $titel; ?>" name="titel" /></td>
</tr>
<tr>
<td>Prijs</td>
<td>
<input type="text" value="<?php echo $prijs; ?>" name="prijs" /> (invullen met eventuele punt dus geen komma)</td>
</tr>
<tr>
<td>Sterren</td>
<td><?php echo $list3;?></td>
</tr>
<tr>
<td>Beschrijving</td>
<td><textarea type="text" value="<?php echo $tekst; ?>" name="tekst" /></textarea> (invullen met eventuele punt dus geen komma)</td>
</tr>
<tr>
<td>Aanbieding</td>
<td><input type="checkbox" value="Ja" name="aanbieding" />Vink aan als het een aanbieding is, dan verschijnt deze reis op de voorpagina!</td>
</tr>
<tr>
<td>Soort</td>
<td><?php echo $list;?></td>
</tr>
<tr>
<td>Accommodatie</td>
<td><?php echo $list2 ;?></td>
</tr>
<tr>
<td>Regio</td>
<td><?php echo $list1;?></td><br />
<?php
 echo "<form method='post' action='".$_SERVER["PHP_SELF"]."' enctype='multipart/form-data'>";
  echo "<table>";
  for($i = 1; $i <= 8; $i++) {
  echo "
  <tr>
      <td>Foto ".$i."</td>
        <td><input type='file' name='foto".$i."' /></td>
          <td>Bestandsnaam <input type='text'  name='naam".$i."' /></td>
        </tr>
      ";
   }
    echo "<tr><td colspan='3'><input type='submit' name='uploadfotos' value='Sla op!'></td></tr>";
    echo "</table>";
    echo "</form>";
	
	
    if ($_SERVER["REQUEST_METHOD"] == "POST") {
          $map = "C:\\xampp\\htdocs\\modx\\modx\\assets\\modules\\reizen\\foto\\" . $naam;
        $berichten = array();
        foreach ($_FILES as $veld=>$upload) {
            if ($upload["name"] <> "") {
                if ($upload["size"] > 2048000) { 
                    $berichten[] = $upload["name"]." is te groot en daarom niet opgeslagen"; 
                } else{
                    if ($upload['type'] <> "image/jpeg" && $upload['type'] <> "image/jpg" && $upload['type'] <> "image/gif" && $upload['type'] <> "image/png") {
                        $berichten[] = $upload["name"]." is geen plaatje, dus niet opgeslagen".$upload['type'];
                    } else {
                        $naam = str_replace("foto","naam",$veld);
                        if ($_POST[$naam] <> "") {
                            $bestand = $_POST[$naam].substr($upload["name"],(strlen($upload["name"])-4));
                        } else {
                            $bestand = $upload["name"];
                        }
                        if (file_exists($map."/".$bestand)) {
                            $berichten[] = "Het bestand ".$bestand." bestaat al. Upload is niet opgeslagen";
                        } else {
                            if (move_uploaded_file($upload['tmp_name'], $map."/".$bestand)) {
                                $berichten[] = $bestand." opgeslagen";
								mysql_query("insert into fotos values('',".$reis_id.",'".$bestand."')");

                            } else {
                                $berichten[] = $bestand." NIET opgeslagen";
                            }
                        }
                    }
                }
            }
        }
        echo "<pre>".print_r($berichten,true)."</pre>";
    }
    echo "<form method='post' action='".$_SERVER["PHP_SELF"]."' enctype='multipart/form-data'>";
    echo "<table>";
    for($i = 1; $i <= 8; $i++) {
        ;
    }
 //   echo "<tr><td colspan='3'><input type='submit' value='Sla op!'></td></tr>";
    echo "</table>";
    echo "</form>";
	
	

	
	?>

Hmm even een print van reis_id, leert dat hij 0 is.
Dus ergens pak ik de reis_id niet goed op!

EDIT:
Moet ik natuurlijk
PHP:
$reis_id = mysql_insert_id();
wel na het uitvoeren van de query doen.;)
 
Laatst bewerkt:
Dank voor alle heldere uitleg, het werkt helemaal zoals het moet!
Foto's in een aparte tabel, met koppeling van de reis id :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan