foto(locatie van) verwijderen uit database

Status
Niet open voor verdere reacties.
Zo heb ik hem momenteel, hij verwijdert wel foto's maar wederom weer op volgorde(hoogste id eerst.
Snap het niet meer helemaal


PHP:
<table border ="3" > 
    <tr>
        <th>Foto's</th>
    </tr>
	<?php
	for ($i=0; $i < count ($remove); $i ){
	$remove1 = $remove[$i]; }

?>
    <?php
    $resultaat = mysql_query("SELECT * FROM reizen_foto WHERE reis_id= '".$_GET['nid']."'  ")  or die ("error: ".mysql_error());     
    while($row = mysql_fetch_array($resultaat)){
        $id = $row['id'];
        $foto2 =  '<input type="text" name="'.$remove1. '" id="'. $id . '" value="' . $id . '">'; 
        $foto = '<img src="http://localhost/modx/assets/modules/reizen/foto/'. $row['locatie'] . "\" id = ".$id. "></td></tr>"; 
          ?>
        <form method = "POST" action="" enctype="multipart/form-data">
            <tr>
                <td>
				    
                    <?php  echo $foto ; ?>
					<?php //echo $ ; ?>
            </td>
            </tr>
            <tr>
                <td>
                    
									
                    <input type="submit" name="remove" value="verwijder">
                </td>
            </tr>
        </form><?php 
    } ?>
</table> 
<?php
//error_reporting(E_ALL);
//ini_set('display_errors', '1');
 
include 'dbconnect.php'; 
if (isset($_POST['remove'])){
    mysql_query("DELETE  FROM reizen_foto WHERE id='".$id."'")or die(mysql_error());
    echo "<h3>verwijderd!</h3>";
    //echo $id;
    echo mysql_query("DELETE  FROM reizen_foto WHERE id='".$id."'")or die(mysql_error());
    //echo $remove1 ;
} ?>

Ok , even getest :
Ik weet nu (waarschijnlijk) waar die extra 1 wegkomt,

Wanneer ik dit doe is de uitkomtst van de echo altijd 1:

PHP:
    mysql_query("DELETE  FROM reizen_foto WHERE id='".$_GET['id']."'")or die(mysql_error());
    echo "<h3>verwijderd!</h3>";
    //echo $id;
    echo mysql_query("DELETE  FROM reizen_foto WHERE id='".$_GET['id']."'")or die(mysql_error());

Doe ik hem zoals boven deze code dan is deuitkomst id van de foto, met een 1 erachter!
 
Laatst bewerkt:
Frats, dat van dat $id is wat ik inderdaad ook al zei. Hij snapt het zelf wel, althans wat ik van zijn post daarna las.

Uhm.. wat je sowieso nog even moet doen, is die if isset helemaal bovenaan zetten. Als je dit niet doet, zie je namelijk bij het verwijderen van iets niet dat hij in je browser weggaat (althans, als je de url pas opnieuw invoert dan wel). Ik zou die if isset die jij hebt even weggooien, en vervangen door deze (dus helemaal bovenaan!)

PHP:
if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $query = "DELETE FROM reizen_foto WHERE id= '".$_POST['remove']."' ";
    echo 'Deze query wordt/is uitgevoerd: ' . $query;
    mysql_query($query) or die(mysql_error());
}

En doe de inputs als volgt:

HTML:
<input type="hidden" name="remove" value="<?php echo $id; ?>">
<input type="submit" value="verwijder">

Die for loop kan je weggooien, nergens voor nodig wat mij betreft. Post even wat je nu als uitkomst krijgt, als het dan niet werkt (en ik heb alles goed getypt :P), dan moet je misschien even unique names voor de inputs proberen. Maar dat zien we dan wel weer.
 
Dat van $id had ik inderdaad al door;)

een uitkomst heb ik iig nog niet, hij loopt even moeilijk te doen met de php in de input...

PHP:
      $id = $row['id'];
        $foto ='<input type="hidden" name="remove" value="<?php echo $id; ?>">';
        $foto = '<img src="http://localhost/modx/assets/modules/reizen/foto/'. $row['locatie'] . "\" id = ".$id. "></td></tr>";

