Toon posts:

[PHP] poll probleempje

Pagina: 1
Acties:

Verwijderd

Topicstarter
<?
$keuzes = $m->aantal_k;

for ($i=0;$i<$keuzes; $i++) {
$aantal[] = $m->keuze_$i;
}
$totaal = array_count_values($aantal);
echo $totaal;
?>

dit is een stukje uit mijn poll waar ik het aantal keuzes van de gebruiker laat bepalen door het uit de db op te halen. In de db heb je keuze_1 keuze_2 etc. daarin staat hoevaak erop gestemd is. Als de totaal aantal keuzes 4 is, dan moet hij keuze_1 t/m 4 bij elkaar optellen...als het aantal keuzes 3 is t/m keuze 3. Ik denk dat doe ik zo...maar zo werkt het niet...heeft iemand een idee hoe ik het op deze manier anders kan doen?

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
PHP:
1
$aantal[] = $m->keuze_$i;


Dit kan dus niet, je kan geen variabelen aanroepen door een variabelenaam bijelkaar te concateneren :)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
PHP:
1
2
3
4
5
6
7
8
$keuzes = $m->aantal_k; 

for ($i=0;$i<$keuzes; $i++) { 

eval("$aantal[] = $m->keuze_".$i); 
} 
$totaal = array_count_values($aantal); 
echo $totaal;


volgens mij werkt het zo wel, maar is wel errug vies :)

Verwijderd

Topicstarter
error: parse error, unexpected ']', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/cth3779a/WWW/poll.php on line 13

line 13 is die regel met .$i
----------------
hoe zouden jullie het anders oplossen dan?? als het vies is...ik weet dat het in het klein kan (niet veel regels script)...maar hoe ;)

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Laat de class van $m es zien.

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
PHP:
1
2
3
4
5
6
7
8
$keuzes = $m->aantal_k; 

for ($i=0;$i<$keuzes; $i++) { 

eval("$aantal[".$i."] = $m->keuze_".$i); 
} 
$totaal = array_count_values($aantal); 
echo $totaal;


Denk dat het zo beter werkt :)

Verwijderd

Topicstarter
Parse error: parse error, unexpected '\"', expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/cth3779a/WWW/poll.php on line 11

line 11 is weer die regel met die eval...

dit is de hele code...(tot nu toe)
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
if ($r->poll=="1") {
$reponse2 = mysql_query("SELECT * FROM poll");
$m = mysql_fetch_object($reponse2);
$vraag = $m->vraag;
$keuzes = $m->aantal_k;

for ($i=0;$i<$keuzes; $i++) {  

eval("$aantal[".$i."] = $m->keuze_".$i);  
}  
$totaal = array_count_values($aantal);  
echo $totaal;


wees niet bang...ik maak ergens anders contact met de db...dit is een include :)

[ Voor 0% gewijzigd door Verwijderd op 08-08-2002 17:57 . Reden: onderste regel ]


  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Ik zou eerder de row in een array fetchen (dus met mysql_fetch_array()). Dan kun je namelijk wel gaan concateneren enzo :)

Verwijderd

Topicstarter
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?

if ($r->poll=="1") {
$reponse2 = mysql_query("SELECT * FROM poll");
$m = mysql_fetch_array($reponse2);
$vraag = $m[vraag];
$keuzes = $m[aantal_k];


for ($i=0;$i<$keuzes; $i++) {  
$s = "keuze_".$i;
eval("$aantal[$i] = $m[$s]");
}  
$totaal = array_count_values($aantal);  
echo $totaal;
}
?> 


hij echo't nu helemaal niks...leeg scherm... :(
anyone?

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Verwijderd schreef op 08 augustus 2002 @ 18:05:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?

if ($r->poll=="1") {
$reponse2 = mysql_query("SELECT * FROM poll");
$m = mysql_fetch_array($reponse2);
$vraag = $m[0];
$keuzes = $m[1];


for ($i=0;$i<$keuzes; $i++) {  
$s = $i+2
$aantal[$i] = $m[$s];
}  
$totaal = array_count_values($aantal);  
echo $totaal;
}
?> 


