login  Naam:   Wachtwoord: 
Registreer je!
 Forum

[Opgelost] Getal tussenin, weghalen

Offline Speedy24 - 07/12/2006 16:45 (laatste wijziging 07/12/2006 16:53)
Avatar van Speedy24Nieuw lid Ik zit met het volgende probleem:

In de database staat een veld met de inhoud:
15,18,19,25

Met welk commando kan ik 18, er tussenuit halen???

9 antwoorden

Gesponsorde links
Offline ikkedikke - 07/12/2006 16:47
Avatar van ikkedikke PHP expert str_replace()
Offline Speedy24 - 07/12/2006 16:50 (laatste wijziging 07/12/2006 16:53)
Avatar van Speedy24 Nieuw lid  voel me beetje dom, dat ik daar niet aan heb gedacht...

Thanx!  

EDIT @titjes :

De waarden staan in hetzelfde veld, dus dat kan niet

Heb het dus opgelost met:

str_replace("18,","",$nieuw);
Offline Gerard - 07/12/2006 16:55
Avatar van Gerard Ouwe rakker Wanneer je zo data in een kolom moet opslaan is er duidelijk iets mis met je database schema. Dit soort dingen moet je dan gewoon in een losse tabel opslaan, zo maak je het jezelf alleen maar moeilijk.

Dus gooi die 18 in een nieuwe tabel met een foreign key die verwijst naar het item waar die 18 aan zit in de moedertabel.
Offline Speedy24 - 07/12/2006 16:59
Avatar van Speedy24 Nieuw lid Zo vind ik het wel overzichtelijker (in mijn database)...
Offline Gerard - 07/12/2006 17:00
Avatar van Gerard Ouwe rakker Leuk als je in je database kijkt ja, omdat je dan alles naast elkaar te zien krijgt... maar dit is geen goede manier van normaliseren.
Offline Speedy24 - 07/12/2006 17:02
Avatar van Speedy24 Nieuw lid Jij bent de expert  
Offline Gerard - 07/12/2006 17:06
Avatar van Gerard Ouwe rakker Dan zegt de expert dit: "Zoek eens wat artikelen op via google over database normalisatie. Misschien is het zelfs een goed idee om een boek te halen over SQL omdat deze vaak heel handig zijn voor naslag.".

Ik heb hier zelf een schoolboek liggen wat ik nog regelmatig erbij pak om dingetjes op te zoeken of goede oplossingen te zoeken.

Geloof me dat het goed normaliseren van je database je later veel tijd kan schelen, vooral met problemen zoals deze die je nu hebt. Nu moet je eerste de info gaan ophalen (dat hele tupel) om daarna die str_replace te doen en de info terug te zetten. Het eruit halen gaat ook al wat moeilijker.

Anders kon je gewoon doen:
  1. DELETE FROM tabelnaam
  2. WHERE value = 18
  3. AND key = foreignkeyvalue
Offline Thomas - 08/12/2006 12:28
Avatar van Thomas Moderator Heb je toch een probleem, als 18 het laatste getal van de lijst is, er zit dan namelijk geen komma in (of ",18" proberen te verwijderen als dit getal vooraan de lijst staat).

Je kunt gegevens wel zo opslaan, maar je moet je dan goed realiseren hoe je hier mee om moet gaan bij het wijzigen hiervan en het doorzoeken hiervan ... Een IN-constructie op een query werkt niet op één grote string. Let hier goed op.
Offline Grayen - 08/12/2006 14:00
Avatar van Grayen PHP ver gevorderde doe het anders zo:
  1. <?php
  2. function deleteValue($sDelete, $sString)
  3. {
  4. $aString = explode(',', $sString);
  5. foreach($aString as $iKey => $sValue)
  6. {
  7. if($sValue == $sDelete)
  8. {
  9. $aString[$iKey] = '';
  10. }
  11. }
  12. return implode(',', $aString);
  13. }
  14. ?>
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.195s