Jump to content
php.lv forumi

Dubultojas izvadītie raksti ar INNER JOIN


Recommended Posts

Posted

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()"

  • Replies 39
  • Created
  • Last Reply

Top Posters In This Topic

Posted (edited)

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
Posted (edited)

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
Posted (edited)

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
Posted (edited)

@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
Posted

Varbūt, bet varbūt arī nē! :)

 

Paldies par palīdzību visiem.

 

@jurchiks - alus no manis, par uzvešanu uz pareizā ceļa.

Posted (edited)

Nav par ko.

Diemžēl es nedzeru alu :(

 

P.S. Ja ir gribēšana brīvdienās pamācīties programmēšanu, http://codeschool.com piedāvā šajās brīvdienās visus kursus bez maksas. Tur ir kaudze tiešām kvalitatīvu kursu, tā kā iesaku izmantot.

Edited by jurchiks
Posted

Ī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ā? 

Posted

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

 

Man šito bija slinkums rakstīt.

Posted (edited)

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

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