κώδικας που δεν δουλευει οπως θα έπρεπε.

Σε αυτή την περιοχή μπορείτε να βρείτε ή να αναζητήσετε πληροφορίες σχετικές με την PHP

Συντονιστές: WebDev Moderators, Super-Moderators, PHP Moderators

Απάντηση
vaszzmak
Δημοσιεύσεις: 30
Εγγραφή: 18 Μαρ 2001 01:00
Τοποθεσία: Λάρισα
Επικοινωνία:

κώδικας που δεν δουλευει οπως θα έπρεπε.

Δημοσίευση από vaszzmak » 31 Ιούλ 2009 19:48

Προσπαθώ να τροποποιήσω ένα κομμάτι κώδικα για να καταχωρούνται επιπλεον πληροφοριες στην βάση δεδομένων απο όσες καταχωρούνται τώρα.

Κώδικας: Επιλογή όλων

class Quiz {
    public $filename;	// konkreetse faili nimi
    var $path;		// xls failide kataloog
    var $cachepath = 'cache/';
    var $quiz= array();
    var $res = array();
    var $err = '';
    public $resanalytic = 'pqr';

    function Quiz($filename, $path='db/') {
        $this->filename	= $filename;
        $this->path = $path;
    }
    function load($forceCache=0) 
    function saveCache() 
    function loadCache() 
    function Parse() 
    function getHTML() 
    function getResults($res) {
        $out  = '';
        $out .= '<h1>' . $this->quiz&#91;'title'&#93; . "</h1>\n\n";

        $this->res&#91;'time_elapsed'&#93;= array_sum&#40;explode&#40;' ', microtime&#40;&#41;&#41;&#41; - $_SESSION&#91;'start'&#93;;
        $this->res&#91;'total_points'&#93;= 0;
        $this->res&#91;'correct_answers'&#93;= 0;

        $out .= "\n<!--summary-->\n";
        $out .= sprintf&#40;"<h2>%s</h2>", t&#40;'Answers'&#41;&#41;;
// sto $res&#91;'t'&#93;&#91;1&#93; brisketai  i apantisi stin proti erotisi kai sto $res&#91;'t'&#93;&#91;2&#93; h apantisis gia thn deyterh erotisi ktl
         foreach&#40;$this->quiz&#91;'data'&#93; as $q=>$arr&#41; &#123;
            $out .= '<div class="qbox">'."\n<h4>" . $q . '. ' .tpl&#58;&#58;bbcode&#40;$arr&#91;'question'&#93;&#41; . "</h4>";
$resanalytic&#91;$q&#93; = $res&#91;'t'&#93;&#91;$q&#93;; 		//δικη μου προσθήκη
echo $res&#91;'t'&#93;&#91;$q&#93;.'ayto proerxetai apo to get results';	//δικη μου προσθήκη
            switch&#40;strtolower&#40;$arr&#91;'type'&#93;&#41;&#41; &#123;
                
// τα υπολοιπα case δεν έχουν σχέση
                case 'radio'&#58;
                default&#58;
                    $this->res&#91;'total_points'&#93; += 1;
                    $this->res&#91;'points'&#93;&#91;$q&#93; = 1;
 echo '<p>'.$res&#91;'t'&#93;&#91;$q&#93;.',,,,'.$res&#91;'t'&#93;&#91;$q&#93;.'</p>';

                    if&#40;is_array&#40;$arr&#91;'variant'&#93;&#41;&#41; &#123;
                    // $v = variant number&#58; 0 - 4 &#40;or, less or more&#41;
                    // $varr contains variant text and correct variant as
                    // $varr&#91;'text'&#93; <- variant text
                    // $varr&#91;'correct'&#93; = 1;
                    // $t is array with gived answers, say if answered is q1 1st variant&#58;  $t&#91;1&#93;=0;
                          
                       foreach&#40;$arr&#91;'variant'&#93; as $v=>$varr&#41; &#123;
                            $report = $checked = $css1 = $css2 = '' ;
                            // if this isset, we know that some variants is checked from this radiobox
                            if &#40;isset&#40;$res&#91;'t'&#93;&#91;$q&#93;&#41;&#41; &#123;
                            //checked variant

                                if&#40;$res&#91;'t'&#93;&#91;$q&#93;==$v&#41; &#123;
                                    $checked = ' checked="checked"';
                                    $css1 = '<span class="your_choice">';
                                    $css2 = '</span>';
                                    if&#40;isset&#40;$varr&#91;'correct'&#93;&#41;&#41; &#123;
                                        $this->res&#91;'correct_answers'&#93; += 1;
                                         $report = sprintf&#40;' <span class="correct">%s</span> ', t&#40;'Correct'&#41;&#41;;
                                    &#125;
                                    else &#123;
                                        $report = sprintf&#40;' <span class="wrong">%s</span> ', t&#40;'Wrong'&#41;&#41;;
                                    &#125;
                                &#125;
                                // unchecked variants
                                else &#123;
                                    $report = $checked = $css1 = $css2 = '';
                                &#125;
                            &#125;
                            $out .= $this->getChar&#40;$v, 1&#41; . '. <input type="radio" disabled="disabled"'.$checked.' />'.$css1.tpl&#58;&#58;bbcode&#40;$varr&#91;'text'&#93;&#41; . $css2. $report . "<br />\n";
                        &#125;
                   &#125;
            &#125;
            $out .= '<div class="key">'.nl2br&#40;tpl&#58;&#58;bbcode&#40;$arr&#91;'comment'&#93;&#41;&#41;.'</div>';
            $out .= "</div>\n\n";
        &#125;

        $out .= sprintf&#40;'<h2><a href="index.php">%s</a></h2>', t&#40;'Back to mainpage'&#41;&#41;;
        #		$out .= '<input type="submit" name="submit" value="Chek" />';
        #		$out .= "</form>\n";

        return $out;
    &#125;

    function getSummary&#40;&#41; 
    function addSummaryToDb&#40;&#41; &#123;
        $name = SQL&#58;&#58;esc&#40;$this->res&#91;'name'&#93;&#41;;
        
        echo $this->resanalytic&#91;1&#93;.$this->res&#91;'correct_answers'&#93;.'to minima auto erxetai apo tin addsummarytodb';    //δικο μου σχόλιο
        $is_already_in = SQL&#58;&#58;getAssoc&#40;'SELECT * FROM ' . TABLE_RESULTS . ' WHERE result_user_name="'.$name.'" AND DATE_ADD&#40;result_date, INTERVAL '.RESULTS_EXPIRY_TIME.' SECOND&#41; > NOW&#40;&#41; AND result_test_id="'.SQL&#58;&#58;esc&#40;$this->filename&#41;.'"'&#41;;
// sto if pou akolouthei ftiaxnetai i entoli gia na staloun ta dedomena stin vasi dedomenon
        if&#40;!$is_already_in && !empty&#40;$name&#41;&#41; &#123;
            $sql_query = sprintf&#40;'INSERT into %s SET result_test_id="%s", result_user_name="%s", result_score=%u, result_date=now&#40;&#41;, result_time=%u, result_ip="%s"',
                TABLE_RESULTS,
                SQL&#58;&#58;esc&#40;$this->filename&#41;,
                $name,
                $this->res&#91;'correct_answers'&#93;,
                $this->res&#91;'time_elapsed'&#93;,
                $_SERVER&#91;'REMOTE_ADDR'&#93;,
                $this->res&#91;'re1'&#93;
            &#41;;

            SQL&#58;&#58;insert&#40;$sql_query&#41;;
        &#125;
    &#125;

    function getChar&#40;$no, $case=0&#41; &#123;
        static $chars;

        if&#40;empty&#40;$chars&#41;&#41;
            $chars = join&#40;"", range&#40;'a', 'z'&#41;&#41;;
        return $case == 1 ? strtoupper&#40;$chars&#91;$no&#93;&#41; &#58; $chars&#91;$no&#93;;
    &#125;

    function setError&#40;$err&#41; &#123;
        $this->err = $err;
    &#125;

    function getError&#40;&#41; &#123;
        return $this->err;
    &#125;
&#125;
Οι τιμές που θέλω να μπουν στην βάση δεδομένων βρίσκονται στην συνάρτηση function getResults($res) και ειδικότερα στην μεταβλητή: $res['t'][$q] και είναι απλοί αριθμοί.

Αυτές οι τιμές δεν υπάρχουν όμως μέσα απο την συνάρτηση function addSummaryToDb() μέσα απο την οποία μπαινουν οι άλλες τιμές στην βάση δεδομένων.
Ακόμη και οταν ορίζω μια νέα μεταβλητή μέσα στην κλάση την $resanalytic και της αναθέτω τις τιμές που θελω, μέσα στην συνάρτηση function getResults($res) όλα είναι εντάξει αλλά στην function addSummaryToDb() εμφανίζεται μόνο ο δευτερος χαρακτήρας της $resanalytic (δηλαδή το q)

Δεν ξέρω να γράφω php, αλλά καταλαβαίνω τα βασικά. Υπάρχει κάποια απλή λύση στο πρόβλημά μου ή τουλάχιστον κάποια υπόδειξη για το τι φταίει;

Απάντηση

Επιστροφή στο “PHP Προγραμματισμός”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες