ID moet opvolgend, wie helpt me?

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Mark Honsbeek

Mark Honsbeek

11/04/2012 22:33:16
Quote Anchor link
Hallo,
heb een vraagje aan jullie! Ik wil er wel meteen op wijzen dat ik een beginner ben {vandaar in deze categorie}, dus verwacht niet te veel van me. Ik zal vast bepaalde termen verkeerd gebruiken... :P

Ik wil met PHP dingen naar een database sturen, dit gaat hartstikke goed.
Nu heb ik een formuliertje gemaakt om iets naar de database te versturen, dit gaat ook hartstikke goed...

Ik heb een formuliertje gemaakt waar je een URL in kan voeren. Als deze naar de database wordt verstuurd wordt er automatisch een id aan gegeven. (Dit heb ik gedaan met AUTO_INCREMENT. Dit gaat dus mooi en kan zo een aantal URL's naar de database sturen die er steeds een nieuw id aan geeft.

Nu is het probleem, dat als ik een URL wil verwijderen uit de database, dat er dus een id wegvalt. Als ik weer een nieuwe URL toevoeg gaat hij gewoon verder met waar hij gebleven was.
Je krijgt dan dus dit:
URL1 - ID=1
URL2 - ID=2
URL3 - ID=3
URL5 - ID=5
URL6 - ID=6
URL7 - ID=7

Het is vast mogelijk om hier dan als je een nieuwe URL heen wil sturen {in dit geval URL8} dat er het id 4 aan wordt gegeven. Maar ik weet dus niet hoe...

Mij lijkt de oplossing op steeds te zeggen dat hij id=1 moet aanmaken, bestaat deze al doe dan +1 tot er een id komt die nog niet bestaat. Zou niet weten of hier een mooie code voor is...

Hoop dat ik het een beetje duidelijk heb uitgelegd, hoop dat jullie me kunnen helpen.
Alvast hartelijk bedankt!

Owjah; weet niet of jullie hier wat aan hebben, maar zo verstuur ik iets naar de MYSQL database:
Quote:
$sql = "INSERT INTO sites(website) VALUES ('" . $siteURL . "')";
mysql_query($sql);
Gewijzigd op 11/04/2012 22:48:31 door Mark Honsbeek
 
PHP hulp

PHP hulp

22/12/2024 18:36:23
 
Joakim Broden

Joakim Broden

11/04/2012 22:35:45
Quote Anchor link
Waarom zou je dit überhaupt willen?
 
Wouter J

Wouter J

11/04/2012 22:37:14
Quote Anchor link
Allereerst mijn vraag, waarom zou je dat willen? Dat is nergens voor nodig. Er is een jaar geleden ofzo wel een scriptje hier op de site geweest die dit automatisch voor je doet, maar het is naar mijn mening alleen tijd verspilling.

Kan de script nu even niet vinden, ik meld wel wanneer ik hem heb.

Offtopic:
Verzin eens een beter topictitel

Gewijzigd op 11/04/2012 22:40:48 door Wouter J
 
Mark Markson

Mark Markson

11/04/2012 22:37:14
Quote Anchor link
Wat bedoel je hiermee? Als je auto_increment gebruikt, dan krijgt URL8 als ID 8, hij telt altijd op... Wat wil je bereiken?
 
Mark Honsbeek

Mark Honsbeek

11/04/2012 22:37:44
Quote Anchor link
Anders kom ik in de knoop met een volgend stukje code...
Hier mogen geen ontbrekende id's zijn...
Of ik zou daar iets kunnen aanpassen, maar dit leek mij de beste oplossing.

Toevoeging op 11/04/2012 22:38:36:

Zoals je ziet mist hier het ID 4.
Dit zou niet mogen.
 
Mark Markson

Mark Markson

11/04/2012 22:40:46
Quote Anchor link
Je hebt ook geen url4 ingevuld, Rambo
 
Mark Honsbeek

Mark Honsbeek

11/04/2012 22:41:51
Quote Anchor link
Nee, die heb ik verwijderd... {in deze simulatie}

Gr. Rambo
 
Mark Markson

Mark Markson

11/04/2012 22:42:59
Quote Anchor link
Ja, waarom heb je dat gedaan? Het beste wat je kan doen is alle values verwijderen en alles opnieuw invullen...
 
Mark Honsbeek

Mark Honsbeek

11/04/2012 22:43:54
Quote Anchor link
Dat is misschien een betere oplossing ja...

@Wouter J; bedankt!
Zal dit morgen eens goed gaan bekijken.
 
Joakim Broden

Joakim Broden

11/04/2012 22:44:24
Quote Anchor link
Mark Honsbeek, jij bent niet een van de snuggerste thuis of wel ;-) Komt omdat URL4 verwijderd is, hij wil dus bij een volgende INSERT de tabel aanvullen met ID 4...

Topic starter, hoe zo kom je dan in de problemen bij het volgende stukje code? Ik vind het maar apart. En verander de titel van het topic even zodat iedereen gelijk weer waar de topic over gaat. 'Vraagje' is geen goede titel.
Gewijzigd op 11/04/2012 22:45:03 door Joakim Broden
 
Mark Honsbeek

Mark Honsbeek

11/04/2012 22:49:08
Quote Anchor link
Titel is veranderd. ;)
 
Mark Markson

Mark Markson

11/04/2012 22:50:05
Quote Anchor link
Probleem verholpen, of wat?
 
Mark Honsbeek

Mark Honsbeek

11/04/2012 22:51:30
Quote Anchor link
Ik denk dat het moet lukken met de volgende code:
http://www.phphulp.nl/php/script/php-functies/mijn-manier-om-een-mysql-tabel-te-ordenen/1861/

In ieder geval bedankt voor jullie hulp.
Gewijzigd op 11/04/2012 22:51:46 door Mark Honsbeek
 
- SanThe -

- SanThe -

11/04/2012 23:12:43
Quote Anchor link
Hertog Jan op 11/04/2012 22:44:24:
Mark Honsbeek, jij bent niet een van de snuggerste thuis of wel ;-) Komt omdat URL4 verwijderd is, hij wil dus bij een volgende INSERT de tabel aanvullen met ID 4...


Uh, je bedoelt de andere Mark neem ik aan?

@Mark Honsbeek: Het slimste is om er niet aan te gaan knoeien. De kans is aanwezig (zeker bij wat grotere databases) dat je jezelf allerlei problemen op de hals haalt. Dat (auto_increment) id is alleen voor de database belangrijk.
 
Mebus  Hackintosh

Mebus Hackintosh

12/04/2012 10:18:00
Quote Anchor link
Een database is niet om gegevens uit te verwijderen.. Een oplossing (ook al heb ik het liefst dat je gewoon je increment aanhoud) kan het volgende zijn:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
CREATE TABLE tabel (
id int unsigned not null auto_increment primary key,
link varchar(200) not null,
actief enum('ja', 'nee') not null default 'ja'
);


Zodra er nu een link 'verwijderd' word zet je eigenlijk gewoon het veld actief op nee. Als er nu een nieuwe link word toegevoegd kan je eerst kijken of er velden zijn die dan niet actief zijn en van die record dus de link aanpassen. Zo blijft je database ook in orde ;)

De rest mag je natuurlijk zelf maken.
Gewijzigd op 12/04/2012 10:19:12 door Mebus Hackintosh
 
Wouter J

Wouter J

12/04/2012 10:24:32
Quote Anchor link
mebus, dit mag je me even uitleggen:
Quote:
Een database is niet om gegevens uit te verwijderen..

En waarom zou je zo ingewikkeld gaan doen met actief/nonactief als je gewoon iets kan verwijderen met een DELETE query?
 
Mebus  Hackintosh

Mebus Hackintosh

12/04/2012 10:55:15
Quote Anchor link
Wouter J op 12/04/2012 10:24:32:
mebus, dit mag je me even uitleggen:
Quote:
Een database is niet om gegevens uit te verwijderen..

En waarom zou je zo ingewikkeld gaan doen met actief/nonactief als je gewoon iets kan verwijderen met een DELETE query?


Een database is er toch om gegevens in op te slaan? Waarom dan vervolgens weer verwijderen terwijl je er misschien ooit nog wat aan hebt. Maar dat is mijn mening. Een database is er uiterraard ook om dingen te kunnen verwijderen.

En ingewikkeld? Ik stel alleen een mogelijke oplossing voor voor de TS. De TS wil dat zodra een record met ID 4 niet meer bestaat er een record word aangemaakt met id 4 ook al bestaat er een record met id 5, maar omdat auto_increment gewoon doornummert kan je niet zomaar een record toevoegen in de database dat een lager id heeft dan dat auto_increment voor het laatst heeft meegegeven. Vandaar het actief/non-actief idee. Wat in mijn ogen de simpelste oplossing is.
 
Joakim Broden

Joakim Broden

12/04/2012 11:26:47
Quote Anchor link
Wouter J op 12/04/2012 10:24:32:
mebus, dit mag je me even uitleggen:
Quote:
Een database is niet om gegevens uit te verwijderen..

En waarom zou je zo ingewikkeld gaan doen met actief/nonactief als je gewoon iets kan verwijderen met een DELETE query?

Ik zelf verwijder zelden iets uit de database maar heb bij elke tabel een kolom deleted (enum('true'/'false').

Bij een computer heb je toch ook een prullenbak ;-)
 
Mebus  Hackintosh

Mebus Hackintosh

12/04/2012 11:43:24
Quote Anchor link
Hertog Jan op 12/04/2012 11:26:47:
Wouter J op 12/04/2012 10:24:32:
mebus, dit mag je me even uitleggen:
Quote:
Een database is niet om gegevens uit te verwijderen..

En waarom zou je zo ingewikkeld gaan doen met actief/nonactief als je gewoon iets kan verwijderen met een DELETE query?

Ik zelf verwijder zelden iets uit de database maar heb bij elke tabel een kolom deleted (enum('true'/'false').

Bij een computer heb je toch ook een prullenbak ;-)



Als je iets verwijdert van je computer staat het bestand ook nog altijd op je computer.. Maar kan het bij de eerst volgende schrijf actie wel overschreven worden.
 
Obelix Idefix

Obelix Idefix

12/04/2012 13:01:43
Quote Anchor link
Mark Honsbeek op 11/04/2012 22:37:44:
Anders kom ik in de knoop met een volgend stukje code...

Wat is die volgende code dan/waarom kom je daarmee in de knoop?
Mogelijk is je denkwijze daar niet goed/kan het ook anders.
Met de mogelijkheid om een record als 'verwijderd' te markeren loop je mogelijk tegen hetzelfde probleem aaan.

Het opvullen van verwijderde id's zou ik echter afraden.
 
Mark Honsbeek

Mark Honsbeek

12/04/2012 17:02:51
Quote Anchor link
Ik heb het probleem opgelost door het volgende stukje code aan te passen.
Nogmaals bedankt voor het meedenken.

Groetjes
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.