Avatar billede Morten Professor
09. november 2015 - 22:26 Der er 10 kommentarer og
1 løsning

Insert

Hej Eksperter

Så er jeg på den igen.
Jeg vil høre hvorfor der ikke kommer noget ind i min url.

De andre virker som de skal men når det kommer til at jeg skal have noget ind i url i databasen kommer der ingen ting ind på den.


function besogstaeller_Create($hellestrik, $ip){

if ($stmt = $hellestrik->prepare('INSERT INTO `tbl_besogstaeller` (ip, hits, besoeg, url, `datetime`) VALUES (?, ?, ?, ?, ?)')) {

    /* Bind parametre */
    $stmt->bind_param('siiss', $ip, $hits, $besoeg, $url, $datetime);

    /* Sæt værdier på parametrene */
        $ip = $_SERVER['REMOTE_ADDR'];
        $hits = 1;
    $besoeg = 1;
    $url = $_SERVER['REQUEST_URI']; // Har prøvet med en almindelig "test" ingen ting sker der
    $datetime = date('Y-m-d H:i:s');
    /* Eksekver forespørgslen */
    $stmt->execute();

    /* Luk statement */
    $stmt->close();
}} 
Avatar billede Morten Professor
09. november 2015 - 22:28 #1
Har fejl testet, der var ingen.
Avatar billede arne_v Ekspert
09. november 2015 - 22:34 #2
Hvilken type har URL feltet i databasen?
Avatar billede Morten Professor
09. november 2015 - 22:46 #3
varchar
Avatar billede Morten Professor
09. november 2015 - 22:47 #4
Har også prøvet at skrive sådan den skulle komme ind med "test"
Avatar billede olsensweb.dk Ekspert
09. november 2015 - 22:55 #5
du er sikker på at du har oprette en collonne i databasen ?? (ja)
du er sikker på at ip ikke står i databasen i forvejen ??
Avatar billede Morten Professor
09. november 2015 - 23:03 #6
Doh Ja det er da nok derfor så skulle jeg jo Update, ej undskyld igen. Det havde jeg da slet ikke tænkt på.

Ronols jeg tester det lige, men er sikker på det er derfor.
Du må gerne smide et svar.

Med venlig hilsen
Morten
Avatar billede Morten Professor
10. november 2015 - 08:31 #7
Jeg dropper det url noget. Jeg gør det på en anden måde så man kan se hvad hver enkelte går ind på løbene. Laver en ny tabel så der bliver noget styr på det.
Så man kan se hvad der mest attraktivt.
Jeg syntes det er en sjov måde at være med på.

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
10. november 2015 - 09:29 #8
hermed et svar

>Ronols jeg tester det lige, men er sikker på det er derfor.
jeg har tested det!! det virker


jeg tror du kan få gavn af at din create function altid retunerer den id den har oprettet
   
function besogstaeller_Create($hellestrik, $ip){
    $id=0;
    if ($stmt = $hellestrik->prepare('INSERT INTO `tbl_besogstaeller` (ip, hits, besoeg, url, `datetime`) VALUES (?, ?, ?, ?, ?)')) {
        /* Bind parametre */
        $stmt->bind_param('siiss', $ip, $hits, $besoeg, $url, $datetime);

        /* Sæt værdier på parametrene */
        $ip = $_SERVER['REMOTE_ADDR'];
        $hits = 1;
        $besoeg = 1;
        $url = $_SERVER['REQUEST_URI']; // Har prøvet med en almindelig "test" ingen ting sker der
        $datetime = date('Y-m-d H:i:s');
        /* Eksekver forespørgslen */
        $stmt->execute();
        // http://stackoverflow.com/questions/6556720/using-php-mysqli-and-prepared-statement-how-i-return-the-id-of-the-inserted-ro
        $id = $stmt->insert_id;


        /* Luk statement */
        $stmt->close();
    }
    else{
        echo "server fejl";
        $id = -1;
    }
    return $id;
}

// 1 tallet er ligegyldigt da det bliver overskrevet inde i functionen :(
// men jeg vil ikke anbefale man anvender $_SERVER['xxxx'] inde i functioner, værdierne skal over som parameter.
$test = besogstaeller_Create($hellestrik, 1);
echo $test;

så kan du teste på det du får retur fra functionen, og dermed se om det gik godt, eller hvis du skal bruge dens id til noget andet.

jeg retunere altid id på mine create functioner, uanset om jeg skal bruge det eller ej. (så har jeg det)
Avatar billede Morten Professor
10. november 2015 - 09:42 #9
Tak for svaret.
Ja det vil bare ødelægge min update, og det har jeg ikke løst til, så vil jeg hellere lave noget forsig.
Er jo så glad for det der virker, som du har hjulpen rigtig meget til at få det til at virke. og det virker som det skal :o)

Er glad for den funktion du har lavet så vil altid bruge det.
Da det er overskueligt.

Med venlig hilsen
Morten
Avatar billede olsensweb.dk Ekspert
10. november 2015 - 10:17 #10
ville ellers have set sådan ud
   
// http://stackoverflow.com/questions/18293772/how-do-you-update-a-mysqli-field-using-prepared-statement-if-you-are-adding-one
function besogstaeller_Update($conn, $ip, $url="") {
    $query = "UPDATE `tbl_besogstaeller` SET `hits`=`hits`+1, url = ? WHERE `ip`=?";
    $execute = $conn->prepare($query);
    if ($execute) {
        $execute->bind_param('ss', $url, $ip);
        $execute->execute();
    } else {
        echo 'We\'re having trouble connecting to the database at the moment, try again later!';
    }
}

$ip = $_SERVER['REMOTE_ADDR'];
$url = $_SERVER['REQUEST_URI'];
besogstaeller_Update($hellestrik, $ip, $url);


$url="" => er default parameter, hvis du ikke angiver parameteren træder default værdien i kræft
   
besogstaeller_Update($hellestrik, $ip); // her vil den indsætte en tom string på urls plads
besogstaeller_Update($hellestrik, $ip, $url); // her indsættes den url du kommer med som parameter


men ja du kan kun se den sidste uri brugeren har besøgt på siden, og det er nok ikke helt det du vil.
Avatar billede Morten Professor
10. november 2015 - 14:47 #11
Ahh sådan skal det se ud, tak for det, det giver mig nogle gode ideer.
Det vil jeg helt sikkert bruge i andre ting, der skal laves.
Jeg nyder at lave små funktioner, det er sjovt men også meget lærerigt.
Især når man kan stille spørgsmål, få den gode hjælp.
Det gør at man kan kaste sig ud i det, og vide man ikke er helt alene om at lære.

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