Avatar billede rubaek Mester
02. april 2020 - 09:24 Der er 8 kommentarer og
2 løsninger

$_POST driller helt vildt, jeg forstår det ikke...

Jeg forstår ikke dette:

Jeg har et script, hvori jeg har denne linie:
$str .= '<td><input type="radio" name="klasse_id['.$id.']" ></td>';

På den siden som der sendes videre til har jeg denne kode (som kontrol, skal ikke bruges).
Welcome <?php echo $_POST["klasse_id"]; ?><br>

Jeg forventer et resultat jeg kan bruge men får dette resultat:
Welcome Array

Hjælp, jeg er stået helt af.
Avatar billede ejvindh Ekspert
02. april 2020 - 09:40 #1
Du navngiver jo inputtet med "klasse_id" + indholdet af $id. Derfor findes der ikke en $_POST med navnet klasse_id

Så hvis fx $id = "dummy" -- så vil det rigtige navn i $_POST være "klasse_iddummy".

Mon ikke du mener noget med:

$str .= '<td><input type="radio" name="klasse_id" value="'.$id.'" ></td>';
Avatar billede rubaek Mester
02. april 2020 - 10:00 #2
Jo, nu virker det, jeg synes bare jeg havde prøvet alt, men åbenbart ikke denne mulighed.
Tak for hjælpen.
Avatar billede rubaek Mester
02. april 2020 - 10:28 #3
Kan nogen hjælpe mig videre her:

Jeg har nu fået variablen 15.
Jeg vil så gerne have et udtræk fra product hvor TRIN er = 15

Script.
$valg=$_POST['klasse_id'];
echo $valg;
?>
        <style type="text/css">
            table, td, th {
                border: 1px solid gray}
            .align_right{
                text-align: right;}
        </style>

        <form method="post" action="1_valg_pr.php" >
        <table id="bruger_tabel">
            <tr>
                <td colspan="6" class="align_right"><a href="students_create.php">Vlg prve</a></td>
            </tr>
            <tr>

                <td>ID</td>
                <td>klassetrin</td>               

            </tr>
            <?php
          $type=$_POST['klasse_id'];
            $sql = "SELECT PRODUCT_ID, TRIN FROM product WHERE TRIN= ?";
           
            $stmt = $db->prepare($sql);
            $stmt->execute();
           
            /* Bind resultatet */
            $stmt->bind_result('i', $valg);
Avatar billede ejvindh Ekspert
02. april 2020 - 12:24 #4
Tror du i slutningen er ude efter noget lignende (ikke testet):

$sql = "SELECT PRODUCT_ID, TRIN FROM product WHERE TRIN= ?";
$stmt = $db->prepare($sql);
$stmt->bind_param('i', $type);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
  echo "<br>".$row["product_id"]." - ".$row["trin"];
}
Avatar billede ejvindh Ekspert
02. april 2020 - 12:25 #5
(men i hvert fald: du manglede bind_param - delen)
Avatar billede rubaek Mester
02. april 2020 - 13:41 #6
Det virker, fedt.
Avatar billede rubaek Mester
02. april 2020 - 15:06 #7
Og så er vi på næste side:
Jeg skal have fat i prove_id, men den fejler på næste side, men denne fejl:

Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in /var/www/gmonskole.dk/public_html/tk/pages/1_valg_elever.php:31 Stack trace: #0 {main} thrown in /var/www/gmonskole.dk/public_html/tk/pages/1_valg_elever.php on line 31

Siden den sender fra:
            <?php
                  $sql = "SELECT PRODUCT_ID, type_nr, DESCRIPTION, TRIN, prove_navn FROM product WHERE TRIN= ?";
                $stmt = $db->prepare($sql);
                $stmt->bind_param('i', $valg);
                $stmt->execute();
                $result = $stmt->get_result();
                while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
                  echo "<br>".$row["PRODUCT_ID"]." - ".$row["type_nr"]." - ".$row["DESCRIPTION"]." - ".$row["TRIN"];


                $str .= '<tr>';
                $str .= '<td><input type="radio" name="prove_id" value="'.$id.'" ></td>';
                $str .= '<td> '.$row["type_nr"].' </td>';
                $str .= '<td>'.$row["prove_navn"].'</td>'; 
                              $str .= '<td>'.$row["DESCRIPTION"].'</td>';
                $str .= '</tr>';
            }
            echo $str;
            ?>

Siden den sender til:
<?php
include'../includes/connection.php';
include'../includes/topp.php';

$valg=$_POST['prove_id'];
echo $valg;
?>
        <style type="text/css">
            table, td, th {
                border: 1px solid gray}
            .align_right{
                text-align: right;}
        </style>

        <form method="post" action="2_valg_elever.php" >
        <table id="bruger_tabel">
            <tr>
                <td colspan="6" class="align_right"><a href="students_create.php">Vlg prve</a></td>
            </tr>
            <tr>

                <td>ID</td>
                <td>Prve nr.</td>               
                <td>Prve navn</td> 
                              <td>Fag</td> 
            </tr>

            <?php
          $sql = "SELECT F_NAME, L_NAME FROM elevnavn WHERE TRIN= ?";
$stmt = $db->prepare($sql);
$stmt->bind_param('i', $valg);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {



                $str .= '<tr>';
                $str .= '<td></td>';
                $str .= '<td> '.$row["F_NAME"].' </td>';
                $str .= '<td>'.$row["L_NAME"].'</td>'; 
                $str .= '<td>'.$row["P1"].'</td>';
                $str .= '</tr>';
            }
            echo $str;
            ?>           
        </table>
        <input type="submit" name="send" value="Vlg prve" klasse="send">
        </form>
Avatar billede ejvindh Ekspert
02. april 2020 - 17:17 #8
Mon ikke det handler om, at du mangler at fylde indhold i $id her:

$str .= '<td><input type="radio" name="prove_id" value="'.$id.'" ></td>';

Umiddelbart vil jeg gætte på, at det er denne værdi, du vil have smidt ind: $row["PRODUCT_ID"]
Avatar billede rubaek Mester
02. april 2020 - 17:30 #9
Helt rigtig.
Sat ind sådan her:
$str .= '<td><input type="radio" name="prove_id" value="'.$row["PRODUCT_ID"].'" ></td>';
Men er det rigtig ?
Dette er linie 31)
$stmt->bind_param('i', $valg);

Får denne fejl:
Fatal error: Uncaught Error: Call to a member function bind_param() on boolean in /var/www/gmonskole.dk/public_html/tk/pages/1_valg_elever.php:31 Stack trace: #0 {main} thrown in /var/www/gmonskole.dk/public_html/tk/pages/1_valg_elever.php on line 31
Avatar billede ejvindh Ekspert
02. april 2020 - 19:56 #10
Den fejlmelding tyder på, at din $row["PRODUCT_ID"] bliver opfattet som en boolean (altså false/true). Jeg er lidt usikker på, om det kan skyldes at du skriver PRODUCT_ID med stort.

I hvert fald er pointen, at indholdet af den $valg, som du får fejl på, bliver bestemt i den linje, som vi arbejder med her. Prøv lige at teste, hvad indholdet af $row["PRODUCT_ID"] viser i den while-løkke, hvor du udskriver indholdet af alle dine rækker. Alternativt, prøv at kigge html-kildekoden i den radiobutton, som du har valgt, og se hvad der står som value der.
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

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