Jump to content
php.lv forumi

Dubultojas izvadītie raksti ar INNER JOIN


iall

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 comment
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 comment
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 comment
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 comment
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 comment
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 comment
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...