Avatar billede totalpc Seniormester
06. september 2018 - 07:16 Der er 9 kommentarer

Redigere indtastning

Jeg vil gerne have hjælp til at løse dette problem:

Side 1

Her henter siden en liste af arter fra databasen. For hver art kan man indtaste en vægt.

*******************
$arter = $wpdb->get_results( "SELECT id as artid, artnavn, mindstemaal, sats FROM arter order by artnavn ASC");
                    if (!empty ($arter)) {
                    // work with results.
                    ?>
                    <form action="" method="post" id="form" enctype="multipart/form-data">
                    <table style="border:none;background-color:#e0e0eb;width:100%;">
                    <tr>
                    <?php
                    foreach ($arter as $art){
                    ?>
                        <td style="border:none;width:25%">
                        <?php echo $art->artnavn ?>
                        </td>
                        <td style="border:none;">
                        <input type="text" size="10" name="indvej[<?php echo $art->artid ?>]"> gram
                        </td>
                        <td style="border:none;"><font size="2">Mindstemål <?php echo $art->mindstemaal ?> cm</font></td>
                        <td style="border:none;"><font size="2">Sats <?php echo $art->sats ?></font></td>
                        </tr>
                        <tr>
*****************************                       
Når man har indtastet en vægt ud for x antal arter, kan man trykke Submit
*****************************                       
                        If($_POST['Submit'])
                    {
                        $_SESSION['indvej'] = $_POST["indvej"];
                        $_SESSION['baadnr'] = $baadnr;
                        $_SESSION['id']     = $id;
                        $_SESSION['dag']     = $dag;
                        ?>
                        <script type="text/javascript">
                        window.location = "http://localhost/WORDPRESS/?page_id=2";
                        </script>
*****************************               
Side 2

På side 2 lister den så de arter hvor der er indtastet en vægt.

$indvej = $_SESSION['indvej'];
$baadnr = $_SESSION['baadn'];
$id     = $_SESSION['id'];
$dag     = $_SESSION['dag'];
                       
foreach($indvej as $x => $x_value)
{
if ($x_value){
$artnavn = $wpdb->get_results( "SELECT ArtNavn FROM arter where id=$x");
    ?>
<tr>
<td width="50%"><b><?php echo $artnavn[0]->ArtNavn ?></b></td>
<td width="50%"><b><?php echo $x_value ?> gram</b></td>
</tr>
<?php
        }
    }
*****************************                       
Ideen er at man på denne side kan enten godkende og så gemmer den disse arter i databasen med vægt. Det virker. Men hvis der nu er en fejl i indtastningen af en vægt og man ikke kan godkende, så vil jeg gerne kunne klikke på en "tilbage" eller "rediger" knap som sender mig tilbage til side 1 med de indtastede date (vægt). Jeg kan ikke finde ud af at komme tilbage med data og få dem ind i de rigtige inputfelter.
Avatar billede Slater Ekspert
06. september 2018 - 08:03 #1
Når du allerede har gemt dataene i en session, så er det jo bare at hive dem ud af den igen.

Dvs. din første side med indtastninger kan ligne:
<input type="text" value="<?= isset($_SESSION['dag']) ? $_SESSION['dag'] : $vaerdi_hvis_session_ikke_findes ?>">
Avatar billede totalpc Seniormester
06. september 2018 - 09:18 #2
Nu har jeg prøvet sådan her:
<input type="text" value="<?= isset($_SESSION['indvej']) ? $_SESSION['indvej'] : "" ?>"

Det sker der umiddelbart intet ved. Men jeg kan heller ikke gennemskue hvordan den kan vide hvad den skal sætte ind hvor. For det skal jo passe til . Når jeg gemmer de data skal jeg jo løbe igennem sådan her:
foreach($indvej as $x => $x_value)
{
if ($x_value)
{
if($wpdb->insert(
'indvejning',
array(
'artid' => $x,
'baadnr' => $baadnr,
'dag' =>$dag,
'vaegt' =>$x_value
Avatar billede ejvindh Ekspert
06. september 2018 - 10:31 #3
Kunne en nemmere løsning måske ikke bare være at hæfte noget javascript-validering af inputtene på side 1, således at du ikke får lov til at navigere væk, før alle de indtastede data kan godkendes?

Det afhænger naturligvis af, hvad dine kriterier for godkendelse er :)
Avatar billede Rune1983 Ekspert
06. september 2018 - 10:44 #4
Utestet. Men prøv lige at se om det er noget ala dette du søger?

Side 1
<?php
$arter = $wpdb->get_results( "SELECT id as artid, artnavn, mindstemaal, sats FROM arter order by artnavn ASC");
if (!empty ($arter))
{
    // work with results.
    ?>
    <form action="" method="post" id="form" enctype="multipart/form-data">
    <table style="border:none;background-color:#e0e0eb;width:100%;">
    <tr>
    <?php
    foreach ($arter as $art)
    {
        $artid = $art->artid;
        $session_var = "indvej$artid";
        ?>
        <td style="border:none;width:25%">
        <?php echo $art->artnavn ?>
        </td>
        <td style="border:none;">
        <input type="text" size="10" value="<?php echo $_SESSION[$session_var]; ?>" name="<?php echo $session_var; ?>"> gram
        </td>
        <td style="border:none;"><font size="2">Mindstemål <?php echo $art->mindstemaal ?> cm</font></td>
        <td style="border:none;"><font size="2">Sats <?php echo $art->sats ?></font></td>
        </tr>
        <tr>
        <?php
    }
    ?>
    </table>
    </form>
    <?php
   
    If($_POST['Submit'])
    {
        $arter = $wpdb->get_results( "SELECT id as artid, artnavn, mindstemaal, sats FROM arter order by artnavn ASC");
        foreach ($arter as $art)
        {
            $artid = $art->artid;
            $session_var = "indvej$artid";
           
            $_SESSION[$session_var] = $_POST[$session_var];
        }
        $_SESSION['indvej'] = $_POST["indvej"];
        $_SESSION['baadnr'] = $baadnr;
        $_SESSION['id']    = $id;
        $_SESSION['dag']    = $dag;
        ?>
        <script type="text/javascript">
        window.location = "http://localhost/WORDPRESS/?page_id=2";
        </script>
        <?php
    }
}
?>

Side 2
<?php
$arter = $wpdb->get_results( "SELECT id as artid, artnavn, mindstemaal, sats FROM arter order by artnavn ASC");
foreach ($arter as $art)
{
    $artid = $art->artid;
    $session_var = "indvej$artid";
   
    $artnavn = $art->artnavn;
    ?>
    <tr>
    <td width="50%"><b><?php echo $artnavn; ?></b></td>
    <td width="50%"><b><?php echo $_SESSION[$session_var]; ?> gram</b></td>
    </tr>
    <?php
}
?>
Avatar billede totalpc Seniormester
06. september 2018 - 22:02 #5
@ejvindh
Nej for der er fx 30 arter i alt og de vises alle på side 1. Så har Team 1 måske fanget de 4 og jeg taster vægt ud for de 4 og på side 2 (godkende siden) skal den så kun vise de 4 der er indtastet vægt for, så det er nemt at overskue og nikke ok til. Hvis de så ikke nikker ok fordi der er en fejl, vil jeg gerne tilbage til side 1 uden alt slette alle input. Altså så jeg bare kan rette en af de 4 eller tilføje en 5. Og herefter gå til godkende siden igen.
Avatar billede totalpc Seniormester
06. september 2018 - 22:24 #6
@rune1983

Det virker ikke helt. Jeg får nu alle fisk med over på godkendsiden men ingen vægt data
Avatar billede Rune1983 Ekspert
07. september 2018 - 07:18 #7
Har du session_start(); aktiveret forinden koden?

Der mangler også et ; her
<font size="2">Sats <?php echo $art->sats ?>
Avatar billede totalpc Seniormester
07. september 2018 - 09:34 #8
@Rune1983
Hmm Session_start skal det være på side 2?
Avatar billede Rune1983 Ekspert
07. september 2018 - 10:55 #9
Hvis du hopper fra side 1 til side 2. Så skal hver side have session_start()
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