Toon posts:

[php] Arrays en class

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een Class, en ik wil dat een 'variabele' hiervan deze het resultaat van een mysql query meekrijgt.

Nou heb ik het in de class de mysql query uitgevoerd, en dan de gegevens in een array gezet (zijn maar ID en WAARDE, dus kan je $array[$id] = waarde doen zeg maar.

Maar eigenlijk wil ik meer velden uit de querie meenemen :(

Hoe kan je dat als bijvoorbeeld
$this->options = $arr_opt;

doen?

Of ben ik op de verkeerde weg, met door het in een array te zetten? (heb 2 queries, 1 daarvan moet dus 'geloopt' worden, de andere niet)

Verwijderd

Topicstarter
beetje onduidelijk misschien.

Ik heb een Class genaamd Poll.
Deze haalt een poll op uit de database. De opties (waar je dus op kan stemmen) dienen uit een andere tabel te komen.

Nu heb ik dit om een array mee te geven.
PHP:
1
<?$arr_opt = Array();        while (list ($optionID, $optie, $votes) = mysql_fetch_row($res_options)) {            $arr_opt[$optionID] = $optie;        }                        $this->options = $arr_opt;?>

Maar nu wil ik die '$votes' ook meegeven. How?

Verwijderd

wat is $votes precies?

heeft ie maar 1 waarde?

Verwijderd

Topicstarter
$votes is het aantal stemmen dat de optie heeft gehad.

Verwijderd

volgens mij moet je dat gewoon alsvolgt kunnen doen:
PHP:
1
<?  $arr_opt = Array();        while (list ($optionID, $optie, $votes) = mysql_fetch_row($res_options))   {            $arr_opt[$optionID] = $optie;    $arr_opt[aantal_votes] = $votes;  }  $this->options = $arr_opt;?>

  • Orphix
  • Registratie: Februari 2000
  • Niet online
Je wilt dus een bepaald aantal velden uit je query in een array zetten (en die aan de class geven).
Het wordt dan zoiets
PHP:
1
<?$values = mysql_fetch_assoc($res_options);if($values){  $options = Array("optionID" => $values["optionID"], "votes" => $values["votes"]);}?>

of begrijp ik je nu verkeerd :?

Verwijderd

Topicstarter
Op woensdag 13 maart 2002 23:14 schreef Orphix het volgende:
Je wilt dus een bepaald aantal velden uit je query in een array zetten (en die aan de class geven).
Het wordt dan zoiets
PHP:
1
<?echo "zie hierboven :);?>

of begrijp ik je nu verkeerd :?
Ja, want het result van de query bevat meerdere rows :(

  • thomaske
  • Registratie: Juni 2000
  • Laatst online: 09-09 14:51

thomaske

» » » » » »

dan gebruik je een lusje en dan met:
PHP:
1
<?$options[rownummer] = Array("optionID" => $values["optionID"], "votes" => $values["votes"]);etc..?>

Brusselmans: "Continuïteit bestaat niet, tenzij in zinloze vorm. Iets wat continu is, is obsessief, dus ziekelijk, dus oninteressant, dus zinloos."


Verwijderd

Hier is mijn poll class, je vraag is wat verwarrend dus ik weet niet goed of je hier iets mee bent. Maar het result van een mysql query IS al een array, dus daar nog es een array van maken is echt overbodig.
PHP:
1
<?class GP_Poll {    var $PollID;    var $Type;    var $Date;    var $Question;    var $Active;    var $PollVotes;    var $TotalVotes;    function GP_Poll($poll_id) {        global $gp_polls;        global $gp_poll_options;        $query = "SELECT * FROM $gp_polls WHERE PollID=$poll_id LIMIT 1";        $result = mysql_query($query);        $this->PollVotes = array();        if (mysql_num_rows($result)>0) {            $row = mysql_fetch_array($result);            $this->PollID=$poll_id;            $this->Type=$row["Type"];            $this->Date=$row["Date"];            $this->Question=$row["Question"];            $this->Active=$row["Active"];            $query = "SELECT * FROM $gp_poll_options WHERE PollID=$poll_id ORDER BY OptionID ASC";            $result = mysql_query($query);            $i=1;            $this->TotalVotes=0;            while ($row = mysql_fetch_array($result)) {                $this->TotalVotes+=$row["Votes"];                                // $PollOption is dus 1 optie voor je poll, als een array                $PollOption["Option"] = $row["Option"];                $PollOption["Votes"] = $row["Votes"];                $PollOption["ID"] = $row["OptionID"];                                // Voeg deze optie toe aan je poll                array_push($this->PollVotes,$PollOption);                $i++;            }        } else {            die("Empty poll ?");        }    }    function printHTML() {                // moet je zelf maken, zoiets als:        $total_percent=0;        $total_votes=$this->TotalVotes;        while ($PollOption = array_shift($this->PollVotes)) {            if ($PollOption["Votes"]!=0) {                // Afrondingsfouten voorkomen !                if ($i==sizeof($this->PollVotes)) {                    $percent = 100-$total_percent;                } else {                    $percent = (int)(($PollOption["Votes"]/$this->TotalVotes)*100);                    $total_percent+=$percent;                }            } else {                $percent = 0;            }            ?>            <tr>            <td>                        <? echo $PollOption["Option"]; ?>:</td>            <td><? echo $percent; ?>%&amp;nbsp;(<? echo $PollOption["Votes"]; ?>)</td>            </tr>            <?        }        }}?>
Pagina: 1