[php] Strip functie?

Pagina: 1
Acties:

Onderwerpen


  • XippIX
  • Registratie: Augustus 2001
  • Niet online
Mensen, ik ben bezig met script, hier moet de gebruiker een vinkje zetten bij een aantal juiste opties/instellingen. Deze gegevens moeten dan worden vergeleken met de data in de database.

In de database staat bij veld voorkeuren gekozen: 1,2,5 b.v:

die moet geSTRIPT worden in 1 2 5 en dan in losse variabelen gezet worden
dus
$optie1= 1
$optie2= 2
$optie5= 5

zodat ik makkelijk kan kijken of die checkbox hetzelfde is als die variabelen

Weet iemand hoe ik dit voor elkaar kan krijgen? Zodat aan de hand van de aangevinkte opties de juiste waarden die erbij horen in de database worden opgehaald?

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Waarom explode(); je niet gewoon op de komma in de eerste plaats?

  • sjroorda
  • Registratie: December 2001
  • Laatst online: 14:31
En daarbij gebruik maken van een array in plaats van een hele lading aan losse variabelen.

1 regel code:
$opties = explode(',', $_POST['...']);

  • TwoR
  • Registratie: Augustus 2002
  • Laatst online: 16:43

TwoR

Gekleurde stippen

kijk eens bij www.php.net/strip

code:
1
2
3
4
5
6
<?php
// Delimiters may be slash, dot, or hyphen
$date = "04/30/1973";
list($month, $day, $year) = split('[/.-]', $date);
echo "Month: $month; Day: $day; Year: $year<br />\n";
?>


Zoals mijn bovenbuurman zegt is het in een array inderdaad wel netter maar op deze manier heb je ze in de vars die jij zou willen

[ Voor 22% gewijzigd door TwoR op 31-08-2006 16:43 ]


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

En als extra tip: als je komma gescheiden waarden gaat opslaan in je database dan klopt er niet al te veel van je database ontwerp ;)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Creepy schreef op donderdag 31 augustus 2006 @ 17:09:
En als extra tip: als je komma gescheiden waarden gaat opslaan in je database dan klopt er niet al te veel van je database ontwerp ;)
Just curiosity: Heb je enige onderbouwing, of een voorbeeldje? Want ik kan je nu even niet volgen om eerlijk te zijn O+

  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

GJ-tje schreef op donderdag 31 augustus 2006 @ 17:12:
[...]
Just curiosity: Heb je enige onderbouwing, of een voorbeeldje? Want ik kan je nu even niet volgen om eerlijk te zijn O+
Ik heb in een tabel met een komma gescheiden veld iets gekoppelt staan. 1,3,4,6

Nu wil ik van het gekoppelde veld de records halen met id 4.

Hoe.

disjfa - disj·fa (meneer)
disjfa.nl


  • Rmg
  • Registratie: November 2003
  • Nu online

Rmg

Je zou hier un/serialize voor kunnen gebruiken.

  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 13-06 13:45
disjfa schreef op donderdag 31 augustus 2006 @ 17:15:
[...]

Ik heb in een tabel met een komma gescheiden veld iets gekoppelt staan. 1,3,4,6

Nu wil ik van het gekoppelde veld de records halen met id 4.

Hoe.
SQL:
1
WHERE bla LIKE %4%


O-)

OT nu:

als je een string hebt "1, 2, 3" zou ik zoiets voorstellen:
PHP:
1
2
3
$string = "1, 2, 3";
$tmp_array = explode(',', $string);
$res = array_map(trim, $tmp_array);

[ Voor 22% gewijzigd door Matthis op 31-08-2006 17:29 ]


  • disjfa
  • Registratie: April 2001
  • Laatst online: 03-07 14:47

disjfa

be

En dan krijg je record 14 ....

Verder als je al zo denkt :P

[ Voor 7% gewijzigd door disjfa op 31-08-2006 17:28 ]

disjfa - disj·fa (meneer)
disjfa.nl


  • Depress
  • Registratie: Mei 2005
  • Laatst online: 18-09 22:29
Creepy je zegt het fout. Waarde kun je best met komma gescheiden opslaan. Behalve als je het als een (primary)key wilt gebruiken.

  • Andre-85
  • Registratie: April 2003
  • Niet online

Andre-85

Sid

GJ-tje schreef op donderdag 31 augustus 2006 @ 17:12:
[...]
Just curiosity: Heb je enige onderbouwing, of een voorbeeldje? Want ik kan je nu even niet volgen om eerlijk te zijn O+
Lees eens iets over normaliseren. Als je data via een komma gescheiden in een veld zet klopt er iets niet.

