הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   MYSQLI ועוד שטויות. (https://hosts.co.il/forums/showthread.php?t=86504)

morsrh 29-11-10 19:33

MYSQLI ועוד שטויות.
 
טוב אז יש לי את הקוד הזה.
PHP קוד:

<?php

/**
 * @author Mor Sela
 * @copyright 2010
 */

class test{
    private 
$text;
    private 
$sqli;
    private 
$result;
    private 
$number;
    private 
$result2;
    private 
$num;
    private 
$counter;
    private 
$holder;
    
    function 
coon(){
        
$this->sqli = new mysqli("localhost""root""""test");
        
$this->number=2;
        if(
mysqli_connect_errno()){
            echo 
'Could not connect to data base , Error : '.mysqli_connect_error();
            exit;
        }
    }
    function 
getText(){
        
$this->result=$this->sqli->query("SELECT * FROM `tests`");
        
$this->num=$this->result->num_rows;
        while (
$this->result->fetch_object()) {
           
$this->result2=$this->result->fetch_assoc();
           
$this->echoText($this->result2['test1']);
        }
    }
    function 
echoText($text){
        echo 
'<div class="smalldiv">'.$text.'</div>';
    }
}

?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
    <title>Check Divs With PHP!</title>
    <style>
    .smalldiv{
        text-align:center;
        width: 99%;
        border-style:solid;
        border-color:blue;
        border-width:1.5px;
    }
    </style>
</head>

<body>

<?php

$control 
= new test();
$control -> coon();
$control->getText();

?>

</body>
</html>


דבר ראשון , זה אפשרי שהוא מוציא לי 6 תוצאות ומדפיס רק 3?
והוא מדפיס רק את הזוגיים ולא את האי זוגיים , מה הבעיה פה?

דבר שני , האם זה אפשרי לקצר את הפעולה עם ה- while?
שזה קודם עושה fetch_object ואחרי זה עושים fetch_assoc , איך אפשר לקצר את זה אם אפשר והאם זה יעיל כמו שעשיתי? (אני בא מmysql רגיל וזה קצת שונה לי להריץ 2 פקודות על אותו מערך.)

תודה.

morsrh 29-11-10 21:49

אי אפשר לערוך , בכל מקרה , אם רלוונטי יש 2 עמודות אחד אידי והשני טקסט , אני רוצה להוציא את הטקסט וזה מדפיס לי רק את הטקסט שהאידי שלו זה הזוגי.

בניה 29-11-10 22:24

כי אתה עושה פעמיים fetch, פעם אחת בתוך הWHILE וזה מעביר אותך לתוצאה הבאה.
הקוד שלך צריך להראות כך:
PHP קוד:

    function getText(){
        
$this->result=$this->sqli->query("SELECT * FROM `tests`");
        
$this->num=$this->result->num_rows;
        while (
$this->result2=$this->result->fetch_assoc()) {
           
$this->echoText($this->result2['test1']);
        } 

ואני הייתי עושה הפרדה בין הקוד שעובד מול המסד נתונים לקוד של הפלט אבל זה כבר נושא אחר.

morsrh 29-11-10 23:20

תודה רבה על התיקון.
ד"א עכשיו אפשר להגיד שאני בשלבי למידה לכן הקוד פה הוא לא למשהו רציני בכלל.

בניה 29-11-10 23:39

בכ"מ כדאי ללמוד הרגלי עבודה נכונים מההתחלה.
אני רואה פה נסיון שלך לעבוד בOOP אבל אתה לא משתמש בזה בצורה נכונה וזה עלול לפתח אצלך הבנה לא נכונה של זה והרגלים רעים בתכנות.

morsrh 29-11-10 23:52

הטעיה חמורה.


כל הזמנים הם GMT +2. הזמן כעת הוא 12:54.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