Avatar billede tobrukDk Novice
20. december 2012 - 16:12 Der er 15 kommentarer og
1 løsning

kommentar system & dato/tid problemer

hej


det er sådan at jeg har lavet et system hvor den ligger ind i databasen og bliver frem vidste på siden


Hvis vi siger at jeg gå ind på google.dk/kommentar/1/ så skriver jeg  en kommentar til artikle eller lign. så klik jeg på send og der efter send den mig tilbage til google.dk hvordan gøre jeg sådan, at den bare opdater og ligger det ind i databasen og send mig hen til google.dk/kommentar/1/. det er lige meget om det er 1 2 eller 5 eller 9 den skal bare blive sendt tilbage hvor man har skrevet kommentar henne.

altså med andre ord at den opdater samme side og ligger det derind. så man ikke skal hele vejen uden om f.eks tilbage igen til at finde google.dk/kommentar/1/ igen eller ligne...



min kode ser sådan her ud;


<?php
if($_SESSION["logged_in"] == true && $_SESSION["rank"] == 2 or $_SESSION["rank"] == 1)
{
if(isset($_POST["kommentar"]))
{
    $kt = $mebe->kt_inset();
}
?>
<h4>Kommentar</h4>
<form action="#" method="post">
<textarea id="elm1" name="tekst" rows="10" cols="10" style="width: 100%"></textarea>
<input type="submit" name="kommentar" value="Kommentar">
</form>
<?php
}
?>


i min php-function har jeg gjort sådan her;