hij echo't nu helemaal niks...leeg scherm... :(
anyone?
OK heb een paar verbeteringen erin gemaakt...

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Als bovenstaande verbetering niet werkt, post dan ff je tabel (dus hoe 'ie eruit ziet en wat erin zit) :)

Verwijderd

BTW je gebruikt wel handige variabele namen, dit is al de 4e keer dat ik in dit topic kijkt, maar nog steeds is het me niet helemaal glashelder.
Voor $m zou je bv $regel kunnen gebruiken, en voor $i wordt meestal $teller gebruikt (de engelse varianten kunnen natuurlijk ook)

Dit is geen afzeik post, alleen maar een tip voor je verdere programmeer vragen.

Verwijderd

Topicstarter
als ik er dit neerzet:
PHP:
1
2
3
for ($i=1;$i<$keuzes; $i++) {   
echo $m[$i];
}

werkt alles perfect! hij laat alle waarden die ik nodig heb zien. dus ik denk...als ik er nou dit van maak zou hij hetzelfde moeten laten zien...maar nee..hij geeft alleen de output "Array"

PHP:
1
2
3
4
for ($i=1;$i<$keuzes; $i++) {   
$a[]=$m[$i];
}   
echo array_values($a);


heeft iemand een idee hoe ik die array dan moet maken??

  • Grum
  • Registratie: Juni 2001
  • Niet online
BAH BAH BAH BAH BAH BAH BAH!

eval("$aantal[] = $m->keuze_".$i);

dat klopt niet en moet dit zijn:

eval('$aantal[] = $m->keuze_'.$i.';');

MAAAAR! geen eval gebruiken als het niet nodig is. Dit werkt namelijk ook:

$aantal[] = $m[ 'keuze_' . $i ];

icm met een mysql_fetch_assoc

Verwijderd

Topicstarter
neej..maar ik doe het dus niet meer met de naam aanroepen...maar ik werk met de plaats van het hok waar het instaat..en dat is hok 1t/m x ...dus als ik ze echo dan komen ze netjes achter elkaar te staan..maar ik wil die dus in een array zetten..heb dit geprobeerd...is nog niet gelukt..maar het móet lukken...IEMAND???

  • SJR
  • Registratie: Januari 2000
  • Laatst online: 15-02 13:58

SJR

PHP:
1
eval("\$aantal[] = \$m->keuze_$i)";

Verwijderd

Topicstarter
nopez...unexpected ';'

PHP:
1
2
3
4
for ($i=1;$i<$keuzes; $i++) {   
eval("\$a[] = \$m[$i]");
}   
echo array_count_values($a);


dít werkt niet...en zo wil ik het graag..en het kan...maar er zit ergens een klein foutje...waaar???

tnx..alvast

DaBOON

  • MisterData
  • Registratie: September 2001
  • Laatst online: 26-08 21:52
Grum schreef op 08 augustus 2002 @ 20:16:
BAH BAH BAH BAH BAH BAH BAH!

MAAAAR! geen eval gebruiken als het niet nodig is.
Dat zeg ik, ik heb eronder gezet dat dat een hele vieze oplossing is :)
$aantal[] = $m[ 'keuze_' . $i ];

icm met een mysql_fetch_assoc
Inderdaad, dat zou moeten werken :)

[ Voor 0% gewijzigd door MisterData op 08-08-2002 21:36 . Reden: dom dom dom quote vergeten ]


  • CyberSnooP
  • Registratie: Augustus 2000
  • Laatst online: 31-03 16:47

CyberSnooP

^^^^ schrijft --->

Ik heb nooit ingezien waarom je een database-row als object wilt hebben, of je moet wel heel erg syntax-geil zijn :). Maar vooruit:

PHP:
1
2
3
4
for ($i=0;$i<$keuzes; $i++) { 
$property_name = 'keuze_' . $i;
$aantal[] = $m->$property_name; 
}

Tip: Zorg maar dat je Grum gehoorzaamt voortaan!

|_____vakje______|

Pagina: 1