Delete en wijzigen foto + tekst uit database
Ik wil graag mijn foto's die in een map staan kunnen verwijderen of wijzigen, hierbij heb ik ook gegevens in de database staan die bij die foto. Hoe kan ik dit het beste doen?
Aan de hand van het id in de database de foto verwijderen of wijzigen? Wat wil je precies weten?
Ozzie PHP op 28/11/2011 14:39:13:
Aan de hand van het id in de database de foto verwijderen of wijzigen? Wat wil je precies weten?
Ik heb een script waarbij ik een plaatje uit een map haal en daarbij de juiste gegevens uit de database toon, nu wil ik ook de gegevens kunnen verwijderen en wijzigen. Dus in de database staat id = 1 en plaatje in de map heet 1 en nu wil ik dus zeggen delete uit database id 1 en uit map plaatje 1.
Gewijzigd op 28/11/2011 14:46:02 door Dirk Renes
Toevoeging op 28/11/2011 14:47:37:
DELETE FROM mijnplaatjes WHERE id=1
Ozzie PHP op 28/11/2011 14:46:30:
Ja, maar wat is nu je vraag? Je kunt de gegevens wijzigen in PhpMyAdmin of via een script.
Toevoeging op 28/11/2011 14:47:37:
DELETE FROM mijnplaatjes WHERE id=1
Toevoeging op 28/11/2011 14:47:37:
DELETE FROM mijnplaatjes WHERE id=1
Op dit moment kan het alleen nog via phpmyadmin en het plaatje verwijderen door op delete te drukken in de map zelf, alleen ik wil een controlepaneel bouwen waarbij je die mogelijkheid heb.
Wat heb je zelf al geprobeerd?
Smur f op 28/11/2011 14:53:21:
Wat heb je zelf al geprobeerd?
Ik heb een stukje code draaien, waarbij ik alleen me gegevens uit de database en map haal, maar dat werkte niet.
Laat ook je foutafhandeling zien.
Dirk Renes op 28/11/2011 14:44:58:
Ik heb een script waarbij ik een plaatje uit een map haal en daarbij de juiste gegevens uit de database toon, nu wil ik ook de gegevens kunnen verwijderen en wijzigen. Dus in de database staat id = 1 en plaatje in de map heet 1 en nu wil ik dus zeggen delete uit database id 1 en uit map plaatje 1.
Kun je het niet beter anders om doen, dus de naam van het plaatje in de database zetten en van daaruit werken?
Ger van Steenderen op 28/11/2011 15:12:59:
Kun je het niet beter anders om doen, dus de naam van het plaatje in de database zetten en van daaruit werken?
de naam van het plaatje heb ik ook in de database staan, dat is namelijk het id.
Dirk Renes op 28/11/2011 14:44:58:
Ik heb een script waarbij ik een plaatje uit een map haal en daarbij de juiste gegevens uit de database toon, nu wil ik ook de gegevens kunnen verwijderen en wijzigen. Dus in de database staat id = 1 en plaatje in de map heet 1 en nu wil ik dus zeggen delete uit database id 1 en uit map plaatje 1.
Kun je het niet beter anders om doen, dus de naam van het plaatje in de database zetten en van daaruit werken?
de naam van het plaatje heb ik ook in de database staan, dat is namelijk het id.
Heb de naam van het plaatje er ook in staan.
Toevoeging op 28/11/2011 15:55:46:
Heeft iemand een scripje waarbij ik meel aan de slag kan?
Gewijzigd op 28/11/2011 15:26:00 door Dirk Renes
PHP:
Code (php)
1
2
3
4
5
6
7
8
9
10
2
3
4
5
6
7
8
9
10
<?php
if (isset($_GET['action']) && $_GET['action'] == 'del') {
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'images' .
DIRECTORY_SEPARATOR . $_GET['img_id'] . '.jpg';
if (unlink($file)) {
mysql_query("DELETE FROM images WHERE img_id=" . $_GET['img_id'];
}
else echo 'Kan bestand niet verwijderen!';
}
?>
if (isset($_GET['action']) && $_GET['action'] == 'del') {
$file = $_SERVER['DOCUMENT_ROOT'] . DIRECTORY_SEPARATOR . 'images' .
DIRECTORY_SEPARATOR . $_GET['img_id'] . '.jpg';
if (unlink($file)) {
mysql_query("DELETE FROM images WHERE img_id=" . $_GET['img_id'];
}
else echo 'Kan bestand niet verwijderen!';
}
?>
http://domein.tld/script?action=dell&img_id=../../../path/naar/ander/plaatje/wat/niet/weg/mag
En je bestand is weg terwijl het niet moet, heerlijk
<offtopic>
Waarom gebruik je DIRECTORY_SEPARATOR ipv "/"?
</offtopic>
Toevoeging:
Zie ook de opmerking van TJVB hierboven.
Gewijzigd op 28/11/2011 16:28:52 door Ozzie PHP
Ozzie, DIRECTORY_SEPERATOR is een php constante. Het gebruik daarvan lijkt mij niet erg. (Doe het zelf ook)
TJVB tvb op 28/11/2011 16:36:09:
Ozzie, DIRECTORY_SEPERATOR is een php constante. Het gebruik daarvan lijkt mij niet erg. (Doe het zelf ook)
Er is vast verschil tussen de Windows en de Linux seperator lijkt mij. Deze constante zal de juiste bevatten.
Is het dan toch aan te raden om DIRECTORY_SEPERATOR te gebruiken? (Zou het bijvoorbeeld kunnen dat over een paar jaar de slash ineens wordt vervangen door iets anders? Bijvoorbeeld "|"?)
"/" is wel een stuk korter dan DIRECTORY_SEPERATOR...
Gewijzigd op 28/11/2011 16:53:10 door Ozzie PHP
De '/' werkt vaak wel maar is niet overal de juiste keuze. En zoals je zelf al zegt is de constante toekomst bestendig.
oke :) dan zal ik die ook maar gaan gebruiken dan...
TJVB tvb op 28/11/2011 16:26:23:
nice,
http://domein.tld/script?action=dell&img_id=../../../path/naar/ander/plaatje/wat/niet/weg/mag
En je bestand is weg terwijl het niet moet, heerlijk
http://domein.tld/script?action=dell&img_id=../../../path/naar/ander/plaatje/wat/niet/weg/mag
En je bestand is weg terwijl het niet moet, heerlijk
En daarom als je toch de bestandnamen en meta-data in de informatie in de database op slaat, gebruik gewoon het ID van het record die naar dat bestand verwijst.
Uiteraard beveiligd met mysql_real_escape_string()
Ozzie PHP op 28/11/2011 16:52:44:
Volgens mij werkt een "/" altijd toch?
Is het dan toch aan te raden om DIRECTORY_SEPERATOR te gebruiken? (Zou het bijvoorbeeld kunnen dat over een paar jaar de slash ineens wordt vervangen door iets anders? Bijvoorbeeld "|"?)
Is het dan toch aan te raden om DIRECTORY_SEPERATOR te gebruiken? (Zou het bijvoorbeeld kunnen dat over een paar jaar de slash ineens wordt vervangen door iets anders? Bijvoorbeeld "|"?)
Niet dat het ooit veranderd, maar het de DIRECTORY_SEPERATOR is afhankelijk van het platform waar je op draait. Op Windows is dit de backslash '\', en op Unix is dit de '/'
Gewijzigd op 28/11/2011 18:45:30 door - Ariën -
- Aar - op 28/11/2011 18:39:35:
Niet dat het ooit veranderd, maar het de DIRECTORY_SEPERATOR is afhankelijk van het platform waar je op draait. Op Windows is dit de backslash '\', en op Unix is dit de '/'
Oké. Ik dacht eigenlijk dat Windows ook overweg kon met een "/".