Jump to content
php.lv forumi

Dubultojas izvadītie raksti ar INNER JOIN


Recommended Posts

Labrīt.

Biju rakstījis šādi:

$categories = $conn->query("SELECT zid, nosaukums FROM ziedu_kategorijas ORDER BY nosaukums ASC");
$flowers = [];

foreach ($categories as $category)
{
    $flowers[$category['zid']] = "SELECT puku_nosaukums FROM ziedi WHERE ziedu_id = ? ORDER BY puku_nosaukums ASC, $category[zid]";
    $categories->bind_param("s", $category['zid']);
    $categories->execute();
}

Rezultāts - "Fatal error: Call to undefined method mysqli_result::bind_param()"

Link to post
Share on other sites
  • Replies 39
  • Created
  • Last Reply

Top Posters In This Topic

Neuzmanības kļūda, atkal.

 

Pārlaboju uz ko šādu:

foreach ($categories as $category)
{
    $flowers[$category['zid']] = "SELECT puku_nosaukums FROM ziedi WHERE ziedu_id = $category[zid] ORDER BY puku_nosaukums ASC, $category[zid]";
}

Rāda šo:

Notice: Undefined index: ziedu_id in C:\xampp\htdocs\lazdkalni\admin\inc\all-flowers.php on line 57

Kods:

foreach ($categories as $category)
{
    echo $category['nosaukums'].'<br />';
    
    foreach ($flowers[$category['ziedu_id']] as $flower) <- 57 rindiņa
    {
        if(empty($flower['puku_nosaukums'])) {
            echo 'Ziedu nav!';
        } else {
            echo $flower['puku_nosaukums'];
    }
}
}

Pieņemu, ka ziedu_id nav izvilkts un tādēļ met kļūdu.

 

Pilns kods: http://codepad.org/M8TIaf0O

Edited by iall
Link to post
Share on other sites

Izlasi piemēru: http://php.net/manual/en/mysqli.prepare.php#refsect1-mysqli.prepare-examples

Tu tur tagad sāc izdomāt pats savas metodes.

 

Otrkārt, tu tak pat neesi nokopējis manu kodu pareizi:

foreach ($flowers[$category['ziedu_id']] as $flower)

manā kodā bija:

foreach ($flowers[$category['zid']] as $flower)

 

Tu mācies par programmētāju or something?

 

Un kas, pie velna, ir šitas:

$flowers[$category['zid']] = "SELECT puku_nosaukums FROM ziedi WHERE ziedu_id = $cat ORDER BY puku_nosaukums ASC, $category[zid]";

?

Edited by jurchiks
Link to post
Share on other sites

Sasmējos! :)

 

Viss bija pareizi nokopēts, negāja. Centos mazliet pielabot, paskatīties vai varbūt ir kas nepareizi nodefinēts, izsaukts.

 

Nemācos par programmētāju, tīri hobija pēc.

 

Pēc Tava dotā koda - Warning: Invalid argument supplied for foreach() (katrai rindai kur ir kvērijs).

Edited by iall
Link to post
Share on other sites

@jurchiks - man sanāca mazliet īsāk.

$sql2 =
"SELECT *
FROM ziedi
JOIN ziedu_kategorijas
ON ziedi.ziedu_id = ziedu_kategorijas.zid";

$result2 = mysqli_query($conn,$sql2);

$names = array();

while($row2 = mysqli_fetch_assoc($result2)) {

    foreach ( $result2 as $row2){
        $name = $row2['nosaukums'];
        if(!in_array($name, $names)){
            $names[] = $name;
            echo '<br /><u>'.$name ."</u><br />";
        }
        echo $row2['puku_nosaukums']."<br />";
    }    
} 
Edited by iall
Link to post
Share on other sites

Īsāk ne vienmēr ir labāk. Šāds kods ir sliktāk lasāms.

 

Muļķības, šis kods ir labi lasāms. Tavs kods gan bija diezgan briesmīgs, bloated, un kurš raksta kvēriju ciklā? 

Link to post
Share on other sites

Mans kods bija lasāms vēl vieglāk.

1. Salasi datus. 2. Izvadi datus. As simple as possible, separation of concerns, etc.

Par līniju skaitu tev nemaksā (un ja maksā, tad ko tu tur vispār dari?).

 

>kurš raksta kvēriju ciklā?

Es rakstu, acīmredzot. Un ja tu nepamanīji, tad es uzreiz piedāvāju arī optimālāku risinājumu, so piss off.

Edited by jurchiks
Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

×
×
  • Create New...