hoi,

ik heb een scriptje gemaakt... het werkt alleen nog niet helemaal goed
Het is de bedoeling dat bij de submit de account die ervoor staat verwijderd wordt, alleen nou verwijdert ie ze allemaal:S

hier het script:
<?php
echo "<form method='post'>";
while($row3 = mysql_fetch_array($res3)){
if($row3['lastlogin'] + $onlinetijd > time()){
if(isset($_POST['delete'.$row3['naam'].''])){
$sql = "DELETE FROM login WHERE id = '".$row3['id']."'";
mysql_query($sql) or die (mysql_error ());
$sql2 = "DELETE FROM leden WHERE naam = '".$row3['naam']."'";
mysql_query($sql2) or die (mysql_error ());
}
echo '<b><font color="green">O</font></b> <u>'.$row3['naam'].'</u>';
echo "<input type='submit' value='Delete account' name='delete".$row3['naam']."' id='delete".$row3['naam']."' />";// verwijder account knop
}
}
?>
tja, zolang wij niet weten hoe jij de naam en het id selecteert, kunnen wij moeilijk inschatten wat er fout gaat.

Ik snap in elk geval niet waarom je 2 DELETE-queries nodig hebt, wanneer je de juiste foreign key met de juiste ON DELETE hebt ingesteld, heb je aan 1 DELETE-query meer dan genoeg.

Overigens is een DELETE niet nodig, gewoon een kolom met een status in de tabel opnemen is vaak handiger. Die zet je vervolgens op 'verwijderd' en klaar ben je. Dan kun je fouten veel eenvoudiger herstellen, even de status aanpassen is voldoende.
hierin staat alles wat je moet weten:
<?php
$sql3 = "SELECT * FROM login ORDER BY lastlogin DESC";
$res3 = mysql_query($sql3);
echo "<form method='post'>";
while($row3 = mysql_fetch_array($res3)){
if($row3['lastlogin'] + $onlinetijd > time()){
if(isset($_POST['delete'.$row3['naam'].''])){
$sql = "DELETE FROM login WHERE id = '".$row3['id']."'";
mysql_query($sql) or die (mysql_error ());
$sql2 = "DELETE FROM leden WHERE naam = '".$row3['naam']."'";
mysql_query($sql2) or die (mysql_error ());
}
echo '<b><font color="green">O</font></b> <u>'.$row3['naam'].'</u>';
echo "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type='submit' value='Delete account' name='delete".$row3['naam']."' id='delete".$row3['naam']."' /><br />"; //delete account knop
}

}
?>

het is dus de bedoeing dat hij EEN record delete, waarvan de gegevens in 2 tabellen staan (vandaar de 2 queries).
Zoals ie nou is delete ie niet een record, maar alle records die er in de tabellen staan. Dat is dus niet de bedoeling.
Het enige dat ik eigelijk nodig heb is een stukje code dat aan een <input> een identieke name geeft. Dat heb ik nou, maar dan moet dat nog in de query komen, alleen dat lukt niet echt . Het gaat dan om dit stukje:

<?php
if(isset($_POST['delete'.$row3['naam'].''])){
?>
in de context hierboven. Die $_POST['delete'.$row3['naam'].''] werkt niet zoals hij zou moeten werken.

[quote]
edit: De naam in de tabel leden is gelijk aan de naam in de tabel login
[/qoute]
srry voor bump...

IEMAND????????????????????????????????
Jouw $_POST['delete'.$row3['naam'].''] is een hele vreemde constructie. Je gaat toch niet voor iedere waarde uit de database een andere variabele aanmaken? Je geeft de variabele een andere inhoud, maar dat is dan ook alles.

Verder is het niet nodig om 2 DELETE-queries uit te voeren wanneer je de juiste foreign key's hebt aangemaakt en de juiste ON DELETE-actie hebt ingesteld. Gekoppelde gegevens worden dan automatisch verwijderd. Dat is nu net zo handig aan een relationele database!

Of gebruik je soms de MyISAM-engine van MySQL???
ja ik gebruik de MyISAM engine

en hoe geef ik een variabele dan een andere inhoud bij de submit in dat form?

Pieter schreef op 17.01.2008 18:21
ja ik gebruik de MyISAM engine

en hoe geef ik een variabele dan een andere inhoud bij de submit in dat form?

Met MyISAM kun je geen relationele database bouwen, MyISAM heeft eigenlijk niks met een database te maken. Het is troep, bagger, een bak ellende. Ben je een held en wil je MySQL gebruiken, gebruik dan in elk geval innoDB. Ga dit dus eerst aanpassen en dan ook FK's toepassen.

Een input-veld kun je ook een value meegeven, dat is niet zo spannend:
<input type="hidden" name="delete" value="23" />

Wanneer je deze verstuurt, zul je op de server $_POST['delete'] ontvangen met de waarde 23.
wat is dan eigelijk het verschil tussen wat je met MyISAM kan en met die innoDB?
Pieter schreef op 17.01.2008 19:09
wat is dan eigelijk het verschil tussen wat je met MyISAM kan en met die innoDB?
MyISAM heeft een full text search, maar is verder niets meer dan een tekstbestand dat je met een SQL-dialect kunt benaderen. innoDB is een relationele database, zonder full text search, die je met een SQL-dialect kunt benaderen.

Verder heeft MySQL een hele berg (ernstige) problemen/bugs/uitdagingen, maar wordt het ook vrijwel overal aangeboden. En omdat het overal wordt aangeboden, denkt iedereen dat het een database is.

Zoals reeds gezegd, wil je echt MySQL gaan gebruiken (alleen voor echte helden), gebruik dan innoDB. Wil je een relationele database gebruiken, vergeet dan MySQL, maar ga bv. met PostgreSQL of FireBird aan de slag. Dan is je data wel in goede handen.

Reageren