[PHP] Stringnamen combineren

Pagina: 1
Acties:
  • 168 views sinds 30-01-2008
  • Reageer

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Xelle
  • Registratie: Mei 2006
  • Laatst online: 03:48
Ik ben bezig met het maken van poll. De vraag en de antwoorden staan in een database en deze moeten hier natuurlijk uit worden gehaald. Op zich is dit niet echt moeilijk totdat ik de antwoord eruit moest halen.

Ik heb het volgende stukje code:
PHP:
1
2
3
4
5
6
7
for ($i = 1; ; $i++) {
 if ($i > $vragen) {
  break;
 }
 $antwoord = $data->antwoord.$i;
 echo '     <li>'.$antwoord.'</li>'."\n";
}

Bij het stukje $data->antwoord.$i gaat het fout.
Ik moet dus $i combineren met $data->antwoord zodat dit $data->antwoord1 bijvoorbeeld wordt.
Dit lukt echter niet omdat $antwoord dan alleen de data van $i wordt.

Ik heb al enkele dingen geprobeerd zoals:
PHP:
1
$antwoord = "$"."data->antwoord".$i;

Alleen dit geeft gewoon $data->antwoord1 enz...

Ik moet dus gewoon de stringnaam $data->antwoord combineren met de data van $i.

Acties:
  • 0 Henk 'm!

  • Skaah
  • Registratie: Juni 2001
  • Laatst online: 16-09 18:38
PHP:
1
2
$a = 'antwoord'.$i;
$data->$a;

Acties:
  • 0 Henk 'm!

  • Xof
  • Registratie: Juni 2001
  • Laatst online: 12-05 10:38

Xof

Ik vind het sowieso een raar stukje code, ik vraag me af hoe je database structuur eruit ziet..

Acties:
  • 0 Henk 'm!

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

Creepy

Tactical Espionage Splatterer

Op het moment dat je daadwerkelijk antwoord1, antwoord2 etc. als kolommen hebt dan klopt er inderdaad niet veel van je datastructuur. Is dat ook zo?

Als het het inlezen van de antwoorden betreft dan is het een stuk handiger om de antwoorden in een array te zetten zodat je dat geneuzel met variabele variabelen niet hoeft te gebruiken.

"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


Acties:
  • 0 Henk 'm!

  • Mr_Groovy
  • Registratie: Oktober 2002
  • Laatst online: 02-12-2021

Mr_Groovy

Designlapp

Xelle schreef op maandag 03 september 2007 @ 12:30:
Ik ben bezig met het maken van poll. De vraag en de antwoorden staan in een database en deze moeten hier natuurlijk uit worden gehaald. Op zich is dit niet echt moeilijk totdat ik de antwoord eruit moest halen.

Ik heb het volgende stukje code:
PHP:
1
2
3
4
5
6
7
for ($i = 1; ; $i++) {
 if ($i > $vragen) {
  break;
 }
 $antwoord = $data->antwoord.$i;
 echo '     <li>'.$antwoord.'</li>'."\n";
}

Bij het stukje $data->antwoord.$i gaat het fout.
Ik moet dus $i combineren met $data->antwoord zodat dit $data->antwoord1 bijvoorbeeld wordt.
Dit lukt echter niet omdat $antwoord dan alleen de data van $i wordt.

Ik heb al enkele dingen geprobeerd zoals:
PHP:
1
$antwoord = "$"."data->antwoord".$i;

Alleen dit geeft gewoon $data->antwoord1 enz...

Ik moet dus gewoon de stringnaam $data->antwoord combineren met de data van $i.
Misschien wilt dit wel helpen :O
PHP:
1
2
3
4
5
6
7
for ($i = 1; ; $i++) {
 if ($i > $vragen) {
  break;
 }
 $antwoord = $data->$antwoord.$i;
 echo '     <li>'.$antwoord.'</li>'."\n";
}


$ teken vergeten bij antwoord |:(

Macbook Pro 15" Late 2013, iPhone 7+ 128gb, iPad Pro, Canon M3, Tamron 18-200, Canon 22 @2.0, Canon 11 -22, Nintendo Switch


Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 18-09 15:14

ATS

Ik gok dat $data->antwoord een array is als ik zo zie wat je wil doen. In dat geval gebruik je geen .$i erachter, maar gebruik je de [] operator:
PHP:
1
$antwoord = $data->antwoord[$i];


Of bedoel je dat je $data class een aantal members heeft "antwoord1", "antwoord2", ... "antwoordn"? In dat geval moet je eens kijken naar "Variable variables". Zou wel een wat nare bijsmaak hebben als oplossing wat mij betreft, maar het zou wel moeten werken.

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Variabele variabelen zijn wel de meest ranzige der ranzigheden en zeker mensen die net beginnen moeten daar mijlen ver van uit de buurt blijven. Ik snap ook niet waarom mensen dat als oplossing blijven aandragen. Het enige juiste antwoord hier is, zoals gelukkig velen hier ook aandragen, arrays. Verder heb ik exact hetzelfde vermoeden als Creepy en Xof. Er is hier vast sprake van kolomnamen met nummertjes erin. De topicstarter kan ik dan ook alleen maar aanraden om naast naar arrays, ook naar standaard één op veel relaties in een database te kijken.

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


Acties:
  • 0 Henk 'm!

  • ATS
  • Registratie: September 2001
  • Laatst online: 18-09 15:14

ATS

Janoz schreef op maandag 03 september 2007 @ 13:43:
Variabele variabelen zijn wel de meest ranzige der ranzigheden en zeker mensen die net beginnen moeten daar mijlen ver van uit de buurt blijven.
Ik zei toch al dat dat ranzig was? (OK, ik had het over "nare bijsmaak", maar dat komt op hetzelfde neer.)
Het enige juiste antwoord hier is, zoals gelukkig velen hier ook aandragen, arrays.
En ook dat stond er in.

Verder ben ik het wel met je eens hoor. De TS zou eens goed moeten nadenken over zijn data model, of in elk geval meer info posten over hoe die $data variabele er nu eigenlijk uitziet en hoe die gevuld wordt...

My opinions may have changed, but not the fact that I am right. -- Ashleigh Brilliant


Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Ik val je niet persoonlijk aan hoor ATS :). Ik vind het alleen jammer dat er altijd nog foute oplossingen aangedragen worden in een dergelijke thread. Nog niet zo heel lang geleden heb ik leuk toepasselijke blog hierover gevonden: Spijker met een schoen of met een fles de muur in slaan?

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


Acties:
  • 0 Henk 'm!

  • Xelle
  • Registratie: Mei 2006
  • Laatst online: 03:48
Goed het is dus wel overduidelijk dat ik maar een dikke beginner mag wezen in PHP. De tabel die ik nu wil vullen ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
<aantal vragen>
<vraag>
<antwoord1>
<antwoord2>
<antwoord3>
<antwoord4>
<antwoord5>
<ip's>


Maar zo is het inderdaad wel raar hoe de tabel is ingedeeld, waar ik ook net achterkom is dat ik dan ook nog eens 5 rijen zou moeten aanmaken voor de aantal stemmen op die rij. Oftewel deze methode is verre van handig.

Wat is dus eerder zou moeten doen is een array maken met de antwoorden en een array met het aantal stemmen en deze later vergelijken om zo uiteindelijke data te maken om die weer te geven op mijn website?

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Janoz schreef op maandag 03 september 2007 @ 14:46:
Ik val je niet persoonlijk aan hoor ATS :). Ik vind het alleen jammer dat er altijd nog foute oplossingen aangedragen worden in een dergelijke thread. Nog niet zo heel lang geleden heb ik leuk toepasselijke blog hierover gevonden: Spijker met een schoen of met een fles de muur in slaan?
Die naam van die auteur, is dat niet de founder van TDWTF?

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

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

Janoz

Moderator Devschuur®

!litemod

Ja klopt, zo ben ik ook bij het artikel gekomen.

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


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Wat je dus wilt is iets als volgt:

Poll
PID
PollDescription

PollQuestion
PQID
PID
PollQuestionText

PollAnswer
PAID
PQID
PollAnswerText

Dit is een voorbeeldje van hoe een standaard forum poll systeem opgeslagen zou kunnen worden in een DB. Legenda: underlined = PK, cursief = FK.

Op deze manier kan een poll dus meerdere vragen hebben, elke vraag heeft meerdere mogelijke antwoorden. Rest alleen nog een tabel om de antwoorden van de gebruikers in te gooien.

[ Voor 24% gewijzigd door Grijze Vos op 03-09-2007 15:12 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Een "variabele variabele" kun je ook nog zo noteren:

PHP:
1
${'antwoord'.$i}


Maar ranzig is het zeker.
Pagina: 1