foto(locatie van) verwijderen uit database

Status
Niet open voor verdere reacties.

thapriest

Gebruiker
Lid geworden
28 okt 2009
Berichten
559
Beste,

Kan iemand me vertellen wat ik hier fout doe?
Ik wil graag, met een knop de foto(locatie van foto) verwijderen uit de database, echter krijg ik wel de melding verwijderd, en hij echoot de id, maar hij verwijdert niks.

Dit is stap 1 van 2, eerst wil ik dat hij hem uit de database kan verwijderen, en dan wil ik straks nog gaan kijken hoe ik de foto fysiek van de server kan laten verwijderen.

PHP:
<table border ="3" > 
    <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 = "id" 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 ; ?>
			</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='".$_POST['id']. "'")or die(mysql_error());
    echo "<h3>verwijderd!</h3>";
	echo $id;
	
	
} ?>
 
Je zou nog even kunnen proberen om de aanhalingstekens rondom de ID weg te halen, het is een getal geen tekst, misschien dat dat de reden is.

Wat je ook kunt proberen is de hele query die je uitvoert echo'en om te kijken wat ie precies probeert te doen.

En voor je volgende stap, fysiek verwijderen doe je met unlink() :P
 
dank je voor je snelle antwoord:)
Waar haal ik de aanhalingstekens weg? in de query, of in de hidden input?

Ik had al iets gelezen met unlink, maar daar kom ik nog niet helemaal uit...
 
In de query.

Weet niet zeker of het werkt hoor, maar als je een getal veld wilt selecteren doe je het zonder aanhalingstekens.

[sql]
DELETE FROM table WHERE id = 1
[/sql]

en niet

[sql]
DELETE FROM table WHERE id = '1'
[/sql]
 
Hmmmm, nu probeer ik t om een handmatig op te geven, een waarvan ik weet dat ie bestaat dan doet ie het..

Maar wat ik ook prbeer met die variable, de id blijft leeg, wanneer ik de query echo?

nu ik het zo doe:
PHP:
mysql_query("DELETE  FROM reizen_foto WHERE id=".$id."")or die(mysql_error());

Verwijdert hij wel, maar niet de aangeklikte, maar op volgorde van hoog id, naar lager id??????
 
Laatst bewerkt:
Zie de fout zelf ook niet 1 2 3. Uhmm misschien een domme vraag, maar de tabel reizen_foto heeft wel gewoon een id veld? En de input veldjes krijgen wel gewoon de id value waar jij hem invult? Als dat niet het geval is, dan gaat het daarvoor al fout namelijk. En je gebruikt mysql_fetch_array, maar dat gebruik jij in jouw geval helemaal niet. fetch_assoc is sneller (alhoewel je er weinig van merkt als het om 'lage' aantallen resultaten gaat), je kan dit ook wel even googlen voor meer info.

EDIT: en enctype="multipart/form-data" in je form heb je enkel nodig als je files gaat versturen. Dat is niet het geval, dus kan je dit weglaten.
EDIT2: de echo van $id onderaan heeft geen zin, want de laatste keer dat je deze 'aanpast' is in je mysql_fetch, en dat is dan inderdaad het laatste getal (hoogste/laagste)
 
Laatst bewerkt:
jaja de tabel reizen_foto heeft een id-veld.
zoals genoemd als k m een getal meegeef verwijdert hij wel, de variable geeft me de problemen.

ik heb de fetch_array gebruikt omdat het om max. een stuk of 8 resultaten gaat;)

W.b.t de enctypype, heb je helemaal gelijk, echter ga ik dit form straks nog iets aanpassen, zodat je foto's ook kunt vervangen, dan hebben we m wel zo nodig;)

W.b.t het $id onderaan, klopt het wat je zegt(helemaal niet bij stilgestaan, echter zou dit dan ook verklaren waarom hij in die volgorde nu de foto's verwijdert, en zo ja, hoe pas ik dit aan?
 
Het probleem zou nog kunnen zijn dat ze allemaal hetzelfde "name" element hebben in de form, volgensmij is dat niet toegestaan en het zou verklaren waarom hij de verkeerde id pakt.

Probeer ze eens allemaal uniek te maken?
 
bedoel je dat in deze regel?:
PHP:
//$foto =  '<input type = "hidden" name = "id" id="'. $id .'" value = "' . $id . '">';

die heb ik u uit gecomment, want deze heeft helemaal geen toegevopegde waarde, het ide krijgt hij immers in deze regel al mee:
PHP:
$foto = '<img src="http://localhost/modx/assets/modules/reizen/foto/'. $row['locatie'] . "\" id = ".$id." ></td></tr>";

Wat ik zo kan zien denk ik dat hier de oplossing in schuilt:
EDIT2: de echo van $id onderaan heeft geen zin, want de laatste keer dat je deze 'aanpast' is in je mysql_fetch, en dat is dan inderdaad het laatste getal (hoogste/laagste)

Want het klopt inderdaad dat de $id variabele die ik aanroep daar de hoogste/laagste zou zijn, want ik zet hem immers in de mysql_fetch, ik zou dus per foto een id moeten zetten, maar ik weet alleen niet hoe.
 
Laatst bewerkt:
PHP:
//$foto =  '<input type="hidden" name="id" id="''. $id . '" value="'' . $id . '">';

Heb je wel nodig, anders wordt er geen id verstuurd. Er misten wel wat aanhalingstekens en er stonden wat spaties teveel. Ik zou de variabele even hernoemen, noem 'm voor mijn part $foto2 en echo 'm gewoon in je form. Dan heeft je verwerkingspagina een ID om mee te werken.

Forgive me als dit al gezegd is, heb niet hele topic uitgebreid gelezen.
 
Hmmm als ik de regel zoals jou toepas, dan krijg ik een php error, wrojng syntax o.i.d....
Met het echooen in mn form kom ik echter ietsje verder, maar wanneer ik dan op verwijder klik, krijg ik een melding: http://localhost
No Record found for id 214(of een ander getal, het gekke is dat het precies de id is die bij de foto hoort)
Maar hij doet er dan weer niets mee, wat zie ik over het hoofd?
 
Ik zat een beetje te falen met de quotes, in de editor hier leken geen quotes te staan, dus had ik ze toegevoegd, ten overvloede:

PHP:
$foto2 =  '<input type="hidden" name="id" id="'. $id . '" value="' . $id . '">';
 
Aha, dat gebeurt je soms:P..

Maar helaas zelfde foutmelding, echo ik hem op de verkeerde plek?
Ik echo hem net boven de echo van de foto oproep...
 
In ieder geval erg bedankt voor het meedenken(mede enschedeer;)).....

kom overigens nu wel iets geks tegen, als ik de query echo, krijg ik het id te zien, met een 1 erachter, dus stel het id is 214, dan krijg ik 2141 te zien....
 
Hehe, ik zie nog iets leuks.

Je echo't de variabele $id, maar om de query op te bouwen gebruik je de variabele $_POST['id'] en die hoeven natuurlijk niet hetzelfde te zijn. Dat zou het eea kunnen verklaren.
 
Post anders eens je hele code zoals je die nu hebt.

En ik ben inderdaad ook een enschedeër ;) Hoewel ik op kamers ergens anders woon :)


[OT]
Hoe was het "noodweer" in Enschede, veel schade?
[/OT]
 
Ik snap geloof ik niet helemaal wat je bedoelt?:o
Zoals Raymond88 al aangaf echo ik die variabele, maar wordt deze gezet bij het uitvoeren van de whil en wisselt daarna niet meer?

Of ben ik nu de draad helemaal kwijt?(zal niet de eerste kker zijn:P)
 
De code :

PHP:
<table border ="3" > 
    <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'];
        $foto2 =  '<input type="hidden" name="id" 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 $foto2 ; ?>
            </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='".$_POST['id']. "'")or die(mysql_error());
    echo "<h3>verwijderd!</h3>";
    echo $id;
    echo mysql_query("DELETE  FROM reizen_foto WHERE id='".$_POST['id']. "'")or die(mysql_error());
    
} ?>


[OT]
Viel reuze mee, beetje wat takken op de weg, maar met n goeie 15 min. was het compleet voorbij.
[/OT]
 
Ik bedoel dit:

echo $id;
echo mysql_query("DELETE FROM reizen_foto WHERE id='".$_POST['id']. "'")or die(mysql_error());


Die $id bevat niet wat jij denkt dat die bevat. Dat is een overblijf variabele uit je loop een stuk hoger.

En probeer eens om alle input=hidden elementen een unieke naam te geven en onderin de juiste uit te lezen, dat helpt waarschijnlijk een heleboel :)
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan