Avatar billede Calle5463 Forsker
20. november 2016 - 16:08 Der er 5 kommentarer

Tabel, select i kolonner for valg af data

Jeg har strikket nedenstående php-kode sammen, og er sådan lige-ved-og-næsten.
Jeg vil gerne have, at det ender med at være en tabel, hvor der i de tilhørende kolonneoverskrifter (hovedgrupper og itemgrupper) kan vælges de item jeg ønsker at se (itemgrupper er afhængig af hovedgrupper).
Jeg savner lige nu, at få lidt input til at strikke tabellen sammen, og få fundet ud af hvorfor jeg får denne notice når jeg vælger itemgruppe efter at have valgt hovedgruppe:
Notice: Undefined index: hovedgruppe_id in F:\xampp\htdocs\wordpress\CER_project\forslag_item.php on line 69


<?php
require_once("toolbox/connect_to_db.php");
// -----------------------------------------------------------

function hovedgrupper($conn) {
    $sql = "SELECT * FROM cer_hovedgrupper";
    $result = $conn->query($sql);
    $ar = array();
       
    while($row = $result->fetch_array()) {
        $ar[] = $row;
    }
    return $ar;
}

// -----------------------------------------------------------

function itemgrupper($conn, $hovedgruppe_id) {
    $sql = "SELECT * FROM cer_itemgrupper WHERE hovedgruppe_id = '$hovedgruppe_id' ";
    $result = $conn->query($sql);
    $ar = array();
       
    while($row = $result->fetch_array()) {
        $ar[] = $row;
    }
    return $ar;
}

// ------------------------------------------------------------

function item($conn, $id) {
    $sql = "SELECT * FROM cer_item WHERE itemgruppe_id = $id";
    $result = $conn->query($sql);
    $ar = $result->fetch_assoc();
    return $ar;
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>Olsen-demo</title>

        <style type="text/css">

        </style>
        <script type="text/javascript">

        </script>

    </head>
    <body>
        <?php $mysqli = forbind_til_database(); ?>

<?php       
      echo "<form action=" . $_SERVER['PHP_SELF'] . " method='post'>";
            $liste = hovedgrupper($mysqli);
            $str = '';
            $str = '<select name="hovedgruppe_id" onchange="this.form.submit()">';
            $str .='<option value="' . 0 . '">' . "Vælg" . '</option>';
            for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
                $str .='<option value="' . $liste[$i]['id'] . '">' . $liste[$i]['hovedgruppe'] . '</option>';
            }
            $str .='</select>';
            echo "Hovedgruppe " . $str;
        echo "</form>";

        echo "<form action=" . $_SERVER['PHP_SELF'] . " method='post'>";
            $liste = itemgrupper($mysqli, $_POST['hovedgruppe_id']);
            $str = '';
            $str = '<select name="itemgruppe_id" onchange="this.form.submit()">';
            $str .='<option value="' . 0 . '">' . "Vælg" . '</option>';
            for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
                $str .='<option value="' . $liste[$i]['id'] . '">' . $liste[$i]['itemgruppe'] . '</option>';
            }
            $str .='</select>';
            echo "Itemgruppe " . $str;
        echo "</form>";


        if (isset($_POST['itemgruppe_id'])) {
            $item = item($mysqli, $_POST['itemgruppe_id']);
            // print_r($item); // for test

            $str = '';
            $str = $item['itemnr'] . " " . $item['itemname'] . " " . $item['itembeskrivelse'] . " " . $item['itemgruppe_id'];
            echo $str;
        }
?>
    </body>
</html>
Avatar billede olsensweb.dk Ekspert
20. november 2016 - 16:33 #1
det er i denne blok det går galt

echo "<form action=" . $_SERVER['PHP_SELF'] . " method='post'>";
    $liste = itemgrupper($mysqli, $_POST['hovedgruppe_id']);
    $str = '';
    $str = '<select name="itemgruppe_id" onchange="this.form.submit()">';
    $str .='<option value="' . 0 . '">' . "Vælg" . '</option>';
    for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
        $str .='<option value="' . $liste[$i]['id'] . '">' . $liste[$i]['itemgruppe'] . '</option>';
    }
    $str .='</select>';
    echo "Itemgruppe " . $str;
echo "</form>";


er du sikker på du har en post i det fremhævet ??


jeg ville pakke blokken ind i en isset
(utested)

if(isset($_POST['hovedgruppe_id']) ){
    echo "<form action=" . $_SERVER['PHP_SELF'] . " method='post'>";
        $liste = itemgrupper($mysqli, $_POST['hovedgruppe_id']);
        $str = '';
        $str = '<select name="itemgruppe_id" onchange="this.form.submit()">';
        $str .='<option value="' . 0 . '">' . "Vælg" . '</option>';
        for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
            $str .='<option value="' . $liste[$i]['id'] . '">' . $liste[$i]['itemgruppe'] . '</option>';
        }
        $str .='</select>';
        echo "Itemgruppe " . $str;
    echo "</form>";
}
Avatar billede Calle5463 Forsker
20. november 2016 - 18:25 #2
Posten eksisterer
- jeg har fået pakket ud-data ind i en tabel
- og får ikke længere noten efter indpakningen i isset

Skal lige prøve om jeg kan placere select'ene (ps: lidt uheldigt valg af benævnelse, kan nemt forveklses med mysql-select) i respektive kolonneoverskrifter .....
Avatar billede Calle5463 Forsker
20. november 2016 - 18:51 #3
Hmm. Jeg har dette stående (php-fil), og det virker - men  layoutet er lidt noget rod


?>
   
print <tr><th>Itemnr</th><th>Itemnavn</th><th>Beskrivelse</th><th>Hovedgruppe <?php hovedgruppeselect($mysqli) ?></th><th>Itemgruppe <?php itemgruppeselect($mysqli) ?> </th></tr>

<?php
Avatar billede Calle5463 Forsker
24. november 2016 - 17:59 #4
Jeg har øvet mig lidt med ovenviste, men kan ikke ikke helt finde mig til rette med løsningen, især ikke når jeg vil anvende princippet et andet sted ....

Jeg har en aftale-tabel (fem kolonner+, linker medlems_id, hovedgruppe_id,  itemgruppe_id og item_id og sfl id.

Jeg kan med en select (læser medlemmer i tabellen med medlemsdata) vælge hvilken medlems_id jeg vil se en liste med aftaler.

Under listen med eksisterende aftaler, vil jeg nu gerne have mulighed for at lave endnu en aftale for det aktuelle medlem, i en udvalgt hovedgruppe og itemgruppe, hvor kun ledige item indgår som muligheder. Så jeg tænker først at skulle vælge hovedgruppe, derefter itemgruppe indenfor hovedgruppen, og til sidst et ledigt item indenfor hovedgruppen og itemgruppen

Og, min erfaring med php-løsninger er i forvejen begrænset (skoleagtig), erfaring med andre er nærmest ikke-eksisterende. Men, er jeg "nødt til" at se på noget jpquery eller lignende - og hvad? Løsningen behøver ikke se forfærdelig fancy ud, men den skal virke nem at gå til uden særlige evner (hm) ....
Avatar billede Calle5463 Forsker
25. november 2016 - 22:45 #5
Jeg har denne "skitse", hvor jeg ikke anvender de to funktioner "hovedgrupper" og "hovedgruppeselect", da jeg ikke kan få det til at samarbejde med tilsvarende for itemgrupper og item. Disse er derfor blot vist som hardkodede for forhåbentligt at give en ide om funktionalitet

NB: de ikke-viste funktioner virker tilfredsstillende. Jeg får vist alle gældende aftaler og medlems_id kommer med ned i formularen for indsættelse af ny aftale.

NBNB: Den skulle gerne - efter indsættelse af ny aftale - vise den nye aftaleliste, men det vigtigste lige nu, er at få selctet de der grupper .....



// ------------------------------------------------------------

function hovedgrupper($con) {      // --- Eksempel på hentning af data til slekt-tabel ---
    $sql = "SELECT * FROM cer_hovedgrupper";
    $res = $con->query($sql);
    $ar = array();
       
    while($row = $res->fetch_array()) {
        $ar[] = $row;
    }
    return $ar;
}

// -----------------------------------------------------------

function hovedgruppeselect($con) {

        echo "<form method='POST'>";
            $liste = hovedgrupper($con);
            $str = '';
            $str = '<select name="hovedgruppe_id" /* onchange="this.form.submit()"*/ >';    // Notet ud for test
            $str .='<option value="' . 0 . '">' . "Vælg hovedgruppe" . '</option>';
            for ($i = 0, $lng = count($liste); $i < $lng; $i++) {
                $str .='<option value="' . $liste[$i]['id'] . '">' . $liste[$i]['hovedgruppe'] . " (" . $liste[$i]['id'] . ") " . '</option>';
            }
            $str .='</select>';
            echo $str;
        echo "</form>";
}

// --------------------------------------------------------------
// --------------------------------------------------------------

echo "<table>";
    echo "<tr><th width='10%'>Medlem</th>";
    echo "<th width='10%' align='left'>Hovedgruppe</th>";
    echo "<th width='10%' align='left'>Itemgruppe</th>";
    echo "<th width='10%' align='left'>Item</th>";
    echo "<th width='10%' align='center'>Aktion</th></tr>";

    medlemselect($mysqli); // Vælg det medlem der skal vises aftaler for

    if (isset($_POST['medlems_id'])) {
        medlemsaftaler($mysqli, $_POST['medlems_id'], $action);        // --- Viser data for det valgte medlem ---
    }
echo "</table>";

echo "<FORM method='POST'>";
    echo "<input type='text' name='navn' value='Navn: (" . $_POST['medlems_id'] . ") '>";
    echo "<select name='hovedgruppe_id'>";                    // --- Vælg den hovedgruppe der skal oprettes aftale for ---
        echo "<option value='0'>Vælg hovedgruppe</option>";
        echo "<option value='1'>Bådplads</option>";          // --- Istedet for hardkodede værdier, skal værdier hentes i tabel cer_hovedgrupper ---
        echo "<option value='2'>Redskabshytte</option>";
        echo "<option value='3'>Garnstativ</option>";
    echo "</select>";

    echo "<select name='itemgruppe_id'>";                    // --- Vælg den itemgruppe der skal oprettes aftale for ---
        echo "<option value='0'>Vælg itemgruppe</option>";
        echo "<option value='1'>(Bådplads) Sektion 1</option>"; // --- Istedet for hardkodede værdier, skal værdier hentes i tabel cer_itemgrupper med hovedgruppe_id som key ---
        echo "<option value='2'>(Bådplads) Sektion 2</option>";
        echo "<option value='3'>(Hytte) Lille</option>";
        echo "<option value='4'>(Hytte) Stor</option>";
        echo "<option value='5'>(Stativ) Stativ</option>";
    echo "</select>";
           
    echo "<select name='item_id'>";
        echo "<option value='0'>Vælg item</option>";          // --- Vælg det item der skal oprettes aftale for ---
        echo "<option value='1'>(Båd-sek 1) Plads nr 22</option>";  // --- Istedet for hardkodede værdier, skal værdier hentes i tabel cer_item med hovedgruppe_id og itemgruppe_id som key ---
        echo "<option value='2'>(Båd-sek 1) Plads nr 23</option>";
        echo "<option value='3'>(Båd-sek 2) Plads nr 43</option>";
        echo "<option value='4'>(Båd-sek 2) Plads nr 44</option>";
        echo "<option value='5'>(Hyt-lil) Hytte nr 3</option>";
        echo "<option value='6'>(Hyt-lil) Hytte nr 7</option>";
        echo "<option value='7'>(Hyt-st)Hytte nr 12</option>";
        echo "<option value='8'>(Hyt-st)Hytte nr 32</option>";
        echo "<option value='9'>(Stativ) Stativ</option>";
    echo "</select>";
       
    echo "<input type='submit' name='ind' value='indsæt'>";    // --- indsæt data i cer_aftaler ---
echo "</FORM>";

if(isset($_POST['ind'])){
    insert_data();
}
   
if(isset($_POST['knap'])) {
    if($_POST['knap'] == 'slet') {
        // echo "<br> Forsøger at slette en record med id-nr: " . $_POST['id'] . "<br>"; // For test
        slet_aftale($mysqli, $_POST['id']);
    }
}
       
$mysqli->close();
?>

Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester