CMS artikel met foto's/ bestanden

Status
Niet open voor verdere reacties.

raymond88

Gebruiker
Lid geworden
24 feb 2010
Berichten
287
Ik ben met een CMS bezig. Hierin kan de gebruiker artikelen aanmaken, waar foto's aangehangen kunnen worden (een maximum is vooraf ingesteld, bijv. 2). Er bestaat dus de mogelijkheid om geen foto's toe te voegen, maar ook foto's tot het maximum.

De gebruiker kan echter natuurlijk ook nog het artikel wijzigen, als ook de foto's. Hierbij zouden ze ook verwijderd kunnen worden. Ik heb een aparte tabel in de database (genaamd fotos), die de link legt tussen artikel en fotos en zo de goede foto's bij artikelen ophaalt.

Mijn vraag: hoe los ik het op dat de gebruiker dingen kan verwijderen/ wijzigen? Mijn input type name van de files is een array. Ik heb een zet in de goede richting nodig, want ik kom er niet uit. Heb al wat met jQuery geprobeerd en alles, maar het is maar wat gissen voor mij. Heb wat professionele hulp nodig ;)
 
Je kunt de files verwijderen van de harde schijf met de unlink() functie, die accepteert een filename en pad en gooit die file weg.

De database rij kun je gewoon verwijderen zoals alle andere rijen.

De makkelijkste manier om te kiezen is om gewoon een checkbox toe te voegen die als value de id van de file heeft, en als de gebruiker opgeeft om die file te verwijderen, dan haal je de filename op, unlink je die, en verwijder je daarna de rij.

PAS OP: de value van checkboxes kun je wijzigen met veel browsers. Zorg dus dat je controleert dat de ingestuurde value wel aan die gebruiker toehoort.
 
Het gaat me dan voornamelijk om de te gebruiken "functies". Bij het toevoegen heb ik bijv. het volgende:

PHP:
            <?php 	
                for($i = 1; $i <= $maxbestanden; $i++) { ?>
                    <tr>
                        <td>Foto <?php echo $i; ?></td>
                        <td><input type="file" name="bestand<?php echo $i; ?>" title="foto<?php echo $i; ?>"></td>
                    </tr><?php 
                }
                ?>

Maar ik wil dan weten hoe ik iets moet afvangen bij het wijzigen. Wat ik voorheen zei: "Mijn input type name van de files is een array." klopt dus niet :P
Unlink had ik inmiddels ook al ontdekt. Wat me dwars ligt is de te gebruiken for, while of whatever voor loop om te gebruiken.
Tevens, kan je wat meer uitleg geven bij: "De makkelijkste manier om te kiezen is om gewoon een checkbox toe te voegen die als value de id van de file heeft, en als de gebruiker opgeeft om die file te verwijderen, dan haal je de filename op" :)
 
Tevens, kan je wat meer uitleg geven bij: "De makkelijkste manier om te kiezen is om gewoon een checkbox toe te voegen die als value de id van de file heeft, en als de gebruiker opgeeft om die file te verwijderen, dan haal je de filename op" :)
  • Je hebt om te beginnen alle id's nodig die bij de fotos horen. Dus pas de select query (die je gebruikt om de huidige gegevens op het scherm te zetten) zo aan dat de id(s) ook terugkomen
  • vervolgens moet je voor jezelf besluiten HOE je de gebruiker laat kiezen tussen wijzigen en verwijderen. Frats geeft de suggestie om een checkbox te gebruiken, persoonlijk zou ik per foto een losse form maken - maar de keuze ligt bij jou
  • welke methode je ook kiest; je moet het id er tussen zetten (input type='hidden')
  • bij het verwerken van het geheel kun je het id gebruiken om de foto te wissen
    • eerst controleer je of het id dat de gebruiker opgeeft ook echt geldig is
    • Wissen:
      • maak een select query waarbij je de bestandsnaam opvraagt (als er geen resultaat is, klopt het id niet dus heb je meteen een extra controle gemaakt)
      • gebruik unlink($bestand) om het bestand te wissen
      • maak een delete query om de foto uit de database te halen, waarin je de delete voorwaarde laat afhangen van het id (where id='.$id)
    • Wijzigen:
      • controleer de overige informatie die de gebruiker heeft meegestuurd op geldigheid
      • maak een update query, waarin je de update voorwaarde laat afhangen van het id (where id='.$id)
 
  • Je hebt om te beginnen alle id's nodig die bij de fotos horen. Dus pas de select query (die je gebruikt om de huidige gegevens op het scherm te zetten) zo aan dat de id(s) ook terugkomen
  • vervolgens moet je voor jezelf besluiten HOE je de gebruiker laat kiezen tussen wijzigen en verwijderen. Frats geeft de suggestie om een checkbox te gebruiken, persoonlijk zou ik per foto een losse form maken - maar de keuze ligt bij jou
  • welke methode je ook kiest; je moet het id er tussen zetten (input type='hidden')
  • bij het verwerken van het geheel kun je het id gebruiken om de foto te wissen
    • eerst controleer je of het id dat de gebruiker opgeeft ook echt geldig is
    • Wissen:
      • maak een select query waarbij je de bestandsnaam opvraagt (als er geen resultaat is, klopt het id niet dus heb je meteen een extra controle gemaakt)
      • gebruik unlink($bestand) om het bestand te wissen
      • maak een delete query om de foto uit de database te halen, waarin je de delete voorwaarde laat afhangen van het id (where id='.$id)
    • Wijzigen:
      • controleer de overige informatie die de gebruiker heeft meegestuurd op geldigheid
      • maak een update query, waarin je de update voorwaarde laat afhangen van het id (where id='.$id)

Ok, thanks. Het main principe had ik wel al. Wat mij dwars lag is bijvoorbeeld als je een foto verwijderd middels een apart form, en je hebt al andere inputs veranderd, veranderen die dus niet mee omdat het een apart form is. Ik wil het zo gebruikersvriendelijk mogelijk maken namelijk, als iemand dingen in inputs gaat veranderen en dan een foto verwijdert is 'ie dus alles kwijt..
 
Je kunt dan het beste AJAX gebruiken, dan blijven overige dingen bewaard als je een form inzend. Dat werkt met Javascript en PHP.

Als je het niet kent moet je er maar eens even naar kijken, het is niet bijzonder lastig als je een beetje bekend bent met Javascript :)
 
Naja, niet geheel bekend met beide. Ik kan wel enkele dingen eruit pikken maar kan het nog lang niet goed om het toe te passen. PHP ook niet heel goed, maar moet zeggen dat ik daar heel wat verder in ben, en zelf dingen kan typen. Anyways, thanks so far. Wat ik dus nodig heb is niet meer PHP gerelateerd.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan