probleempje met datum

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niek Kasius

Niek Kasius

25/08/2010 06:32:32
Quote Anchor link
Ik heb ben aan het proberen om van gastenboek script(niet zelf geschreven) een forum te maken! maar krijg de datum niet goed, wel als ik Type: varchar gebruik voor de datum, maar ik heb gelezen dat dat niet goed is.
Nu ben ik al paar dagen aan het zoeken geweest naar een oplossing, maar ik kan niks vinden dat werkt.
Ik heb het al geprorbeerd met NOW(), Maar als ik eerlijk moet zijn ik weet eigenlijk niks van Mysql.
hieronder posten.php.


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
<?php
$datum
= date("d-m-Y H:i");

if($_POST[Submit]){
    if($_POST[titel] != "" AND $_POST[naam] != "" AND $_POST[bericht] != ""){
    
   mysql_query("INSERT INTO forum (titel, naam, mail, foto, bericht, datum, id )
VALUES ('$_POST[titel]', '$_POST[naam]', '$_POST[mail]', '$_POST[foto]', '$_POST[bericht]', '$datum', '$ip')"
);
        echo"<h4> Je bericht is succesvol toegevoegd klik <a href=\"forum.php\">Hier</a> om terug te gaan.</h4>";
    }

    else{
        echo"<H1>Error!!!!!</H!><H4>Je moet wel alle velden invullen.</H4?";
    }
}
else
{

echo '<form name="form" method="post" action="">
<table bgcolor="#A6BED7" width="100%" border="1" bordercolor="#0000A0" cellpadding="1" cellspacing="0">
  <tr>
    <td align="left">Titel:</td><td align="left"><input type="text" size="35" name="titel"></td>
  </tr>
  <tr>
    <td align="left">Naam:</td><td align="left"><input type="text" size="35" name="naam"></td>  
  </tr>
  <tr>
    <td align="left">Email:</td><td align="left"><input type="text" size="35" name="mail"><font size="2"> (niet verpicht)</font></td>  
  </tr>
  <tr>
    <td align="left">Foto:</td><td align="left"><input name="foto" type="text" value="[img]http://www. [/img]" size="35"><font size="2"> (niet verpicht)</font></td>
  </tr>
  <tr>
    <td colspan="2" align="left">Bericht:<br><textarea rows="10" cols="71" name="bericht"></textarea></td>
  </tr>
  <tr>
    <td colspan="2" align="left">'
; klik(); smileys (); echo'</td>
    </td>
  </tr>
  <tr>
    <td colspan="2" align="left">'
; klik(); buttons (); echo '<input type="submit" name="Submit" value="Posten"> <input type="reset" value="Wissen"></td>
  </tr>
</table>
</form><a href="forum.php"><b><font size="2">Terug</font></b></a>'
;
}

?>
 
PHP hulp

PHP hulp

03/12/2020 02:20:35
 
- Ricardo -

- Ricardo -

25/08/2010 07:01:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
mysql_query("INSERT INTO forum (titel, naam, mail, foto, bericht, datum, id )
VALUES ('$_POST[titel]', '$_POST[naam]', '$_POST[mail]', '$_POST[foto]', '$_POST[bericht]', NOW(), '$ip')");


Tevens moet je alle userinput natuurlijk beveiligen met minstens mysql_real_escape_string. Doe dus om alle dingen die de gebruikers invullen zoals titel, naam e.d. de mysql_real_escape_string() functie. Je query ziet er dan zo uit :

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
mysql_query("INSERT INTO forum (titel, naam, mail, foto, bericht, datum, id )
VALUES ('".mysql_real_escape_string($_POST[titel])."', '".mysql_real_escape_string($_POST[naam])."', '".mysql_real_escape_string($_POST[mail])."', '".mysql_real_escape_string($_POST[foto])."', '".mysql_real_escape_string($_POST[bericht])."'', NOW(), '".$ip."')");
 
Obelix Idefix

Obelix Idefix

25/08/2010 08:29:17
Quote Anchor link
In je tabel; wat voor type is het veld datum?
 
Joren de Wit

Joren de Wit

25/08/2010 08:37:00
Quote Anchor link
In je database gebruik je voor een datum een veld van het type DATE en voor een datum/tijd stempel DATETIME. Pas dan kun je in je INSERT query gebruik maken van NOW() om de huidige datum/tijdstip in te voeren.

Als je geen NOW() gebruikt, zorg er dan wel voor dat je datum/tijd stempel in het formaat yyyy-mm-dd hh:mm:ss staat! Dat is het enige formaat waar de database mee kan werken. Mocht je op je site een ander formaat willen weergeven, dan kun je dat bij het uitlezen met behulp van DATE_FORMAT() in je query voor elkaar krijgen.
 
Niek Kasius

Niek Kasius

25/08/2010 13:12:48
Quote Anchor link
Ricar do!
Dat werkt niet, nu word er helemaal niet gepost

In de table heb ik al DATE , DATETIME en zelf INT heb geprobeerd maar dat werkt gewoon niet
INT omdat ik dat ergens in een script hier op de site gezien had, dus dacht ik probeer het gewoon uit.
 
- SanThe -

- SanThe -

25/08/2010 13:20:43
Quote Anchor link
Maak het veld een DATETIME, gebruik NOW() bij de INSERT en vertel dan eens wat er niet zou werken.
 
Niek Kasius

Niek Kasius

25/08/2010 13:29:04
Quote Anchor link
heb ik gedaan en er komt ook de melding dat het bericht is toegevoegd, maar er staat niks in de datebase

CREATE TABLE `forum` (
`id` int(11) NOT NULL auto_increment,
`titel` varchar(100) NOT NULL default '',
`naam` varchar(10) NOT NULL default '',
`mail` varchar(10) NOT NULL default '',
`foto` varchar(100) NOT NULL default '',
`bericht` text NOT NULL,
`datum` datetime NOT NULL default '0000-00-00 00:00:00',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;
Gewijzigd op 25/08/2010 13:31:23 door Niek Kasius
 
Joren de Wit

Joren de Wit

25/08/2010 13:32:32
Quote Anchor link
En waar controleer je of je query wel gelukt is? En of er wel rijen toegevoegd zijn? Zolang je dat niet doet, kun je nooit met zekerheid zeggen dat er wel iets toegevoegd is...

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
$sql
= "INSERT ...";
$result = mysql_query($sql);

if($result == false) {
  trigger_error(mysql_error().'<br />In query: '.$sql);
}

elseif(mysql_affected_rows() == 0) {
  trigger_error('Geen fout in query, maar ook geen rijen toegevoegd: '.$sql);
}

else {
  // Succesvol toegevoegd
}
?>
 
Niek Kasius

Niek Kasius

26/08/2010 09:53:21
Quote Anchor link
SanThe!
Ik heb nu dit, en nu word de datum wel geplaatst als 2010-08-26 09:19:26
Maar hoe krijg ik die nou naar: 26-08-2010
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$datum = date('d-m-Y H:i:s');

if($_POST[Submit]){
    if($_POST[titel] != "" AND $_POST[naam] != "" AND $_POST[bericht] != ""){
    
mysql_query("INSERT INTO forum (titel, naam, mail, foto, bericht, datum, id )
VALUES ('$_POST[titel]', '$_POST[naam]', '$_POST[mail]', '$_POST[foto]', '$_POST[bericht]', NOW(), '$ip')");



Blance!
ik neem aan dat je het zo bedoeld

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
$sql = "INSERT titel, naam, mail, foto, bericht, datum, id";
$result = mysql_query($sql);

if($result == false) {
  trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0) {
  trigger_error('Geen fout in query, maar ook geen rijen toegevoegd: '.$sql);
}
else {
  // Succesvol toegevoegd
}


Dan krijg ik deze melding:

Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' naam, mail, foto, bericht, datum, id' at line 1
In query: INSERT titel, naam, mail, foto, bericht, datum, id in C:\wamp\www\forum\posten.php on line 28

Dan word het bericht toch wel geplaatst,
 
- SanThe -

- SanThe -

26/08/2010 10:06:22
Quote Anchor link
Hier ben je natuurlijk de helft vergeten.
$sql = "INSERT titel, naam, mail, foto, bericht, datum, id"

En hier ben je lek.
mysql_query("INSERT INTO forum (titel, naam, mail, foto, bericht, datum, id )
VALUES ('$_POST[titel]', '$_POST[naam]', '$_POST[mail]', '$_POST[foto]', '$_POST[bericht]', NOW(), '$ip')");

Nooit gegevens van een client direct in de database zetten. Gebruik altijd mysql_real_escape_string().

Toevoeging op 26/08/2010 10:07:14:

En dit is geen datum maar tekst.
$datum = date('d-m-Y H:i:s');
 
Niek Kasius

Niek Kasius

26/08/2010 10:48:58
Quote Anchor link
met die mysql_real_escape_string plaatst die helemaal niks,nada,nothing.
Dus als je niks in de database zet kun je er ook niks uithalen. wat heeft het dan voor nut?
En dit is geen datum maar tekst?
$datum is toch een variable en met varchar werk het toch ook.
ach laat ook maar zitten ik krijg het toch niet voor mekaar.
Ik laat gewoon zo als ik het nu heb met die datum
 
Joren de Wit

Joren de Wit

26/08/2010 11:23:02
Quote Anchor link
Wat betreft de datum, zie het tweede deel van mijn reactie van 25/08/2010 08:37:00.

De functie mysql_real_escape_string() gebruik je ook niet om data in je database te zetten, maar juist om de data die je er in wilt zetten te beveiligen. Dus:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
$sql
= "
  INSERT INTO forum (
    titel,
    naam,
    mail,
    foto,
    bericht,
    datum,
    id
  )
  VALUES (
    '"
.mysql_real_escape_string($_POST['titel'])."',
    '"
.mysql_real_escape_string($_POST['naam'])."',
    '$_POST[mail]',
    '$_POST[foto]',
    '$_POST[bericht]',
     NOW(),
    '$ip'
  )
"
;
?>

De eerste heb ik voor gedaan, nu mag jij het zelf verder toepassen op de andere POST variabelen. Ook zul je echt moeten zorgen dat het veld 'datum' van het type DATE of DATETIME is (zie eerdere reactie), anders zal NOW() echt niet werken...
Gewijzigd op 26/08/2010 11:23:32 door Joren de Wit
 
- Raoul -

- Raoul -

26/08/2010 13:24:26
Quote Anchor link
En zover ik weet moeten er ook een " of een ' in een array of variable :S
 
Niek Kasius

Niek Kasius

26/08/2010 16:03:21
Quote Anchor link
Blance
oke dat werkt nu zo, maar ik heb die oude mysql_query moeten verwijderen heb ik gemerkt want anders werd het bericht 2 keer geplaatst.
moet ik dat in wijzigen.php ook toepassen? want daarin zit ook een form in.
query = "UPDATE forum SET
 
- SanThe -

- SanThe -

26/08/2010 16:17:01
Quote Anchor link
Uiteraard. Dat doe je bij alle input van de client.
 
Niek Kasius

Niek Kasius

27/08/2010 04:34:44
Quote Anchor link
Ik krijg hiet niet voor mekaar ik snap er de bal van.
Er staat ook een update.php bij, en heb die voor de zekerheid ook maar voorzien van een "NOW()"
Maar ik zie nergens een verwijzing er naar toe in de andere scripts


Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
//update.php
<?php
include("../includes/config.php");
mysql_query("UPDATE forum SET titel = '"$titel"', naam = '"$naam"', mail = '"$mail"', bericht = '"$bericht"', foto = '"$foto"', NOW()"' WHERE 'id'=" . $_GET['id'] .) or die(mysql_error());
?>


En dit staat in de edit.php

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
$query = "UPDATE forum SET titel='".$_POST['titel']."', naam='".$_POST['naam']."', mail='".$_POST['mail']."', foto='".$_POST['foto']."', bericht='".$_POST['bericht']."', wijzig='".$_POST['wijzig']."' WHERE id='".$_GET['id']."'";
$mysql_query($query) or die(mysql_error());


ik heb al verschillende dingen uit geprobeerd, enkel quotes, dubbele quotes, punten erbij of eruit Maar ik kijg het niet goed, de ene naar de andere fout melding zoals: onverwachte =teken of een onverwachte "" of you have an error in your syntax.
Dus heb ik maar een handmatige datum wijziging erin gemaakt.
Dit is wat ik al geprobeerd heb:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
$query = "UPDATE forum SET '".mysql_real_escape_string titel='".$_POST['titel']."',
                           '".mysql_real_escape_string."''".naam='".$_POST['naam']."',
                           '".mysql_real_escape_string."','".mail='".$_POST['mail']."',
                           '".mysql_real_escape_string'".foto='".$_POST['foto']."',  
                           '".mysql_real_escape_string"''".bericht='".$_POST['bericht']."',
                           '".NOW()."'
                           WHERE id='".$_GET['id']."'";
 
- SanThe -

- SanThe -

27/08/2010 10:51:49
Quote Anchor link
Bouw een nette foutafhandeling in. Zie o.a. www.phptuts.nl.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$sql
= "UPDATE forum SET titel = '"$titel"',  ...............";
// Waar zijn de punten om de strings aan elkaar te verbinden?
$sql = "UPDATE forum SET titel = '" . $titel . "',  ...............";

$sql = "UPDATE forum SET '".mysql_real_escape_string titel='".$_POST['titel']."', ....";
// Waar zijn de () van de function?
// En de function alleen om de data zetten.
$sql = "
UPDATE forum SET titel = '" . mysql_real_escape_string($_POST['titel']) . "', ....";
?>
 
Niek Kasius

Niek Kasius

28/08/2010 03:03:23
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$sql = "UPDATE forum SET titel = '" . mysql_real_escape_string($_POST['titel']) . "',
                     naam = '" . mysql_real_escape_string($_POST['naam']) . "',
                     mail = '" . mysql_real_escape_string($_POST['mail']) . "',
                     foto = '" . mysql_real_escape_string($_POST['foto']) . "',
                     bericht = '" . mysql_real_escape_string($_POST['bericht']) . "',
                     NOW()
                     WHERE id='".$_GET['id']."'";


$result = mysql_query($sql);

if($result == false) {
  trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0) {
  trigger_error('Geen fout in query, maar ook geen rijen toegevoegd: '.$sql);
}

mysql_query($query) or die(mysql_error());


Geeft dit:

Notice: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'NOW() WHERE

id='3'' at line 6
In query: UPDATE forum SET titel = 'help ik word gek', naam = 'klaas', mail = 'niek56k@hotmail.com', foto = '', bericht = ':8) :-( 8-] :,( :-} :)) ;-) :},

:-) %-/ \r\ntekst tekst tekst \r\n
Quote:
tekst
\r\n
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
tekst
', NOW() WHERE id='3' in C:\wamp\www\forum\admin\edit.php

on line 31
Query was empty

En '" . NOW() ."'
Geeft: Fatal error: Call to undefined function NOW() in C:\wamp\www\forum\admin\edit.php on line 25

En '" . NOW()
Geeft: Parse error: syntax error, unexpected T_STRING in C:\wamp\www\forum\admin\edit.php on line 26

En als ik NOW() weg laat krijg ik: Query was empty

ik snap het niet die veranderingen in "post.php en wijzig.php" geven geen meldingen.

Quote:
Waar zijn de punten om de strings aan elkaar te verbinden?
Waar zijn de () van de function?
En de function alleen om de data zetten.


Dat weet ik niet het stond er zo in toen ik het script had gedownload.
En vraag me niet waar ik het vandaan gehaald heb want ook dat weet ik niet meer, Het staat ondertussen al een jaar of vier op mijn pc zonder dat ik er lang

gebruik van heb gemaakt, Want er zit geen spam beveiliging op, En omdat de een of andere grapjas er steeds maar opnieuw viagra en sex reclame in plaatste,

Heb ik het maar van de site verwijderd en een ander gastenboek op gezet.

Alleen moet die een keer opnieuw installeren, Omdat ik niet meer in de admin kan komen.
 
Arjan -

Arjan -

28/08/2010 10:44:37
Quote Anchor link
Niek Kasius op 28/08/2010 03:03:23:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$sql = "UPDATE forum SET titel = '" . mysql_real_escape_string($_POST['titel']) . "',
                     naam = '" . mysql_real_escape_string($_POST['naam']) . "',
                     mail = '" . mysql_real_escape_string($_POST['mail']) . "',
                     foto = '" . mysql_real_escape_string($_POST['foto']) . "',
                     bericht = '" . mysql_real_escape_string($_POST['bericht']) . "',
                     NOW()
                     WHERE id='".$_GET['id']."'";


$result = mysql_query($sql);

if($result == false) {
  trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0) {
  trigger_error('Geen fout in query, maar ook geen rijen toegevoegd: '.$sql);
}

mysql_query($query) or die(mysql_error());



Je moet wel op regel 6 van bovenstaande code aangeven in welk veld de NOW() (huidige datum en tijd) moet komen. Dus iets als: datum = NOW()
Gewijzigd op 28/08/2010 10:45:28 door Arjan -
 
Niek Kasius

Niek Kasius

30/08/2010 19:16:29
Quote Anchor link
Zo ik heb het voor mekaar!
Iedereen bedankt voor de adviesen

ik heb in wijzig.php nu dit staan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
$sql = "UPDATE forum SET  titel = '".mysql_real_escape_string($_POST['titel'])."',  naam = '".mysql_real_escape_string($_POST['naam'])."', mail = '".mysql_real_escape_string($_POST['mail'])."', foto = '".mysql_real_escape_string($_POST['foto'])."', beicht = '".mysql_real_escape_string($_POST['bericht'])."', wijzig = NOW()  WHERE id='".$_GET['id']."'";

$result = mysql_query($sql);

if($result == false) {
  trigger_error(mysql_error().'<br />In query: '.$sql);
}
elseif(mysql_affected_rows() == 0) {
  trigger_error('Geen fout in query, maar ook geen rijen toegevoegd: '.$sql);
}

mysql_query($query) or die(mysql_error());


En in edit.php dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
$query = "UPDATE forum SET  titel = '".mysql_real_escape_string($_POST['titel'])."', naam = '".mysql_real_escape_string($_POST['naam'])."', mail = '".mysql_real_escape_string($_POST['mail'])."', foto = '".mysql_real_escape_string($_POST['foto'])."',  bericht = '".mysql_real_escape_string($_POST
['bericht'])."', wijzig = NOW()  WHERE id='".$_GET['id']."'";

mysql_query($query) or die(mysql_error());


En nu werkt het perfect.
 
Milo S

Milo S

30/08/2010 19:32:35
Quote Anchor link
Als je nu eerst een begint met het netjes opbouwen van een script & query, met foutafhandeling?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
# Query nummer 1
$qry = "";

# Query check
if( $sql = mysql_query( $qry ) )
{

    if( mysql_num_rows( $sql ) > 0 )
    {

        # Resultaten weergeven
        while( $rec = mysql_fetch_assoc( $sql ) )
        {

            # Hier je results aanroepen met $rec[''];    
        }
    }

    else
    {
        # Geen resultaten
        echo 'Er zijn geen resultaten gevonden.';
    }
}

else
{
    # Fout in query nummer 1
    echo 'Er is een fout opgetreden in de query [1].';    
}

?>


en een query schrijf je netjes zo:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
<?php
$qry
= "SELECT
            regel1,
            regel2,
            regel3
        FROM
            tabel
        ORDER BY
            tabel2
        ASC"
;
?>


of een insert query

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?php
$qry
= "INSERT INTO
            tabel
                (
                regel1,
                regel2,
                regel3
                )
        VALUES
            (
             '"
.mysql_real_escape_string( $_POST['regel1'] )."',
             '"
.mysql_real_escape_string( $_POST['regel2'] )."',
             '"
.mysql_real_escape_string( $_POST['regel3'] )."'
            )"
;
?>


of een update query

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$qry
= "UPDATE
            tabel
        SET
            regel1 = '"
.mysql_real_escape_string( $_POST['regel1'] )."',
            regel2 = '"
.mysql_real_escape_string( $_POST['regel2'] )."',
            regel3 = '"
.mysql_real_escape_string( $_POST['regel3'] )."'
        WHERE
            regel2 = '"
.mysql_real_escape_string( $_POST['regel2'] )."'";
?>


Veel succes!
Gewijzigd op 30/08/2010 19:42:55 door Milo S
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.