Avatar billede Morten Professor
11. november 2015 - 22:53 Der er 18 kommentarer og
1 løsning

Update mysqli

Hej Eksperter

Har en rigtig drilsk update

Den kommer denne i starten når jeg henviser til siden.
Notice: Undefined index: overskrift in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 117 Notice: Undefined index: tekst in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 118 Notice: Undefined index: navn in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 120

Men når jeg så skriver alligevel kommer der noget ind.
Går jeg så tilbage for at se om det er der, er det der.
Går jeg så ind igen, forsvinder det.

Mine koder er select og update på samme side, da jeg gerne vil se hvad jeg opdatere.

I får dem lige her:


function artikel_Update($hellestrik) {
/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('UPDATE `tbl_artikel` SET `overskrift`=?, `tekst`=?, `datetime`=?, `navn`=? WHERE `id`=?')) {

    /* Bind parametre */
    $stmt->bind_param('ssssi', $overskrift, $tekst, $datetime, $navn, $id);

    /* Sæt værdier på parametrene */
    $overskrift = $_POST['overskrift'];
    $tekst = $_POST['tekst'];
    $datetime = date('Y-m-d H:i:s');
    $navn = $_POST['navn'];
    $id = $_GET['id'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
   

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}}
$test = artikel_Update($hellestrik);

function artikel_Select($hellestrik) {
    $_id = 0;
    /* Opret et prepared statement */
    if ($stmt = $hellestrik->prepare('SELECT `id`, `overskrift`, `tekst`, `datetime`, `navn` FROM `tbl_artikel` WHERE `id` = ?' )) {
        /* Bind parametre */
        $stmt->bind_param('i', $id);

        /* Sæt værdier på parametrene */
        $id = $_GET['id'];

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($id, $overskrift, $tekst, $datetime, $navn);

        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
            echo '<form id="artikel" name="artikel" method="POST" action="">';
            echo '<label for="overskrift">';
            echo '</label>';
            echo '<input name="overskrift" type="text" id="overskrift" value="' . $overskrift . '" size="40" />';
            echo '<br />';
            echo '<label for="tekst">';
            echo '</label>';
            echo '<textarea name="tekst" id="tekst" cols="45" rows="5">' . $tekst . '</textarea>';
            echo '<br />';
            echo '<label for="dato">';
            echo '</label>';
            echo '<input name="dato" type="text" id="dato" value="' . $datetime . '" size="40" />';
            echo '<br />';
            echo '<label for="navn">';
            echo '</label>';
            echo '<input name="navn" type="text" id="navn" value="' . $navn . '" size="40" />';
            echo '<br />';
            echo '<input name="button" type="submit" class="knap" id="button" value="Opdater artikel" />';
            echo '</form>';
        }

        /* Luk statement */
        $stmt->close();
    } else {
        /* Der er opstået en fejl */
        echo 'Fejl på server' . $hellestrik->error;
        $_id = -1;
    }
    return $_id;
}       

$test = artikel_Select($hellestrik);


Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
11. november 2015 - 23:41 #1
hvordan kalder du siden med ??  POST eller GET ??
$navn = $_POST['navn'];
$id = $_GET['id'];

jeg tror det er ud fra en GET, siden alle post variablerne er ukendte
Avatar billede Morten Professor
12. november 2015 - 07:20 #2
<form id="artikel" name="artikel" method="POST" action="">';
            echo '<label for="overskrift">';

Jeg Poster for at få det ind på databasen.
Og derfor har jeg
$overskrift = $_POST['overskrift'];
    $tekst = $_POST['tekst'];
    $datetime = date('Y-m-d H:i:s');
    $navn = $_POST['navn'];

Jeg kan ikke rigtig se hvad der er galt.

Er nød til at $_GET['id'] ellers kommer den ikke med noget.
Avatar billede Morten Professor
12. november 2015 - 07:22 #3
Ellers kommer den med flere fejl
Notice: Undefined index: overskrift in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 117 Notice: Undefined index: tekst in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 118 Notice: Undefined index: navn in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 120 Notice: Undefined index: id in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 121
Avatar billede olsensweb.dk Ekspert
12. november 2015 - 09:55 #4
du kan kun bruge POST eller GET, du kan ikke anvende bægge 2 samtidig.

du kunne jo sende din id med over som POST i et hidden felt
så du skal tilføje et input mere i din form
echo '<input name="id" type="hidden" value="' . $id . '" />';


og dette
$navn = $_POST['navn'];
$id = $_GET['id'];
skal selvføgelig være
$navn = $_POST['navn'];
$id = $_POST['id'];


hvorfor updaterer du før du visser formen ??

du skal vise formen, brugeren laver ændringer, trykker på submit, og der kaldes en opdate
Avatar billede Morten Professor
12. november 2015 - 10:22 #5
Den kommer med:

Notice: Undefined index: overskrift in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 171 Notice: Undefined index: tekst in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 172 Notice: Undefined index: navn in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 174 Notice: Undefined index: id in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 175
Avatar billede Morten Professor
12. november 2015 - 10:24 #6
Har ændret de ting du sagde, også det med update og select update byttet rundt.
Avatar billede olsensweb.dk Ekspert
12. november 2015 - 14:03 #7
kig på dette lille eks

(er tested)
   
<?php
ini_set("display_startup_errors", "on");
ini_set("display_errors", "on");
ini_set("html_errors", "false");
error_reporting(-1); // -1 viser alle slags fejl beskeder
ini_set("ignore_repeated_errors", 0);
require_once("model.php"); // her ligger connection og alle sql funktioner

function artikel_Read($conn, $id) {
    $ar = array();
    /* Opret et prepared statement */
    if ($stmt = $conn->prepare('SELECT `id`, `overskrift`, `tekst`, `datetime`, `navn` FROM `tbl_artikel` WHERE `id` = ? LIMIT 1')) {
        /* Bind parametre */
        $stmt->bind_param('i', $id);
        /* Eksekver forespørgslen */
        $stmt->execute();
        /* Bind resultatet */
        $stmt->bind_result($id, $overskrift, $tekst, $datetime, $navn);
        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
            // der er kun 1 række, hvis der er nogle
            $ar = array("id" => $id, "overskrift" => $overskrift, "tekst" => $tekst, "datetime" => $datetime, "navn" => $navn);
        }
        /* Luk statement */
    } else {
        /* Der er opstået en fejl */
        echo 'Fejl på server' . $conn->error;
    }
    return $ar;
}

function artikel_Update($conn, $id, $datetime, $navn, $overskrift, $tekst) {
    /* Opret et prepared statement */
    if ($stmt = $conn->prepare('UPDATE `tbl_artikel` SET `overskrift`=?, `tekst`=?, `datetime`=?, `navn`=? WHERE `id`=?')) {
        /* Bind parametre */
        $stmt->bind_param('ssssi', $overskrift, $tekst, $datetime, $navn, $id);
        /* Eksekver forespørgslen */
        $stmt->execute();
        /* Luk statement */
    } else {
        /* Der er opstået en fejl */
        echo 'Der opstod en fejl i erklæringen: ' . $conn->error;
    }
}
?>
<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title>test stub</title>
    </head>
    <body>
<?php
if (isset($_POST['button'])) {
    $id = $_POST['id'];
    $overskrift = $_POST['overskrift'];
    $tekst = $_POST['tekst'];
    $datetime = date('Y-m-d H:i:s'); // $_POST['datetime'];
    $navn = $_POST['navn'];
    artikel_Update($hellestrik, $id, $datetime, $navn, $overskrift, $tekst);
}


$id = 1; // $id = $_GET['id']
$info = artikel_Read($hellestrik, $id);
echo '<form id="artikel" name="artikel" method="POST" action="">';
echo '<input name="id" type="hidden" value="' . $info['id'] . '" />';
echo '<label for="overskrift">';
echo '</label>';
echo '<input name="overskrift" type="text" id="overskrift" value="' . $info['overskrift'] . '" size="40" />';
echo '<br />';
echo '<label for="tekst">';
echo '</label>';
echo '<textarea name="tekst" id="tekst" cols="45" rows="5">' . $info['tekst'] . '</textarea>';
echo '<br />';
echo '<label for="dato">';
echo '</label>';
echo '<input name="dato" type="text" id="dato" value="' . $info['datetime'] . '" size="40" />';
echo '<br />';
echo '<label for="navn">';
echo '</label>';
echo '<input name="navn" type="text" id="navn" value="' . $info['navn'] . '" size="40" />';
echo '<br />';
echo '<input name="button" type="submit" class="knap" id="button" value="Opdater artikel" />';
echo '</form>';
?>
</body>
</html>

læg specialt mærke til at jeg først kalder update når jeg har trykket på submit(testes med isset)
Avatar billede Morten Professor
12. november 2015 - 14:42 #8
Tak men jeg forstår ikke hvorfor den kommer med de her fejl.

Det er godt nok et stort stykke flot arbejde du har lavet.

Notice: Undefined variable: overskrift in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/test_select_update_model.php on line 71

Notice: Undefined variable: tekst in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/test_select_update_model.php on line 75

Notice: Undefined variable: datetime in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/test_select_update_model.php on line 79

Notice: Undefined variable: navn in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/test_select_update_model.php on line 83

Er der noget i vejen med min server?
Jeg har kun ændret con i koden, for at komme i kontakt med databasen.
Avatar billede Morten Professor
12. november 2015 - 14:47 #9
Gid jeg kunne vise dig hvordan det ser ud når man gør tingene.

Nu har jeg sat mange af dine funktioner ind af det du har lavet.
Ind i min kode.
Og det virker til at det virker med ingen fejl.

Det der bare er problemet det er, når jeg skriver noget nyt ind, kommer det nye ikke ind, først når jeg trykke gem igen. og det kan man gøre igen og igen, hvor den går frem tilbage med teksten man har skrevet.
Avatar billede Morten Professor
12. november 2015 - 14:56 #10
Her er min database

CREATE TABLE IF NOT EXISTS `tbl_artikel` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `overskrift` varchar(255) NOT NULL,
  `tekst` text NOT NULL,
  `datetime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `navn` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=3 ;

--
-- Data dump for tabellen `tbl_artikel`
--

INSERT INTO `tbl_artikel` (`id`, `overskrift`, `tekst`, `datetime`, `navn`) VALUES
(2, 'aswretqwqwetqwertwe', 'aasdfwettqwetqwetrtwertw', '2015-11-12 13:36:25', 'asdffasdfwterqwetqwetertwert');
Avatar billede olsensweb.dk Ekspert
12. november 2015 - 15:19 #11
#8
>Notice: Undefined variable: xxxxx
det virker som du kører din artikel_Update før du har trykket submit

>Jeg har kun ændret con i koden, for at komme i kontakt med databasen.
der er ikke grund til at ændre conn inde i functionen, hvad variablen hedder inde i og udenfor funtionen behøver ikke være ens.
du kan se jeg kalder min connection for conn inde i functionerne og hellestrik uden for functionerne

jeg tror jeg vil tilføje en else på min isset, og lægge $id = $_GET['id'] ind der
   
if (isset($_POST['button'])) {
    $id = $_POST['id'];
    $overskrift = $_POST['overskrift'];
    $tekst = $_POST['tekst'];
    $datetime = date('Y-m-d H:i:s'); // $_POST['datetime'];
    $navn = $_POST['navn'];
    artikel_Update($hellestrik, $id, $datetime, $navn, $overskrift, $tekst);
}

else{
    // $id = 2;
    $id = $_GET['id'];   
}

$info = artikel_Read($hellestrik, $id);

dermed sikres at det altid er den id der kommer med get eller den der lige er posted der læsses, til kontrol
Avatar billede Morten Professor
12. november 2015 - 19:06 #12
Jubii nu virker det, fjernede alt function. byttede rundt på update og select, så update er for oven.
Det virker upåklageligt, viser et de fejl som den altid gør, selvom vi har prøvet alt, men kan jeg jo lukke den fejl function, bare indtil jeg ved hvad der lige går galt.

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
12. november 2015 - 19:38 #13
>viser et de fejl som den altid gør
du mener fejlen her http://www.eksperten.dk/spm/1007112#reply_8200317


ref https://www.google.dk/webhp?sourceid=chrome-instant&ion=1&espv=2&ie=UTF-8#q=Warning%3A+mysqli%3A%3Amysqli()%3A+(28000%2F1045)%3A+Access+denied+for+user+'root'%40'localhost'+(using+password%3A+NO)

ref http://stackoverflow.com/questions/17663984/mysqli-28000-1045-access-denied-for-user-rootlocalhost
man skulle næsten tro du kalder din connect uden det rigtige parameter

ref http://superuser.com/questions/584106/mysql-access-denied-for-rootname-of-the-computer
prøv i phpmyadmin klik på sql og paste dette ind
SELECT `Host`, `User` FROM `mysql`.`user`;
hvad skriver den ???

ref http://forums.devshed.com/php-development-5/mysqli-error-28000-1045-access-denied-user-569786.html
den er næsten for dum
Avatar billede Morten Professor
12. november 2015 - 19:48 #15
Nej ikke den ;o)

De her:

Notice: Undefined index: overskrift in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 119 Notice: Undefined index: tekst in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 120 Notice: Undefined index: navn in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 122 Notice: Undefined index: id in /var/www/vhosts/flueopskrifter.dk/webshop.flueopskrifter.dk/admin/admin_artikel_update.php on line 123

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
12. november 2015 - 20:20 #16
#15
ligner du vil lave en update før du har submittet dine data
isset er løsningen

det er bare mit bud
Avatar billede Morten Professor
12. november 2015 - 21:01 #17
Jeg tager imod al den hjælp du giver og tips, jeg lære en masse af dig.

okay altså den der:
if (isset($_POST['button'])) {
    $id = $_POST['id'];
    $overskrift = $_POST['overskrift'];
    $tekst = $_POST['tekst'];
    $datetime = date('Y-m-d H:i:s'); // $_POST['datetime'];
    $navn = $_POST['navn'];

Som du har lavet til mig?
Kan jeg få den integreret i det jeg har lavet for at afhjælpe de fejl der?

Koden som den ser ud nu:


/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('UPDATE `tbl_artikel` SET `overskrift`=?, `tekst`=?, `datetime`=?, `navn`=? WHERE `id`=?')) {

    /* Bind parametre */
    $stmt->bind_param('ssssi', $overskrift, $tekst, $datetime, $navn, $id);

    /* Sæt værdier på parametrene */
    $overskrift = $_POST['overskrift'];
    $tekst = $_POST['tekst'];
    $datetime = date('Y-m-d H:i:s');
    $navn = $_POST['navn'];
    $id = $_POST['id'];

    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
    $stmt->close();

} else {
    /* Der er opstået en fejl */
    echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
}

    $_id = 0;
    /* Opret et prepared statement */
    if ($stmt = $hellestrik->prepare('SELECT `id`, `overskrift`, `tekst`, `datetime`, `navn` FROM `tbl_artikel` WHERE `id` = ?' )) {
        /* Bind parametre */
        $stmt->bind_param('i', $id);

        /* Sæt værdier på parametrene */
        $id = $_GET['id'];

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Bind resultatet */
        $stmt->bind_result($id, $overskrift, $tekst, $datetime, $navn);

        /* Hent rækker og udskriv data */
        while ($stmt->fetch()) {
            echo '<form id="artikel" name="artikel" method="POST" action="">';
            echo '<label for="overskrift">';
            echo '</label>';
            echo '<input name="overskrift" type="text" id="overskrift" value="' . $overskrift . '" size="40" />';
            echo '<br />';
            echo '<label for="tekst">';
            echo '</label>';
            echo '<textarea name="tekst" id="tekst" cols="45" rows="5">' . $tekst . '</textarea>';
            echo '<script>';
            echo 'CKEDITOR.replace( '.tekst.' );';
        echo '</script>';
            echo '<br />';
            echo '<label for="dato">';
            echo '</label>';
            echo '<input name="dato" type="text" id="dato" value="' . $datetime . '" size="40" />';
            echo '<br />';
            echo '<label for="navn">';
            echo '</label>';
            echo '<input name="navn" type="text" id="navn" value="' . $navn . '" size="40" />';
            echo '<br />';
            echo '<input name="button" type="submit" class="knap" id="button" value="Opdater artikel" />';
            echo '<input name="id" type="hidden" value="' . $id . '" />';
            echo '</form>';
            echo '<a href="admin_artikel_delete.php?id=' . $id .'">Slet artikel</a>';
        }

        /* Luk statement */
        $stmt->close();
    } else {
        /* Der er opstået en fejl */
        echo 'Fejl på server' . $hellestrik->error;
        $_id = -1;
    }
    return $_id;


Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
12. november 2015 - 21:31 #18
lidt hurtigt
   
<?php
if (isset($_POST['overskrift'])) {
    /* Opret et prepared statement */
    if ($stmt = $hellestrik->prepare('UPDATE `tbl_artikel` SET `overskrift`=?, `tekst`=?, `datetime`=?, `navn`=? WHERE `id`=?')) {

        /* Bind parametre */
        $stmt->bind_param('ssssi', $overskrift, $tekst, $datetime, $navn, $id);

        /* Sæt værdier på parametrene */
        $overskrift = $_POST['overskrift'];
        $tekst = $_POST['tekst'];
        $datetime = date('Y-m-d H:i:s');
        $navn = $_POST['navn'];
        $id = $_POST['id'];

        /* Eksekver forespørgslen */
        $stmt->execute();

        /* Luk statement */
        $stmt->close();
    } else {
        /* Der er opstået en fejl */
        echo 'Der opstod en fejl i erklæringen: ' . $hellestrik->error;
    }
}
// her har jeg id
else {
    $id = $_GET['id'];
}

/* Opret et prepared statement */
if ($stmt = $hellestrik->prepare('SELECT `id`, `overskrift`, `tekst`, `datetime`, `navn` FROM `tbl_artikel` WHERE `id` = ?')) {
    /* Bind parametre */
    $stmt->bind_param('i', $id);

    /* Sæt værdier på parametrene */


    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Bind resultatet */
    $stmt->bind_result($id, $overskrift, $tekst, $datetime, $navn);

    /* Hent rækker og udskriv data */
    while ($stmt->fetch()) {
        echo '<form id="artikel" name="artikel" method="POST" action="">';
        echo '<label for="overskrift">';
        echo '</label>';
        echo '<input name="overskrift" type="text" id="overskrift" value="' . $overskrift . '" size="40" />';
        echo '<br />';
        echo '<label for="tekst">';
        echo '</label>';
        echo '<textarea name="tekst" id="tekst" cols="45" rows="5">' . $tekst . '</textarea>';
        echo '<script>';
        echo 'CKEDITOR.replace( ' . tekst . ' );';
        echo '</script>';
        echo '<br />';
        echo '<label for="dato">';
        echo '</label>';
        echo '<input name="dato" type="text" id="dato" value="' . $datetime . '" size="40" />';
        echo '<br />';
        echo '<label for="navn">';
        echo '</label>';
        echo '<input name="navn" type="text" id="navn" value="' . $navn . '" size="40" />';
        echo '<br />';
        echo '<input name="button" type="submit" class="knap" id="button" value="Opdater artikel" />';
        echo '<input name="id" type="hidden" value="' . $id . '" />';
        echo '</form>';
        echo '<a href="admin_artikel_delete.php?id=' . $id . '">Slet artikel</a>';
    }

    /* Luk statement */
    $stmt->close();
} else {
    /* Der er opstået en fejl */
    echo 'Fejl på server' . $hellestrik->error;
}
?>
Avatar billede Morten Professor
12. november 2015 - 21:53 #19
Ja daa sådan mand :o)
Det løste det.
Mange tak for hjælpen endnu engang.

Er rigtig glad for du hjælper mig så meget.
Og du er så hurtig til at skrive, og kommer med en rigtig god hjælp.

Og du har været en stor hjælp.

Med venlig hilsen
Morten
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