slaat gegevens niet op in databank

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Jos Vermassen

Jos Vermassen

31/10/2012 12:29:52
Quote Anchor link
Hallo,

Ik ben bezig met het maken van een nieuwsscriptje, ik ben begonnen van een bestaand script dat afbeeldingen upload en ze dan in een databank zet. Dit werkt, maar als ik andere velden (titel, bericht) wil toevoegen, wordt de afbeelding nog wel opgeslagen maar de andere velden niet. Iemand enig idee wat ik fout doe?

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
<?php
include"includes/connection.php";

if($_POST ['submit'])
{

    $datum = $_POST['datum'];
    $titel = $_POST['titel'];
    $bericht = $_POST['bericht'];
    $file = $_FILES['file'];
    $name = $file['name'];
    $type = $file['type'];
    $size = $file['size'];
    $tmppath = $file['tmp_name'];
    if($name!="")
    {

        if(move_uploaded_file ($tmppath, 'image/'.$name))
        {

            $query = "INSERT INTO image (datum, titel,bericht,photo) VALUES('".$datum."','".$titel."','".$bericht."','".$name."')";
            
            //$query = "INSERT INTO image (titel,bericht,photo) VALUES('".$titel."','".$bericht."','".$name."')";
            //$query = "INSERT INTO image SET photo='$name'";

            mysql_query($query) or die ('could not be updated:'.mysql_error());
            header("Refresh: 1; URL=http://www.yannickluijten.be/luc/image.php");
            echo "Your image upload successfully !!";
        }
    }
}

?>

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<form name="form" action="" method="post" enctype="multipart/form-data">
    <input type="hidden" value="<?=date('d.m.Y')?>" name="datum">
    Titel<input type="text" name"titel"><br>
    Bericht<input type="text" name"bericht"><br>
    Photo<input type="file" name="file"><br>
    <input type="submit" name="submit" value="submit">
</form>
Gewijzigd op 01/11/2012 00:47:18 door Jos Vermassen
 
PHP hulp

PHP hulp

26/12/2024 02:35:00
 
TJVB tvb

TJVB tvb

31/10/2012 12:34:16
Quote Anchor link
Welke error krijg je?
Verder moet je de query beveiligen tegen SQL injection
 
Jos Vermassen

Jos Vermassen

31/10/2012 12:35:05
Quote Anchor link
TJVB tvb op 31/10/2012 12:34:16:
Welke error krijg je?
Verder moet je de query beveiligen tegen SQL injection


Ik krijg geen error, de image wordt gewoon getoond op de pagina. maar het titel- en berichtveld blijft leeg
 
- SanThe -

- SanThe -

31/10/2012 12:39:49
Quote Anchor link
Jos Vermassen op 31/10/2012 12:29:52:
afbeeldingen upload en ze dan in een databank zet. Dit werkt, maar als ik andere velden (titel, bericht) wil toevoegen, wordt de afbeelding nog wel opgeslagen maar de andere velden niet.


Eerst alleen een afbeelding en later titel en bericht toevoegen.
Moet je dan niet updaten in plaats van een insert.
Gewijzigd op 31/10/2012 12:42:56 door - SanThe -
 
Jos Vermassen

Jos Vermassen

31/10/2012 12:56:01
Quote Anchor link
Dus ik moet een 2e query maken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query2
= "UPDATE image SET datum='$datum' titel='$titel' bericht='$bericht' WHERE photo='$name'";
?>
Gewijzigd op 31/10/2012 13:52:58 door Jos Vermassen
 
- Ariën  -
Beheerder

- Ariën -

