Met een upload script voor afbeeldingen laat ik een thumbnail maken en worden vervolgens beide weggeschreven in 2 verschillende mappen (fullsize) en (thumbnail).
Daarna worden ze in een database geschreven waar ik 2 aparte rijen heb gemaakt, één voor de fullsize en één voor de thumbnail.
Op het moment dat er een spatie of speciale karakters in de naam van de afbeelding voorkomen die geupload wor, gaat het mis bij het ophalen van de thumbnail afbeelding. om dit te voorkomen dacht ik om zelf een geheel nieuwe naam aan te maken voor de thumbnail zoals bijvoorbeeld thumb1, thumb2, thumb3 enz.
Hoe zou ik dit kunnen creëren zonder dat er dubbele namen worden gemaak?
Maak de naam van de afbeelding gelijk aan het auto-increment id van het record wat deze afbeelding identificeert.
Of geef deze afbeelding een hash.
Hoe je dit inricht hangt ook af van hoe je deze afbeeldingen serveert / wie deze afbeeldingen mag zien.
Als je alle afbeeldingen via een script serveert, dan kun je daar een heleboel dingen regelen, inclusief het afschermen voor onbevoegden. Als echter de afbeeldingen in een publieke directory staan en de namen van alle afbeeldingen een oplopend nummer zijn dan kun je alles natuurlijk bekijken...
Hoe je dit inricht hangt dus mede/sterk af van hoe je eventuele toegang tot de afbeeldingen wilt regelen.
Dank voor je reactie. De foto site is niet gebruiker verbonden, deze site is alleen voor vrienden die inloggen met het zelfde gegevens.
Zelf dacht ik inderdaad ook om met de ID te werken, maar weet alleen niet goed hoe ik de eerst volgende ID toe ken aan een afbeelding.
Nu is het zo dat eerst de afbeelding geupload en opgeslagen word en vervolgens in de database word gezet.
Als je een ID wilt meegeven denk ik dat eerst de afbeelding URL in de database word gezet en een ID teruggeeft en gebruikt om de afbeelding op te slaan?
Het gaat om een ID die bij deze entiteit hoort: De afbeeldingen.
Dus zet gewoon een AutoIncrement aan op je veld, en alles komt goed.
Als de query gelukt is, sla je het bestand op.
Met mysqli_insert_id() kan je het nieuwe ID ophalen van de laatste INSERT-actie. Mocht je hierna nog een andere INSERT gebruiken, dan je het resultaat van die functie ook opslaan in een variabele voor later in je script.
Ik laat nu eerste een rij vullen in de database, deze bestaat de volgende kolommen ID met auto_increment, fullsize image en thumbnail.
De kolom ID krijgt netjes een nummer
De kolom fullsize word gevuld met de bestandsnaam zoals hij is.
De thumbnail wil ik vullen met de ID+extensie (1.jpg, 2.jpg, 3.jpg enz..)
Vervolgens moet ik die ID koppelen aan de thumbnail functie zodat hij dit nummer ook opslaat.
Waar ik op vast loop is hoe kan ik met een query zorgen dat de kolom thumbnail gevuld word met het zelfde ID+ de extensie?
Niet nodig. Zoals ik al zei kent MySQL dat nummer zelf toe.
Jij kan gewoon in je INSERT-query eventueel een leeg veld inserten.
Je kan ook alle nodige velden specificeren, en het ID veld uitsluiten.
INSERT INTO table_name (column1, column2, column3, ...)
VALUES (value1, value2, value3, ...);
Nee.....
Het is gewoon een INT-veld die je ID noemt (of iets wat ermee te maken heeft).
Elk record zal MySQL dan zelf nummeren van 1,2,3 etc.... als je AutoIncrement aan hebt gezet een een Primary Key op je veld.
En met mysqli_insert_id() kan je het ID van de laatste INSERT ophalen, en die verwerk je in je functie. Je moet wel even de ".jpg" erachter frotten.
Je kent niets toe, dit regelt MySQL zelf. Elke keer als je een record aanmaakt in een tabel met een AUTO_INCREMENT kolom dan wordt aan zo'n kolom van dit record het eerstvolgende vrije nummer toegekend. Nadat je een INSERT-query hebt uitgevoerd op zo'n tabel kun je het volgnummer van het zojuist ingevoegde record opvragen met insert_id().
Maar buiten het juist declareren van de kolom hoef je omtrent nummering dus niets te regelen.