ID moet opvolgend, wie helpt me?
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);
mysql_query($sql);
Gewijzigd op 11/04/2012 22:48:31 door Mark Honsbeek
Waarom zou je dit überhaupt willen?
Kan de script nu even niet vinden, ik meld wel wanneer ik hem heb.
Offtopic:
Verzin eens een beter topictitel
Edit:
Gewijzigd op 11/04/2012 22:40:48 door Wouter J
Wat bedoel je hiermee? Als je auto_increment gebruikt, dan krijgt URL8 als ID 8, hij telt altijd op... Wat wil je bereiken?
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.
Je hebt ook geen url4 ingevuld, Rambo
Gr. Rambo
Ja, waarom heb je dat gedaan? Het beste wat je kan doen is alle values verwijderen en alles opnieuw invullen...
@Wouter J; bedankt!
Zal dit morgen eens goed gaan bekijken.
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
Titel is veranderd. ;)
Probleem verholpen, of wat?
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
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.
Code (php)
1
2
3
4
5
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'
);
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
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?
Wouter J op 12/04/2012 10:24:32:
mebus, dit mag je me even uitleggen:
En waarom zou je zo ingewikkeld gaan doen met actief/nonactief als je gewoon iets kan verwijderen met een DELETE query?
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.
Wouter J op 12/04/2012 10:24:32:
mebus, dit mag je me even uitleggen:
En waarom zou je zo ingewikkeld gaan doen met actief/nonactief als je gewoon iets kan verwijderen met een DELETE query?
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 ;-)
Hertog Jan op 12/04/2012 11:26:47:
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 ;-)
Wouter J op 12/04/2012 10:24:32:
mebus, dit mag je me even uitleggen:
En waarom zou je zo ingewikkeld gaan doen met actief/nonactief als je gewoon iets kan verwijderen met een DELETE query?
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.
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.
Nogmaals bedankt voor het meedenken.
Groetjes