31/10/2012 13:01:52
Quote Anchor link
Als ik wat tips mag geven:
- Gebruik geen if($_POST ['submit']), maar if($_SERVER['REQUEST_METHOD']=="POST") {
Je wilt immers weten of er een POST-request is gedaan, en niet of een formulier-element een waarde heeft.
- Ga niet onnodig variabelen kopieeren op lijn 6 t/m 9. Je hebt al de beschikking over deze $_POST en $_FILES variabelen, dus gebruik die dan ook direct
- Controleer in je if-statement van move_uploaded_file() ook of het niet gelukt is, dus gewoon een else er bij plaatsen met een logische foutmelding.
- Beveilig je $_POST, $_GET en $_COOKIE-variabelen in je query altijd met mysql_real_escape_string(), zo houd je SQL-injection hackers buiten de deur.
- Plaats je variabelen altijd buiten quotes.
- Gebruik bij voorkeur geen die() als een query niet gelukt is, maar gebruik nette foutafhandeling met een if-statement om je query heen. die() betekent 'doden', en als er een script fout loopt moet dit netjes opgelost worden, i.p.v. dat het afsterft.
Gewijzigd op 31/10/2012 13:10:25 door - Ariën -
 
- SanThe -

- SanThe -

31/10/2012 13:04:53
Quote Anchor link
- Aar - op 31/10/2012 13:01:52:
... maar if($_SERVER['REQUEST_METHOD']="POST") {


Maar dan wel met (dubbel) == in plaats van =.
 
- Ariën  -
Beheerder

- Ariën -

31/10/2012 13:10:36
Quote Anchor link
Yups, typo....
Gefixt :)
 
Jos Vermassen

Jos Vermassen

31/10/2012 13:53:13
Quote Anchor link
Dus ik moet een 2e query maken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query2
= "UPDATE image SET datum='$datum' titel='$titel' bericht='$bericht' WHERE photo='$name'";
?>
 
- Ariën  -
Beheerder

- Ariën -

31/10/2012 14:20:49
Quote Anchor link
Klopt...

Kijk ook even naar mijn tips.
 
Jos Vermassen

Jos Vermassen

31/10/2012 14:25:27
Quote Anchor link
- Aar - op 31/10/2012 14:20:49:
Klopt...

Kijk ook even naar mijn tips.


Ja ben ze aan het toepassen, bedankt.
Ben nog wat nieuw met php en ook met sql-injection dus.


Toevoeging op 31/10/2012 14:35:43:

Hij pakt de variabele $titel niet. als ik dit verander naar willekeurige tekst dan werkt dit wel. Hoe komt dit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query2
= "UPDATE image SET titel='$titel' WHERE photo='$name'";
?>
 
- SanThe -

- SanThe -

31/10/2012 14:36:31
Quote Anchor link
Als je een datum in de database wilt zetten kan je dit: date('d.m.Y') dus niet gebruiken. Een datumveld in de database heeft een YYYY-MM-DD format en is van het type DATE of DATETIME. Om de datum/tijd van dit moment in de database te zetten gebruik je NOW() in de query.

Toevoeging op 31/10/2012 14:38:06:

Jos Vermassen op 31/10/2012 14:25:27:
Hij pakt de variabele $titel niet. als ik dit verander naar willekeurige tekst dan werkt dit wel. Hoe komt dit?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query2
= "UPDATE image SET titel='$titel' WHERE photo='$name'";
?>


Echo $query2 eens.
 
Jos Vermassen

Jos Vermassen

31/10/2012 14:41:57
Quote Anchor link
query2: UPDATE image SET titel='' WHERE photo='14.jpg'
 
- SanThe -

- SanThe -

31/10/2012 14:43:28
Quote Anchor link
$titel is dus leeg.

Toevoeging op 31/10/2012 14:44:31:

Zet dit eens bovenin je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>
 
Jos Vermassen

Jos Vermassen

31/10/2012 14:47:00
Quote Anchor link
- SanThe - op 31/10/2012 14:43:28:
$titel is dus leeg.

Toevoeging op 31/10/2012 14:44:31:

Zet dit eens bovenin je script:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
<?php
ini_set('display_errors', 1); // 0 = uit, 1 = aan
error_reporting(E_ALL);

// rest van je script
?>


Dit geeft ie:

Notice: Undefined index: titel in /customers/a/1/e/yannickluijten.be/httpd.www/luc/index.php on line 10 Notice: Undefined index: bericht in /customers/a/1/e/yannickluijten.be/httpd.www/luc/index.php on line 11 Warning: Cannot modify header information - headers already sent by (output started at /customers/a/1/e/yannickluijten.be/httpd.www/luc/index.php:10) in /customers/a/1/e/yannickluijten.be/httpd.www/luc/index.php on line 26 Image uploaded successfully...UPDATE image SET titel='' WHERE photo='25.jpg'
 
- SanThe -

- SanThe -

31/10/2012 14:58:14
Quote Anchor link
Titel<input type="text" name"titel"><br>
Bericht<input type="text" name"bericht"><br>

Bij name ben je = vergeten.

Als het goed is kan je na het versturen gewoon één INSERT doen met alle gegevens tegelijk. Dus niet later nog een UPDATE.
 
Jos Vermassen

Jos Vermassen

31/10/2012 15:02:49
Quote Anchor link
- SanThe - op 31/10/2012 14:58:14:
Titel<input type="text" name"titel"><br>
Bericht<input type="text" name"bericht"><br>

Bij name ben je = vergeten.

Als het goed is kan je na het versturen gewoon één INSERT doen met alle gegevens tegelijk. Dus niet later nog een UPDATE.


zucht... wat een domme fout, bedankt!

Toevoeging op 31/10/2012 15:09:23:

Zijn er eventueel nog verbeteringen die ik kan aanbrengen? Mijn code ziet er nu zo uit:

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
<?php
include"includes/connection.php";

if($_SERVER['REQUEST_METHOD']=="POST")
{

    $datum = mysql_real_escape_string($_POST['datum']);
    $titel = mysql_real_escape_string($_POST['titel']);
    $bericht = mysql_real_escape_string($_POST['bericht']);
    $file = $_FILES['file'];
    $name = $file['name'];
    $type = $file['type'];
    $size = $file['size'];
    $tmppath = $file['tmp_name'];
    
    if($name!="")
    {

        if(move_uploaded_file ($tmppath, 'image/'.$name))
        {

            $query = "INSERT INTO image (datum,titel,bericht,photo) VALUES('".$datum."','".$titel."','".$bericht."','".$name."')";
            
            //$query = "INSERT INTO image (titel,bericht,photo) VALUES('".$titel."','".$bericht."','".$name."')";
            //$query = "INSERT INTO image SET photo='$name'";

            
            $sql = mysql_query($query);
            if ($sql === false)
            {

                echo 'Het bericht kon niet worden toegevoegd';
            }

            else
            {
                header("Refresh: 2; URL=http://www.yannickluijten.be/luc/image.php");
                echo 'Het bericht is toegevoegd';
            }
        }
    }
}

?>




Toevoeging op 31/10/2012 15:10:00:

Jos Vermassen op 31/10/2012 15:02:49:
- SanThe - op 31/10/2012 14:58:14:
Titel<input type="text" name"titel"><br>
Bericht<input type="text" name"bericht"><br>

Bij name ben je = vergeten.

Als het goed is kan je na het versturen gewoon één INSERT doen met alle gegevens tegelijk. Dus niet later nog een UPDATE.


zucht... wat een domme fout, bedankt!

Toevoeging op 31/10/2012 15:09:23:

Zijn er eventueel nog verbeteringen die ik kan aanbrengen? Mijn code ziet er nu zo uit:

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
<?php
include"includes/connection.php";

if($_SERVER['REQUEST_METHOD']=="POST")
{

    $datum = mysql_real_escape_string($_POST['datum']);
    $titel = mysql_real_escape_string($_POST['titel']);
    $bericht = mysql_real_escape_string($_POST['bericht']);
    $file = $_FILES['file'];
    $name = $file['name'];
    $type = $file['type'];
    $size = $file['size'];
    $tmppath = $file['tmp_name'];
    
    if($name!="")
    {

        if(move_uploaded_file ($tmppath, 'image/'.$name))
        {

            $query = "INSERT INTO image (datum,titel,bericht,photo) VALUES('".$datum."','".$titel."','".$bericht."','".$name."')";
            
            $sql = mysql_query($query);
            if ($sql === false)
            {

                echo 'Het bericht kon niet worden toegevoegd';
            }

            else
            {
                header("Refresh: 2; URL=http://www.yannickluijten.be/luc/image.php");
                echo 'Het bericht is toegevoegd';
            }
        }
    }
}

?>






Toevoeging op 31/10/2012 15:12:20:

Jos Vermassen op 31/10/2012 15:02:49:
- SanThe - op 31/10/2012 14:58:14:
Titel<input type="text" name"titel"><br>
Bericht<input type="text" name"bericht"><br>

Bij name ben je = vergeten.

Als het goed is kan je na het versturen gewoon één INSERT doen met alle gegevens tegelijk. Dus niet later nog een UPDATE.


zucht... wat een domme fout, bedankt!

Toevoeging op 31/10/2012 15:09:23:

Zijn er eventueel nog verbeteringen die ik kan aanbrengen? Mijn code ziet er nu zo uit:

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
<?php
include"includes/connection.php";

if($_SERVER['REQUEST_METHOD']=="POST")
{

    $datum = mysql_real_escape_string($_POST['datum']);
    $titel = mysql_real_escape_string($_POST['titel']);
    $bericht = mysql_real_escape_string($_POST['bericht']);
    $file = $_FILES['file'];
    $name = $file['name'];
    $type = $file['type'];
    $size = $file['size'];
    $tmppath = $file['tmp_name'];
    
    if($name!="")
    {

        if(move_uploaded_file ($tmppath, 'image/'.$name))
        {

            $query = "INSERT INTO image (datum,titel,bericht,photo) VALUES('".$datum."','".$titel."','".$bericht."','".$name."')";
            
            //$query = "INSERT INTO image (titel,bericht,photo) VALUES('".$titel."','".$bericht."','".$name."')";
            //$query = "INSERT INTO image SET photo='$name'";

            
            $sql = mysql_query($query);
            if ($sql === false)
            {

                echo 'Het bericht kon niet worden toegevoegd';
            }

            else
            {
                header("Refresh: 2; URL=http://www.yannickluijten.be/luc/image.php");
                echo 'Het bericht is toegevoegd';
            }
        }
    }
}

?>

 
LEDfan nvt

LEDfan nvt

31/10/2012 15:16:05
Quote Anchor link
Je kan je code nog wat verbeteren:
* Variable dupliceren heeft niet veel nut. (integendeel) (Is hierboven al eens gezegd)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php $datum = $mysql_real_escape_string($_POST['datum']);
    $titel = mysql_real_escape_string($_POST['titel']);
    $bericht = mysql_real_escape_string($_POST['bericht']);
    $file = $_FILES['file'];
    $name = $file['name'];
    $type = $file['type'];
    $size = $file['size'];
    $tmppath = $file['tmp_name'];
?>

Dit kan gewoon weg. Je query moet je dan wel aanpassen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$query
= "INSERT INTO image (datum,titel,bericht,photo)
VALUES('"
.$mysql_real_escape_string($_POST['datum']."','".mysql_real_escape_string($_POST['titel'])."','".$bericht."','".$name."')";
?>

En dit dan voor alles aanpassen.
* Als je query groot wordt kan je hier het beste wat enters toevoegen:
* Een echo na een header change heeft natuurlijk niet veel nut.
* Je kan eventueel PDO gebruiken, mysql_* functies zijn af te raden. (Men zegt dat deze 'ooit' uit PHP zullen verdwijnen....)
Gewijzigd op 31/10/2012 15:16:48 door LEDfan nvt
 
Jos Vermassen

Jos Vermassen

31/10/2012 15:17:08
Quote Anchor link
LEDfan nvt op 31/10/2012 15:16:05:
Je kan je code nog wat verbeteren:
* Variable dupliceren heeft niet veel nut. (integendeel) (Is hierboven al eens gezegd)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php $datum = $mysql_real_escape_string($_POST['datum']);
    $titel = mysql_real_escape_string($_POST['titel']);
    $bericht = mysql_real_escape_string($_POST['bericht']);
    $file = $_FILES['file'];
    $name = $file['name'];
    $type = $file['type'];
    $size = $file['size'];
    $tmppath = $file['tmp_name'];
?>

Dit kan gewoon weg. Je query moet je dan wel aanpassen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
$query
= "INSERT INTO image (datum,titel,bericht,photo)
VALUES('"
.$mysql_real_escape_string($_POST['datum']."','".mysql_real_escape_string($_POST['titel'])."','".$bericht."','".$name."')";
?>

En dit dan voor alles aanpassen.
* Als je query groot wordt kan je hier het beste wat enters toevoegen:
* Een echo na een header change heeft natuurlijk niet veel nut.
* Je kan eventueel PDO gebruiken, mysql_* functies zijn af te raden. (Men zegt dat deze 'ooit' uit PHP zullen verdwijnen....)



Oké bedankt!
 
- SanThe -

- SanThe -

31/10/2012 15:30:46
Quote Anchor link
- SanThe - op 31/10/2012 14:36:31:
Als je een datum in de database wilt zetten kan je dit: date('d.m.Y') dus niet gebruiken. Een datumveld in de database heeft een YYYY-MM-DD format en is van het type DATE of DATETIME. Om de datum/tijd van dit moment in de database te zetten gebruik je NOW() in de query.




Toevoeging op 31/10/2012 15:35:36:

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
<?php
$query
= "INSERT INTO image
          (
              datum,
              titel,
              bericht,
              photo
          )
          VALUES
          (
              NOW(),
              '"
.mysql_real_escape_string($_POST['titel'])."',
              '"
.mysql_real_escape_string($_POST['bericht'])."',
              '"
.mysql_real_escape_string($_POST['name'])."'
          )"
;
?>
 
Jos Vermassen

Jos Vermassen

01/11/2012 00:05:42
Quote Anchor link
- SanThe - op 31/10/2012 15:30:46:
- SanThe - op 31/10/2012 14:36:31:
Als je een datum in de database wilt zetten kan je dit: date('d.m.Y') dus niet gebruiken. Een datumveld in de database heeft een YYYY-MM-DD format en is van het type DATE of DATETIME. Om de datum/tijd van dit moment in de database te zetten gebruik je NOW() in de query.




Toevoeging op 31/10/2012 15:35:36:

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
<?php
$query
= "INSERT INTO image
          (
              datum,
              titel,
              bericht,
              photo
          )
          VALUES
          (
              NOW(),
              '"
.mysql_real_escape_string($_POST['titel'])."',
              '"
.mysql_real_escape_string($_POST['bericht'])."',
              '"
.mysql_real_escape_string($_POST['name'])."'
          )"
;
?>


oke, bedankt!
Maar die mysql_real_escape_string() bij $name werkt niet, hoe komt dit?
Gewijzigd op 01/11/2012 00:14:38 door Jos Vermassen
 

Pagina: 1 2 volgende »



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.