login  Naam:   Wachtwoord: 
Registreer je!
 Forum

eerstvolgende vullen database

Offline lau - 28/06/2006 20:40
Avatar van lauHTML interesse Hoe zorg ik ervoor dat het eerstvolgende van een bepaald kolom gevuld wordt. Het gaat hierbij dus niet op ID met auto_increment.

Het is voor een groep verplaatsing, hieronder een voorbeeldje:
  1. id | woord | positie | groep
  2. -----------------------------------
  3. 1 | jan | 1 | 1
  4. 2 | kees | 2 | 1
  5. 3 | smit | 3 | 1
  6. 4 | miep | 1 | 2
  7. 5 | huis | 2 | 2
  8. 6 | noot | 1 | 3
  9. 7 | aap | 2 | 3
  10. 8 | boom | 1 | 4


Stel, ik wil het woord 'noot' dat in zijn groep-3 op 1e plaats staat (dus bovenaan) nu van groep veranderen naar groep-1.
Dat is dus zo gedaan dat groep veranderen. Maar nu moet ook de positie worden veranderd dat niet meer klopt in die nieuwe groep-1. Dus hij moet in die querie GROUP BY 1 dus op zoek gaan naar de laatste positie en deze met +1 optellen en krijgt het woord 'noot' in zijn nieuwe groep-1 dus een nieuwe positie-4.
Hoe krijg ik dit alleen voor mekaar 
Dat wijzigen van groep werkt, het gaat nu alleen om het optellen van die +1. Hoe ik dat moet controleren.

En een volgend probleem, omdat het woord 'noot' uit die groep-3 is verplaatst, gaan de posities nu wel gelijk op, maar mist hij een eerste nummer.
Hoe zorg ik ervoor dat ALLE rijen met die groep-3 1tje (dus -1) opschuift zodat alles weer vanaf 1-xxx gaat lopen?

4 antwoorden

Gesponsorde links
Offline jasperken - 28/06/2006 21:47
Avatar van jasperken PHP interesse Hmm dat is wel vrij ingewikkeld maar makkelijk haalbaar als je ff logisch nadenkt... Volgens mij moet je een functie maken die al je woorden gaat nakijken nadat je een verandering gedaan hebt of tijdens.

Stel: Je verandert het eerste woord van groep1 naar een andere groep B. Dan gaat groep 1 oplopen zoals: 2-3-4 ... Je kan dit oplossen door eerst al je gegevens per groep te selecteren. Dan te kijken of er een 1 is, zoniet moet hij het volgende getal veranderen naar 1, dan gaat hij op zoek naar 2... stel dat 2 ook niet bestaat dan wordt 2 bijvoorbeeld 3... Uiteindelijk gaat je laatste nieuwe gegeven dat bij de groep komt vanachter aansluiten. Dit is wel vrij ingewikkeld maar als je die gegevens in arrays zet is het tedoen.

Ik hoop dat je hier wat kan uit afleiden 
Offline lau - 28/06/2006 23:01
Avatar van lau HTML interesse Hmm.. ik zit al meteen vast bij het tellen van zo'n positie
Mijn code nu:
  1. $positie = 1;
  2. while (mysql_result (mysql_query("SELECT COUNT(positie) FROM ".TBL_CAT." WHERE groep = ".$_POST['groep']),0)) {
  3. $positie++;
  4. }


Hij moet dus alle rijen van kolom positie tellen van een door mij geselecteerde (geposte) groep.
Maar hij doet het niet.. ik weet niet waar het probleem zit.
Offline jasperken - 29/06/2006 00:18
Avatar van jasperken PHP interesse Mnee kijk, je moet je gegevens gewoon in een while lus uit je database halen... en daarmee een array opvullen... je array gaat automatisch oplopen dus $array[1...10] daarin zet je dan je waardes. Daarna ga je terug met een while lus waarde per waarde je database opvullen en overschrijven.

Kijk, je haalt dus groep 1 op, je sorteert die op 'positie'... daarna doe je een fecht in een while lus en ga je ze allemaal in een array stoppen, dus de positie en het ID van je gegeven. Daarna ga je gewoon opnieuw je array doorlopen, je gaat naar het id van je gegeven en wijzigt de 'positie' naar de waarde in je array.
Klaar... 
Offline Grayen - 29/06/2006 09:08 (laatste wijziging 29/06/2006 09:09)
Avatar van Grayen PHP ver gevorderde ik heb ff een scriptje lopen maken ook omdat mij dit script wel handig leek, en ik vind zelf dat het aardig goed gelukt is: http://grayen.g...lgorde.php

en de broncode:
http://grayen.g...gorde.phps
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2025 Sitemasters.be - Regels - Laadtijd: 0.208s