Stel je hebt nu een tabel met user info, waar je ook de voorkeuren in opslaat
bijvoorbeeld:
user
user_id
user_name
voorkeuren

Je moet dan een extra tabel maken waar de voorkeuren in komen te staan.

voorkeuren
id
user_id (foreign key naar user_id in de tabel user)
name
value

Op deze manier hoef je dus niet met ranzige komma's te werken.

Lorem
Whenever we feel the need to comment something, we write a method instead. - Martin Fowler
People who think they know everything really annoy those of us who know we don't - Bjarne Stroustrup


  • Matthis
  • Registratie: Juli 2004
  • Laatst online: 13-06 13:45
disjfa schreef op donderdag 31 augustus 2006 @ 17:27:
[...]

En dan krijg je record 14 ....

Verder als je al zo denkt :P
daarom staat die O-) er bij. IK denk niet zo...

  • CH4OS
  • Registratie: April 2002
  • Niet online

CH4OS

It's a kind of magic

Andre-85 schreef op donderdag 31 augustus 2006 @ 17:30:
Lees eens iets over normaliseren. Als je data via een komma gescheiden in een veld zet klopt er iets niet.

Stel je hebt nu een tabel met user info, waar je ook de voorkeuren in opslaat
bijvoorbeeld:
user
user_id
user_name
voorkeuren

Je moet dan een extra tabel maken waar de voorkeuren in komen te staan.

voorkeuren
id
user_id (foreign key naar user_id in de tabel user)
name
value

Op deze manier hoef je dus niet met ranzige komma's te werken.
Ah, daar had ik even niet aangedacht, ik dacht meer aan problemen bij het maken van je queries of iets dergelijks, tevens lijkt het me ook makkelijker voor SQL-injection (mits 'foute' code gebruikt natuurlijk)

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 15:14

Creepy

Tactical Espionage Splatterer

Depress schreef op donderdag 31 augustus 2006 @ 17:29:
Creepy je zegt het fout. Waarde kun je best met komma gescheiden opslaan. Behalve als je het als een (primary)key wilt gebruiken.
Zelfs dan wordt het opvragen van bepaalde zaken al moeilijker. Het voorbeeld dat disfja laat zien geeft dat al mooi aan :)

Tuurlijk kan je met like "%,4% or like "%4,%" or like "4" aan de gang. Dat maakt het alleen supertraag omdat er geen enkele index gebruikt kan worden en er dus altijd een volledige table scan moet worden gedaan. Daarnaast zijn er dus met de search ook wat leuke topics te vinden waar de meest fantastische queries uit zijn gekomen die met een genormaliseerd model veel eenvoudiger waren geweest, om maar niet te zeggen: veel sneller.

Een database is geoptimaliseerd voor het ophalen van data en zal dat in principe net zo snel of sneller doen als jij in je code die data nog moet gaan uitpluizen naar de juiste waarde.

Komma gescheiden waarden om een 1 op n relatie aan te geven in een DB zijn alijd fout.

[ Voor 23% gewijzigd door Creepy op 31-08-2006 20:54 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • mcdronkz
  • Registratie: Oktober 2003
  • Laatst online: 16-04 12:44
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
<?php
$string = "1,2,5";
$opties = explode(",",$string);
foreach($opties as $key => $value) {
    $n = "optie{$value}";
    ${$n} = $value;
}

echo $optie1;
echo $optie2;
echo $optie5;
?>


Dit doet exact wat je wilt :P

[ Voor 6% gewijzigd door mcdronkz op 31-08-2006 21:12 ]


Verwijderd

GJ-tje schreef op donderdag 31 augustus 2006 @ 17:12:
[...]
Just curiosity: Heb je enige onderbouwing, of een voorbeeldje? Want ik kan je nu even niet volgen om eerlijk te zijn O+
Yep heb even voor je gezocht: kritische termen zijn normalisatie en relationele database. Zo te zien een aardige paper op: http://home.student.utwen...atabase%20normaliseren%22

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Het opslaan van een komma gescheiden lijst impliceert dat je aan dat record meerdere gegevens wilt hangen. Wanneer je meerdere gegevens aan een(1) record wilt hangen impliceert dat een 1:N relatie. Hoe je een 1:N relatie moet implementeren wordt in les 2 van elke RDBMS behandeld, en dat is niet middels een komma gescheiden lijst.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1