inkorten code met variabele

Status
Niet open voor verdere reacties.

raymond88

Gebruiker
Lid geworden
24 feb 2010
Berichten
287
Ik heb een locatie, en die heeft foto's. Ik heb in de database dan bijv. veld foto1 en foto2 (misschien niet geheel handig?). Nou wil ik echter als ik deze locatie verwijder, ook de foto's die erbij horen verwijderen. Middels een query haal ik de foto's op, en kijk ik of ze bestaan en verwijder ze. Maar ik moet dit dus copy pasten voor foto2. Dat is niet echt.. mooi. De code;

PHP:
$plaatje = 'plaatjes/fotos/' . $foto1;
if (file_exists($plaatje )) {
	unlink($plaatje);
}

Hoe kan ik dit mooi herschrijven, of wat zou misschien een betere code zijn. Kan ik beter één veld maken voor de foto's in de database, en middels een array in de database zetten?

Waaraan ik dacht was, om foto1 en foto2 in een array te zetten. Dan foreach of iets dergelijks, maar mij faalt de kennis om dit verder door te zetten.

B.v.d.
 
ik snap je database structuur nog niet helemaal maar als je de foto's ophaalt uit de database is dat toch een array?
kun je de inhoud van de array misschien even posten, dat doe je bijvoorbeeld zo:
PHP:
// zo iets heb je al:
$query = "hier je query";
$result = mysql_query($query);
$row = mysql_fetch_array($row);
// en dan doe je dit:
echo '<pre>';
print_r($row);
echo '</pre>';
even het resultaat hier van posten.

het idee of met een foreach te doorlopen lijkt me inderdaad en goed idee.

ecross.
 
Nou, hetgeen wat ik nu heb is een tabel locatie, en daarin staan vanallerlei velden. Als ook de velden foto1 en foto2. Ik haal nu gewoon foto1 en foto2 op middels de query.

$foto1 = $row['foto1']; bijv.

Maar mij lijkt het dan misschien handiger, om een veld met foto's te maken, en deze dan middels komma's te scheiden. Ik wil echter ook dan bij het toevoegen natuurlijk gebruik maken van dit 'ene' veld. Ik probeer zelf ook even het een en ander uit te vogelen. Hoop dat ik mezelf een beetje duidelijk heb gemaakt :)
 
Die methode is fout, je bent op zoek naar normalisatie.

* locaties *
id_locatie
adres
plaats

* fotos *
id_foto
id_locatie
foto



SELECT foto FROM fotos WHERE id_locatie = 42

while(row = fetch()){

unlink(row[foto]);

}
 
Dus ik zou altijd een aparte tabel met foto's moeten gebruiken? Ik heb namelijk nog meer tabellen die foto's nodig hebben. Ik heb zelf nog niet echt een voordeel gezien aan het gebruiken van een aparte tabel met foto id's, omdat ik iedere foto toch maar 1 keer gebruik. Wat is het id erachter precies (ja, ik ben een beetje dom mss :p)?

Anyways, ik wil ook via een for loopje zelf aangeven hoeveel inputvelden. Stel de ene heeft der 2, de ander weer 8.

PHP:
for($i = 1; $i <= 2; $i++) { ?>
                        Foto <?php echo $i; ?>
                        <input type="file" name="bestand[]" title="foto<?php echo $i; ?>">
                    <?php 
                }

Echter, hoe kan ik dit opvangen met een foreach loop? Was zelf al iets 't prutse, maar kwam niet verder dan dit. Dit roept natuurlijk echter de naam van het bestand op, maar ik moet daar dus de waarde van name="" hebben...

PHP:
foreach($_FILES['bestand']['name'] as $bestand){
		uploadbestand($bestand, andere parameters);
	}

Nou weet ik dat $bestand eigenlijk gewoon bestand (of bestand[]) moet zijn, voorheen gebruikte ik bestand1 bij name="" en dan kwam als eerste parameter 'bestand1'. Weet echter niet hoe het op te lossen..
 
Heb het nu zo gedaan:
PHP:
for($i = 1; $i <= $maxbestanden; $i++) { ?>
                        Foto <?php echo $i; ?>
                        <input type="file" name="bestand<?php echo $i; ?>" title="foto<?php echo $i; ?>">
                    <?php 
                }
// na submit drukken

for($i = 1; $i <= $maxbestanden; $i++) {
	$bestand = "bestand" . $i;
	uploadbestand($bestand, max_x, blabla);
}

Hij doet het, maar ik had gehoopt het werkend te krijgen met de array. Iemand die mijn voorgaande vragen wel kan beantwoorden?
(probleem is ook, hoe ik in de laatste for een array kan maken van alle waardes van bestand1, bestand2 etc. Bijv. plaatje.jpg, plaatjeblabla.jpg, joehoeplaatje.jpg)
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan