Avatar billede rubaek Mester
03. april 2020 - 17:20 Der er 5 kommentarer og
1 løsning

Hvordan får jeg nogle data frem?

Jeg har dette script, men når jeg afvikler det får jeg ingen data frem.
Der er helt sikkert noget jeg ikke har forstået.
Som det ses trækker jeg to variabler med over på siden, og det virker helt fint.
Men jeg kan ikke forstå hvad jeg ikke får gjort.
Nogle forslag?

Script
<?php
include'../includes/connection.php';
include'../includes/topp.php';

$prove_id=$_POST['prove_id'];
$p_klasse=$_POST['prove_klasse'];
echo $prove_id;
echo $p_klasse;

echo "hej";

if(isset($_POST['btn_update']) ){       
    $students = $_POST['students'];
    $sql = "UPDATE elevnavn SET F_NAME=?, L_NAME =? WHERE id=?";   
    $stmt = $db->prepare($sql);       
    foreach($students as $key => $value){       
        $stmt->bind_param('ssi', $firstname, $lastname, $user_id);
        $user_id = $value['id'];
        $firstname = $value['firstname'];
        $lastname = $value['lastname'];       
        $stmt->execute();       
    }
}




if(isset($_POST['ELEV_ID'])){
    $students_id=$_POST['ELEV_ID'];
    $str='<form action="'.$_SERVER['PHP_SELF'].'" method="post">';       
    $sql = "SELECT ELEV_ID, F_NAME, L_NAME FROM elevnavn where klasse_kode =? And P_NAME = ?";       
    $stmt = $db->prepare($sql);   
    foreach($ELEV_ID as $key => $value){       
        $stmt->bind_param('i', $key);       
        $stmt->execute();       
        $stmt->bind_result($user_id, $firstname, $lastname);
        if ($stmt->fetch()) {                       
            $str.='<input type="hidden" name="students['.$user_id.'][ELEV_ID]" value="'.$user_id.'">';               
            $str.='<input type="text" name="students['.$user_id.'][F_NAME]" placeholder ="fornavn" value="'.$firstname.'">';           
            $str.='<input type="text" name="students['.$user_id.'][L_NAME]" placeholder ="efternavn" value="'.$lastname.'">';
            $str.='<br>';           
        }       
    }   
    $str.='<input type="submit" name="btn_update">';
    $str.='</form>';   
    echo $str;   
}
Avatar billede olsensweb.dk Ekspert
03. april 2020 - 18:00 #1
>Som det ses trækker jeg to variabler med over på siden, og det virker helt fint.
hvad med den 3 variabel ??

>>if(isset($_POST['ELEV_ID'])){<<
hvis du ikke får ELEV_ID med over kommer du ikke ind og får lavet en form.
kig i html coden eller browserens udviklings værktøj (F12)
Avatar billede olsensweb.dk Ekspert
03. april 2020 - 18:20 #2
>$students_id=$_POST['ELEV_ID'];
bruges ikke

>foreach($ELEV_ID as $key => $value){
giver ikke mening, da ELEV_ID ikke er et array

hvad skal den sql hente med hvilke parameter.
hvordan ser den elevnavn tabel ud ??
Avatar billede rubaek Mester
03. april 2020 - 22:39 #3
ELEV_ID = unik elevid
KLASSE = klassebetegnelse
klasse_kode = unik nr
F_NAME =fornavn
L_NAME = efternavn
P_NAME = prøve kode
P1 = point

Man har inden denne side valgt en klasse (KLASSE) og en prøvetype (P_NAME)
Nu skal man have en elevliste og et point felt der kan rettes i, og gemmes.
Avatar billede olsensweb.dk Ekspert
04. april 2020 - 08:57 #4
<?php
require 'connection.php';


if(isset($_POST['btn_update']) ){       
    $students = $_POST['students'];
    $sql = "UPDATE elevnavn SET F_NAME=?, L_NAME =?, P1=? WHERE ELEV_ID=?";   
    $stmt = $db->prepare($sql);       
    foreach($students as $key => $value){       
        $stmt->bind_param('ssii', $value['firstname'], $value['lastname'], $value['point'], $value['elev_id']);       
        $stmt->execute();       
    }
}


$prove_id= $_POST['prove_id'];
$p_klasse= $_POST['prove_klasse'];

if(isset($_POST['prove_id']) ){       
$str='<form action="'.$_SERVER['PHP_SELF'].'" method="post">';     
$sql = "SELECT ELEV_ID, F_NAME, L_NAME, P1 FROM elevnavn where klasse_kode =? And P_NAME = ?";   
$stmt = $db->prepare($sql); 
$stmt->bind_param('is', $prove_id,$p_klasse);
$stmt->execute();     
$result = $stmt->get_result();
while ($row = $result->fetch_array(MYSQLI_ASSOC)) {
        $user_id = $row["ELEV_ID"];       
        $str.='<input type="hidden" name="students['.$user_id.'][elev_id]" value="'.$user_id.'">';             
        $str.='<input type="text" name="students['.$user_id.'][firstname]" placeholder ="fornavn" value="'.$row["F_NAME"].'">';         
        $str.='<input type="text" name="students['.$user_id.'][lastname]" placeholder ="efternavn" value="'.$row["L_NAME"].'">';
        $str.='<input type="text" name="students['.$user_id.'][point]" placeholder ="efternavn" value="'.$row["P1"].'">';
        $str.='<br>';         
}     
 
$str.='<input type="submit" name="btn_update">';
$str.='</form>'; 
echo $str; 
}
?>




kunne være man skulle lægge tallet til existerende point

https://stackoverflow.com/questions/9017189/mysql-query-to-insert-an-x-before-every-value-in-column
update table1 set col5 = 'x' + col5
Avatar billede olsensweb.dk Ekspert
04. april 2020 - 10:06 #5
dette
$str.='<input type="text" name="students['.$user_id.'][point]" placeholder ="efternavn" value="'.$row["P1"].'">';
bør vel være
$str.='<input type="text" name="students['.$user_id.'][point]" placeholder ="point" value="'.$row["P1"].'">';
det har kun betydning hvis der ikke står noget i db, man kan også overveje at slette placeholder helt

-----------

er der et afhænnings forhold mellem disse 2 felter "klasse_kode, KLASSE" ??
ligesom den klssiske posnummer, bynavn

https://en.wikipedia.org/wiki/Database_normalization
https://www.vidas.dk/mysql/MySQL_database_normalisering.html
https://balslev.io/programmering/database/normalisering-af-databaser/
https://www.computerworld.dk/uploads/eksperten-guider/234-Database-design-Normalisering.pdf
Avatar billede rubaek Mester
04. april 2020 - 17:56 #6
Det virker, nu har jeg mange klodser, så skal de bare sættes sammen. Der er noget jeg ikke helt har gennemtænkt. Men jeg er kommet meget videre. Tak for hjælpen.
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