Beste PHP-hulpers,

Ik zit met een probleem waar ik momenteel niet uit weet te komen.
Ik heb een script geschreven waar gebruikers foto albums kunnen maken en hier foto's aan kunnen toevoegen.
Dat gaat allemaal prima, ook het verwijderen van de foto's gaat prima. Echter gaat er bij het verwijderen van albums iets mis.

Ik heb het volgende script geschreven om gebruikers albums te laten verwijderen:

<?php
$controle = false;

if (isset($_GET['p_id'])) {
$p_query = "SELECT albums.link, tumbs.id, tumbs.src FROM albums, tumbs";
$p_result = mysql_query($p_query);
$p_row = mysql_fetch_array($p_result);

$p_deleteQuery = "DELETE FROM albums, tumbs WHERE id = ".$_GET['p_id'];
mysql_query($p_deleteQuery);

$src = $p_row['src'];
$controle = true;

unlink($src);
echo "<p class='update'>Deze pagina is succesvol verwijderd.<span class='close'>X</span></p>";

if($controle == true) {
$p_query = "SELECT id, link FROM albums";
$p_result = mysql_query($p_query);

while($p_row = mysql_fetch_array($p_result)) {
echo "<div class='pagina'>
<p class='edit_pagina'>".$p_row['link']."</p>
<p class='delete_pagina'><a href='jrwd_admin.php?p_id=".$p_row['id']."'>Verwijder pagina</a></p>
</div>";
}
}
} else {
$query = "SELECT id, link FROM albums";
$result = mysql_query($query);

while($row = mysql_fetch_array($result)) {
echo "<div class='pagina'>
<p class='edit_pagina'>".$row['link']."</p>
<p class='delete_pagina'><a href='jrwd_admin.php?p_id=".$row['id']."'>Verwijder pagina</a></p>
</div>";
}
}
?>

Echter gebeurd hier het volgende niet:
- Rijen uit de databases worden niet verwijderd. Niet bij albums en niet bij tumbs.

Wat gebeurd er wel:
- De verkeerde afbeelding word verwijderd van de server (als ik id1 aanklik word de afbeelding van id2 verwijderd)

Het gevolg hiervan is dat er bij het overzicht van albums nog wel een vak staat met daarin een afbeelding zonder src (omdat de rijen niet verwijderd worden).

Ik heb geen idee waar dit aan kan liggen en wat ik fout doe. Ik heb al meerdere dingen geprobeerd echter lijkt niets te werken.
De id's van beide databases lopen ook gelijk. Zo is album x in de database albums id 1 en in de database tumbs ook id 1.

Iemand enig idee wat ik hier verkeerd doe of wat ik eraan kan doen?
Bij voorbaat dank!
Zet error_reporting(E_ALL) aan en maak een nette foutafhandeling van de query's. Nu is het volgens mij alleen maar raden naar de oorzaak.

[size=xsmall]Toevoeging op 01/11/2012 15:28:59:[/size]

Een $_GET direct in een query zetten is een lek.
regel 5:
$p_query = "SELECT albums.link, tumbs.id, tumbs.src FROM albums, tumbs WHERE albums.id = ".$_GET['p_id'];
Bedankt voor jullie reacties.

Om eerst even in te gaan op SanThe, ik heb wel een error reporting in me script staan, echter had ik die niet mee gekopieerd omdat deze nog een stuk daarboven staat. Dit was de enige relevante code, daarom was ik vergeten dat stukje er wél bij te zetten.
Het vreemde is echter dat ik ook geen errors krijg als ik iets verwijder. Alleen als dus de verkeerde afbeelding word verwijderd er niks meer verwijderd kan worden omdat de foto niet meer bestaat (Logisch. Dit probleem is echter opgelost door de WHERE van flip toe te voegen).

Over de $_GET direct heb ik nog nooit iets gelezen in beveiliging artikelen (lees alleen Nederlandse omdat ik dat fijner vind bij artikels over beveiliging. Misschien een link of tips naar hoe ik dat beter/wel op de juiste manier kan doen?

Flip, bedankt voor je reactie.
Volgens mij had ik dit zelf ook al eens geprobeerd en het lost mijn problemen helaas niet op.

Ik heb het idee dat de delete query niet helemaal juist werkt omdat er uit geen van beide databases een rij verwijderd word.
Daarom heb ik de $p_deleteQuery in een echo gezet en daar komt dan het volgende uit:


DELETE FROM albums, tumbs WHERE id = 4


Ik heb echter geen idee wat hier fout aan is en wat ik dus fout doe..

Someone?
Foutafhandeling van query's lijkt te missen.

Debuggen: echo je query naar het scherm en kijk of dat klopt met wat je verwacht.
Kopieer eventueel de query en voer die direct uit in phpadmin.

klopt regel 10 wel?
Obelix, bedankt voor je reactie. Zoals ik in mijn reactie op SanThe al zei had ik eerder in mijn script wel een foutafhandeling staan (die ook hiervoor werkt). Echter was ik die vergeten hierbij te kopieren. Zoals ik dus ook al vermelde kreeg ik geen errors via de fouthandeling.

Thanks voor je tip om de query kopieren in phpMyAdmin.
Ik heb dit geprobeerd en hieruit kreeg ik wel een error. Ik heb het volgende gekopieerd in phpMyAdmin:
DELETE FROM albums, tumbs WHERE id = 4


Dit is wat ik kreeg uit mijn echo van de $p_deleteQuery zoals ik ook melde in mijn tweede post.
Hierop krijg ik in phpMyAdmin de volgende error:
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'WHERE id = 4' at line 1


Echter snap ik niet wat er fout is aan deze line, evenals dat je vroeg of line 10 wel klopt.
Volgens mij is deze ook gewoon juist.

Of zit ik hier verkeerd?
Je hebt, mogelijk, error-reporting aan staan, maar geen foutafhandeling. In je code zie ik in ieder geval bij de query's nergens staan dat je controleert of ze gelukt zijn.

Kun je in 1 delete-query met 2 tabellen werken?

Reageren