Forum » Server-Side scripting » Delete maar laat 1 row staan..
Rapifia Europe
Berichten: 3719
avatar
Offline Stuur privebericht
Beste,

Bij planemania.nl kan je monteurs inhuren.
Als gratis spelende 1 en als Premium 5.
Maar: Als je premium verloopt, moeten die 5 monteurs weg, en moet er 1 blijven staan (die je krijgt als free).

Ik haal de monteurs zo op:
Code | Selecteer Alles
minimaliseren
1
mysql_query("SELECT id FROM personeel WHERE eigenaar='".$data['name']."' AND soort='3'");


Nu de vraag:
Hoe kan ik alle 5 verwijderen, maar er wel 1 laten staan?

Kan dit met LIMIT 1,4, worden dan de laatste 4 records verwijderd?
Dus dat ik in de delete doe:
Code | Selecteer Alles
minimaliseren
1
mysql_query("DELETE FROM personeel WHERE eigenaar='".$data['name']."' AND soort='3' LIMIT 1,4");


Maar dan volgend probleem:
Als je er nu 2 hebt, dan moet er alleen LIMIT 1 worden verwijderd...

Dus hoe doe ik dit het makkelijkst?

Bedankt alvast,

Lars Groot
03-07-2010 19:01
Dit topic is 303 keer bekeken door 47 verschillende leden
Reacties op: "Delete maar laat 1 row staan.."
1 | 2 Volgende pagina
Berichten: 2123
avatar
Offline Stuur privébericht
Code | Selecteer Alles
minimaliseren
1
DELETE FROM personeel WHERE eigenaar='EIGENAAR' AND soort='3' LIMIT ((SELECT COUNT(1FROM personeel WHERE eigenaar 'EIGENAAR')-1)


Verwacht dat dit wel moet kunnen: Een subquery in de LIMIT bij een DELETE statement. Laat de query wel even op wat testdata los. Is sowieso verstandig bij iedere query die iets ingewikkelder is.
03-07-2010 19:14
Rapifia Europe
Berichten: 3719
avatar
Offline Stuur privébericht
Ik heb nu dit in een cron staan:
Code | Selecteer Alles
minimaliseren
1
mysql_query("DELETE FROM personeel2 WHERE eigenaar='".$sel1['name']."' AND soort='3' LIMIT ((SELECT COUNT(id) AS id2 FROM personeel2 WHERE eigenaar = '".$sel1['name']."' AND soort='3')-1)") or die(mysql_error());


Maar ik krijg deze error:
Quote

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 '((SELECT COUNT(id) AS id2 FROM personeel2 WHERE eigenaar = 'admin' AND soort='3'' at line 1



Ik heb al wat geprobeerd, maar ik behoud deze error...
Zou iemand het even willen oplossen

Lars
03-07-2010 19:41
Berichten: 2123
avatar
Offline Stuur privébericht
Hmm, dan zal die subquery daar wel niet mogen staan. Je kunt deze query gewoon apart uitvoeren, en het resultaat via PHP in de query zetten.
03-07-2010 19:44
Berichten: 2177
avatar
Offline Stuur privébericht
doe anders via mysql update
03-07-2010 19:44
Rapifia Europe
Berichten: 3719
avatar
Offline Stuur privébericht
@robin,
Hoe dan?

On:
Het is nu opgelost.
Dit is de huidige code:
Code | Selecteer Alles
minimaliseren
1
2
3
4
5
6
$res1 mysql_query("SELECT name FROM users WHERE vipdays = '0'");
while(
$sel1 mysql_fetch_array($res1)){
$result2 mysql_query("SELECT id FROM personeel WHERE eigenaar = '".$sel1['name']."' AND soort='3'");
$result mysql_num_rows($result2)-1;
mysql_query("DELETE FROM personeel WHERE eigenaar='".$sel1['name']."' AND soort='3' LIMIT ".$result."") or die(mysql_error());
}


En het werkt perfect
Via count(); werkte het niet, dus maar met mysql_num_rows(); gedaan.

Bedankt Killingdevil en de rest

Lars

Nieuwe reactie samengevoegd met originele reactie op 03.07.10 20:18:53:
Update:
Ik krijg deze error:

Quote

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 '-1' at line 1



Terwijl er helemaal geen -1 in staat...
Weet iemand hoe ik die oplos?
03-07-2010 20:12
R. Jipping
Berichten: 1598
avatar
Offline Stuur privébericht
$result = mysql_num_rows($result2)-1;

dit is de enige -1 in je script is het script nog groter? zoja laat dat ook even zien
03-07-2010 20:33
Rapifia Europe
Berichten: 3719
avatar
Offline Stuur privébericht
Verder is er geen -1 in het script..
Dus dan moet dat het zijn.
Maar ja, waarom

Lars
03-07-2010 20:36
Berichten: 2177
avatar
Offline Stuur privébericht
@lars, ik doe toch nog ff mijn oplossing uitleggen
Nu doe je gewoon delete -4
maar via update doe je gewoon monteurs = '1'

Robin
03-07-2010 21:01
Rapifia Europe
Berichten: 3719
avatar
Offline Stuur privébericht
Hoe bedoel je Robin?
Ik begrijp je nog niet...

Als er 5 records zijn van die gebruiker, dan moeten er 4 verwijderd worden, bij 3 2 records etc.

Lars
03-07-2010 21:02
Berichten: 2177
avatar
Offline Stuur privébericht
iets in deze richting:
Code | Selecteer Alles
minimaliseren
1
2
3
<?php
mysql_query
("UPDATE werknemers SET monteurs='1' WHERE eigenaar='".$data['name']."' AND soort='3'") or die(mysql_error());
?>
03-07-2010 21:04
Reageer op: "Delete maar laat 1 row staan.."
1 | 2 Volgende pagina
Je kan niet reageren omdat je niet bent ingelogd. Inloggen of Aanmelden