AHUm, sorry, beter lezen is ook een vereiste voor me:P.
Hij doet het deels nu, ik kan verwijderen wat ik wil, echter de foto's laat hij niet meer zien, en ik heb dit er nu bij staan:
'; $foto = '"; ?> ">'; $foto = '"; ?> ">'; $foto = '"; ?> ">'; $foto = '"; ?> ">'; $foto = '"; ?> ">'; $foto = '"; ?>

NOG een Correctie, hij werkt als een trein!!:D
Ik had vergeten de <?php, weg te halen in de while, waardoor hij(logischerwijs) een nieuw stuk script start, waar hij een ander stuk in de helft afbreekt.

Mijn dank is wederom erg groot.
Echter één vraag, waarom heb ik dit nu zo neergezet zoals het staat? (ik wil hier graag weer van leren..
 
Laatst bewerkt:
Hij werkt nu dus? :thumb:

Mijn inputs had ik buiten PHP, maar jij zet je inputs binnen PHP. Dus kan <?php en ?> weg in je $foto variabele.
PHP:
// deze hieronder had je
//$foto ='<input type="hidden" name="remove" value="<?php echo $id; ?>">';
// deze wordt het
$foto ='<input type="hidden" name="remove" value="$id">';

Tevens heb je 2x $foto onder elkaar. Dan vervangt de onderste de bovenste. Wat je wel kan doen, is bij alle volgende met dezelfde variabele naam $foto .= doen (of gewoon het erachter zetten, je zet toch geen andere info tussen deze 2).

Je had voorheen op je remove een value met verwijder. Dus dat ging niet echt lukken. Nu heb je in remove dus de goede variabele zitten. Ik heb je isset veranderd, omdat dit beter is voor alle brwosers. Hij gaat dus wat doen als er een post formulier is gedaan (mocht je meerdere formulieren hebben, moet je wel iets anders verzinnen). Uhmm... ja ik weet niet precies wat je wil weten, dus wat je niet snapt. Zelf moet je de code even bestuderen wat ik veranderd heb, en logisch nadenken wat hij moet doen. Hoor het wel.

P.S. Hij doet het nu helemaal?
 
JA hij werkt helemaal, heb er nu dit van gemaakt:

PHP:
<?php 
	if ($_SERVER['REQUEST_METHOD'] == 'POST') 
	{
    $query = "DELETE FROM reizen_foto WHERE id= '".$_POST['remove']."' ";
    echo 'Deze query wordt/is uitgevoerd: ' . $query;
    mysql_query($query) or die(mysql_error());
	unlink("bestand.php");
	}
?>
<table border ="0" > 
    <tr>
        <th>Foto's</th>
    </tr>
	
    <?php
    $resultaat = mysql_query("SELECT * FROM reizen_foto WHERE reis_id= '".$_GET['nid']."'  ")  or die ("error: ".mysql_error());     
    while($row = mysql_fetch_array($resultaat))
	{
        $id = $row['id'];
        //$foto ='<input type="hidden" name="remove" value=" //echo $id; ">';
        $foto = '<img src="http://localhost/modx/assets/modules/reizen/foto/'. $row['locatie'] . "\" id = ".$id. "></td></tr>"; 
    ?>
        <form method = "POST" action="" enctype="multipart/form-data">
            <tr>
                <td>				    
                    <?php  echo $foto ; ?>
                </td>
            </tr>
            <tr>
                <td>                    
					<input type="hidden" name="remove" value="<?php echo $id; ?>">				
                    <input type="submit" value="verwijder">
                </td>
            </tr>
        </form>
<?php 
    } 
 ?>
</table>
Mijn dank is groot:D
Nu nog eens even zien hoe dat unlink gebeuren werkt, want fuysiek moet ie ook van de server af natuurlijk;)
 
OK, dan kun je de vraag op opgelost zetten.