function kt_inset()
    {
        if ($stmt = $this->mysqli->prepare("INSERT INTO `kt` (`bruger_id`, `tekst`, `tid`) VALUES (?, ?, ?)")) {

            /* Bind parametre */
            $stmt->bind_param('isi', $bruger_id, $tekst, $tid);

            /* Sæt værdier på parametrene */
            $bruger_id = $_SESSION["id"];
            $tekst = $_POST['tekst'];
            $tid = date();

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

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

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


Ved godt at jeg har skrevet godkend det var mere så i/du vidste hvor meget / langt jeg var i min kode sådan at du ikke tænke ansigt. :P

Det er sådan at jeg kan fint ligge det ind i databasen men problemet er:


- Dato/tid bliver kun sådan her: 0000-00-00 00:00:00 kun godt tænke mig at få den til at gøre det rigtigt.

- Det som jeg godt tænke at den opdater kommentar men man ikke selv skulle finde siden som jeg også beskrive lang op i det her spørgsmål til jer.



Du er velkommen til at spørger hvis der er mere du gerne vil vide!!
Avatar billede michael_stim Ekspert
20. december 2012 - 16:50 #1
Datoen kan nok klares med date("Y-m-d H:i:s") og hvis jeg forstår det ret, så skal du have noget header på i stedet for "godkendt".
header('location: http://dinadresse.dk/insert.php').
Avatar billede tobrukDk Novice
20. december 2012 - 17:20 #2
#1 omkring header tror jeg ikke bare er nok da den skal sådan gå tilbage den side som man skrive kommentar i :)

som jeg også beskrive her:

Hvis vi siger at jeg gå ind på google.dk/kommentar/1/ så skriver jeg  en kommentar til artikle eller lign. så klik jeg på send og der efter send den mig tilbage til google.dk hvordan gøre jeg sådan, at den bare opdater og ligger det ind i databasen og send mig hen til google.dk/kommentar/1/. det er lige meget om det er 1 2 eller 5 eller 9 den skal bare blive sendt tilbage hvor man har skrevet kommentar henne.

Dato virker ikke på nogle måde overhovedet!...
Avatar billede olebole Juniormester
20. december 2012 - 18:55 #3
<ole>

Sæt feltets datatype til TIMESTAMP i databasen. Sæt også dets default værdi til CURRENT_TIMESTAMP. Så vil det automatisk indsætte tiden:


function kt_inset()
    {
        if ($stmt = $this->mysqli->prepare("INSERT INTO `kt` (`bruger_id`, `tekst`) VALUES (?, ?)")) {

            /* Bind parametre */
            $stmt->bind_param('is', $bruger_id, $tekst);

            /* Sæt værdier på parametrene */
            $bruger_id = $_SESSION["id"];
            $tekst = $_POST['tekst'];
            $tid = date();

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

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

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

/mvh
</bole>
Avatar billede michael_stim Ekspert
20. december 2012 - 19:16 #4
Jeg forstår stadig ikke hvad du mener? Lige meget hvad, så skal du bruge header hvis du vil sendes til en anden side. Hvad der står i headeren er en anden sag. Kig evt. på $_SERVER.
Avatar billede tobrukDk Novice
20. december 2012 - 20:36 #5
#3 Olebole

kan jeg ikke bare gøre sådan her;



CREATE TABLE IF NOT EXISTS `kt` (
  `id_k` int(11) NOT NULL AUTO_INCREMENT,
  `bruger_id` int(11) NOT NULL,
  `tekst` longtext NOT NULL,
  `tid` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY (`id_k`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;

Jeg har dog ikke ret databasen om til dansk endnu :) men kommer snart :)



function kt_inset()
    {
        if ($stmt = $this->mysqli->prepare("INSERT INTO `kt` (`bruger_id`, `tekst`) VALUES (?, ?)")) {

            /* Bind parametre */
            $stmt->bind_param('iss', $bruger_id, $tekst, $tid);

            /* Sæt værdier på parametrene */
            $bruger_id = $_SESSION["id"];
            $tekst = $_POST['tekst'];

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

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

        } else {
            /* Der er opstået en fejl */
            echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
        }   
    }
Avatar billede tobrukDk Novice
20. december 2012 - 20:42 #6
#4 ja det er rigtigt


men hvordan gøre jeg sådan at så at den har header(' blabla.dk/');

så efter / skal den have det tal som man er sidste gået ind på via $_get eller ligne.. sådan at den bare opdater siden.. hmm

header('location: /artikler/')

altså sådan her artikler/1/ der hvor talet er skal man blive sendt tilbage til.

det skal siges at jeg sende ikke over til nogen anden file eller ligne. jeg er på samme file..
Avatar billede olebole Juniormester
20. december 2012 - 21:10 #7
I formen lader du PHP skriver URL'en til siden i et hidden felt:

<h4>Kommentar</h4>
<form action="#" method="post">
<input type="hidden" name="returnTo" value="<?php echo $_SERVER['PHP_SELF']">
<textarea id="elm1" name="tekst" rows="10" cols="10" style="width: 100%"></textarea>
<input type="submit" name="kommentar" value="Kommentar">
</form>

Så kan du i koden, der indsætter, skrive:

header('Location:' $_POST['returnTo']);

Så bliver brugeren smidt tilbage til siden med formen. Er det det, du mener?
Avatar billede olebole Juniormester
20. december 2012 - 21:11 #8
Ups  =)

header('Location:' . $_POST['returnTo']);
Avatar billede tobrukDk Novice
20. december 2012 - 21:32 #9
Iorden olebole

Kan jeg ikke bare gøre sådan her:

header('location: /artikler/$_POST['returnTo']');
Avatar billede olebole Juniormester
20. december 2012 - 21:39 #10
Det, tror jeg ikke, vil virke. Prøv at se, hvad der står i variablen ved at skrive:

echo $_POST['returnTo'];

- i stedet for header'en.
Avatar billede tobrukDk Novice
20. december 2012 - 21:44 #11
der stå /artikler_indhold.php

men jeg har omskrevet den til /artikler/
Avatar billede olebole Juniormester
20. december 2012 - 22:31 #12
Så virker det nu?
Avatar billede tobrukDk Novice
20. december 2012 - 22:50 #13
jeps


den skal bare sig artikler i stede for :)
Avatar billede tobrukDk Novice
20. december 2012 - 23:52 #14
Olebole jeg fik klart og jeg lukker selv så da jeg ved at du ikke gider have noget som helst!..
Avatar billede tobrukDk Novice
20. december 2012 - 23:54 #15
Nej jeg var lidt for hurtigt olebole.

den gider ikke gøre det med header men den gider godt ude skrive i echo
Avatar billede tobrukDk Novice
21. december 2012 - 12:57 #16
så nu virker det :


function kt_inset()
    {
        if ($stmt = $this->mysqli->prepare("INSERT INTO `kt` (`bruger_id`, `tekst`) VALUES (?, ?)")) {

            /* Bind parametre */
            $stmt->bind_param('is', $bruger_id, $tekst);

            /* Sæt værdier på parametrene */
            $bruger_id = $_SESSION["id"];
            $tekst = $_POST['tekst'];

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

            /* Luk statement */
            $stmt->close();
           
           
            header("Location: /artikler/" . $_GET["id"] . "/");

        } else {
            /* Der er opstået en fejl */
            echo 'Der opstod en fejl i erklæringen: ' . $mysqli->error;
        }   
    }
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