Zal ook nog je laatste andere problem oplossen. Voordat je "DELETE FROM" doet, moet je eerst even ophalen het pad van deze $_POST['remove'] (neem aan dat je dat in je tabel hebt staan namelijk) via een query. Is dat in de map plaatjes/ dan zeg je dat dit de directory is en daarachter zet je dan de naam van het bestand. Het is dan bijv. plaatjes/bestand.jpg. Je kan dan simpelweg dit in een variabele proppen ($file = "plaatjes/bestand.jpg";) en dan unlink($file); en klaar is kees. Daarna doe je dan wel daadwerkelijk DELETE FROM. De logica hierachter is, dat je dus eerst opvraagt wat hij moet verwijderen en waar hij staat, immers als hij uit je database is, kan je het niet meer lokaliseren ;)
 
Thnx;):)

in de database sla ik alleen de naam van de foto op, dus bijv. foto1.jpg.
Hoe zet ik die query dan? ik dacht namelijk om het op deze manier te doen, maar dat werkt in ieder geval niet:(

PHP:
<?php 
	if ($_SERVER['REQUEST_METHOD'] == 'POST') 
	{
	unlink("//localhost/modx/assets/modules/reizen/foto/".$bestand);
    $query = "DELETE FROM reizen_foto WHERE id= '".$_POST['remove']."' ";
    echo 'Deze query wordt/is uitgevoerd: ' . $query;
    mysql_query($query) or die(mysql_error());
	
	}
?>
<table border ="0" > 
    <tr>
        <th>Foto's</th>
    </tr>
	
    <?php
    $resultaat = mysql_query("SELECT * FROM reizen_foto WHERE reis_id= '".$_GET['nid']."'  ")  or die ("error: ".mysql_error());     
    while($row = mysql_fetch_array($resultaat))
	{   $bestand = $row['locatie']; 
		$id = $row['id'];
        //$foto ='<input type="hidden" name="remove" value=" //echo $id; ">';
        $foto = '<img src="http://localhost/modx/assets/modules/reizen/foto/'. $row['locatie'] . "\" id = ".$id. "></td></tr>";
 
Het bestand dat je runt, dus waarschijnlijk een index in je modx ofzo, moet je nemen als beginpad voor het deleten. Dus van daaruit moet je gaan 'rekeken'. Je zegt dus niet //localhost/modx/assets/modules/reizen/foto/ maar assets/modules/reizen/foto/

PHP:
<?php 
	if ($_SERVER['REQUEST_METHOD'] == 'POST') {
$query = "SELECT bestand FROM reizen_foto WHERE id= '".$_POST['remove']."' ";
$result = mysql_query($query);
while($row = mysql_fetch_array($result )) {   
                $bestand = $row['bestand']; 
}
        $fotopad = "assets/modules/reizen/foto/";
	unlink($fotopad.$bestand);
    $query = "DELETE FROM reizen_foto WHERE id= '".$_POST['remove']."' ";
    echo 'Deze query wordt/is uitgevoerd: ' . $query;
    mysql_query($query) or die(mysql_error());
} ?>

Zoiets zal het dus zijn.
 
Dank je:D zover had ik het inerdaad begrepen, echter ik krijg het basepath schijnbaar niet goed(Warning: unlink(/reizen/foto/foto3.jpg) [function.unlink]: No such file or directory in C:\xampp\htdocs\modx\assets\modules\reizen\includes\verwijder.php on line 10)

Ik run dit vanuit de module reizen(map) dus het pad waar het bestand stat zou dan zijn assets/modules/reizen/includes/verwijder.php en naar de foto map is het: assets/modules/reizen/foto/foto.jpg

GOT it: base path begint in een localhost dan schijnbaar ook met c:/xampp etc.

Dan ke je voor je geweldige heldere uitleg(wederom) ;):)
 
Laatst bewerkt:
hmmm, toch weer n uitdaging erbij, ik gebruik de verwijder functie, als onderdeel van een formulier bewerken, daar kun je dus de aangemaakt reis mee bewerken...

dus
PHP:
  if ($_SERVER['REQUEST_METHOD'] == 'POST') {

gaat helaas niet meer op...

Dit kun je natuurlijk weer ondervangen door if(isset($_POST['knopnaam']{

Maar niemand is er een groot fan??? en is er een alternatief?
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan