Foto uploaden in php

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: 1 2 volgende »

Ralph Klunder

Ralph Klunder

26/06/2017 15:31:56
Quote Anchor link
Ik ben bezig met een website en daar wil ik een foto in uploaden. Ik ben al aardig ver met de code ik blijf alleen een undefined index fout krijgen. Is er iemand die mij hier mee kan helpen? de volgende foutcodes krijg ik:

Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 101

Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 102

Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 103

Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 104

Notice: Undefined index: foto in C:\xampp\htdocs\website\auto-voegtoe.php on line 105

Dit is mijn code:

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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php

// Is er op de verzendbutton gedrukt?

if (isset($_POST ['auto-voegtoe-submit']))
    
{

    // Post variabelen
    $auto_naam = $_POST ['naam'];
    $auto_omschrijving = $_POST ['omschrijving'];
    $auto_prijs = $_POST ['prijs'];
    
    // Verwerk upload image
    $errors = array(); //Fouten array
    $foto_naam = $_FILES ['foto']['name'];
    $foto_grootte = $_FILES ['foto']['size'];
    $foto_tmp = $_FILES ['foto']['tmp_name']; //Tijdelijke opslag op webserver
    $foto_type = $_FILES ['foto']['type'];
    $foto_ext = strtolower (end (explode ('.', $_FILES ['foto']['name'])));
    
    //toegestane bestandsextensies
    
    $extensions = array ('jpeg', 'jpg', 'png');
    
    //Check bestandsextensies
    if ( in_array($foto_ext, $extensions) === false )
    {

        $errors[] ='Extensie niet toegestaan alleen JPEG of PNG.' ;
    }

    
    // Check bestandsgrootte
    if ($foto_grootte >= 2097152)
    {

        $errors[] ='Bestand mag niet groter zijn dan 2MB.' ;
    }

    // Check of fouten aanwezig zijn
    if ( empty($errors) === true)
    {

        // Maak images directory getcwd() = get current working directory
        $foto_dir = getcwd() . '/autos/';
        
        //Verplaats van tijdelijke opslag op server
        // naar definitieve directory met juiste naam

        move_uploaded_file ($foto_tmp, $foto_dir . $foto_naam) ;
        
        // CHECK NU OP MYSQL
        if (FALSE !== ($db_connect =@mysql_connect('127.0.0.1', 'root','')) || die (mysql_error() ) )
            // Functie die() stopt uitvoer script als connectie met server mislukt
        {
            // CHECK NU OP DATABASE
                    
                    if (FALSE !== @mysql_select_db ('autobedrijf')
                     ||
die(mysql_error()  )
                        ){

                        
                    //succesvolle connectie met database, maak nu de SQL query
                    $query  = "
                    INSERT INTO auto (naam, omschrijving,    prijs, foto)
                    VALUES  ('$auto_naam','$auto_omschrijving', $auto_prijs,'./images/$foto_naam'); "
;

                    //Voer de MySQL query uit
                    if ( FALSE !== @mysql_query($query) || die(mysql_error())
                    )
                    {
  //  echo '<p> Gegevens succesvol in de database ingevoerd! </h3>'; //Klaar
                    
                        header ("Location: index.php");
                    }
                      
        }
      }
    }
}

                        
        
    
    
    
    


    
    
?>
Gewijzigd op 26/06/2017 15:32:42 door Ralph Klunder
 
PHP hulp

PHP hulp

19/04/2024 18:14:10
 
- SanThe -

- SanThe -

26/06/2017 15:39:47
Quote Anchor link
print_r($_FILES);

Wat krijg je dan?
 
Ralph Klunder

Ralph Klunder

26/06/2017 15:41:48
Quote Anchor link
waar moet ik die dan neerzetten?
 
- SanThe -

- SanThe -

26/06/2017 15:43:31
Quote Anchor link
Bij regel 15 in .bovenstaand.
 
Ralph Klunder

Ralph Klunder

26/06/2017 15:45:31
Quote Anchor link
dan krijg ik een array fout
Array ( )
 
- SanThe -

- SanThe -

26/06/2017 15:47:07
Quote Anchor link
Dan is of de name fout of je form mist enctype.
 
Ralph Klunder

Ralph Klunder

26/06/2017 15:50:28
Quote Anchor link
Dit is mijn form
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
45
46
47
48
   <div id="content">
 <h1>Auto toevoegen</h1>
<form method="post" action="auto-voegtoe.php">
    <p>
        <label for="naam">Model: </label>
        <p>
        <input type="text"
               placeholder="Voer modelnaam in"
               name="naam"
               id="naam"
               required />
        </p>    
    </p>
    <p>
        <label      for="omschrijving">Omschrijving: </label>
       <p>
        <textarea   type="text"
                    rows="4"
                    cols="50"
                    placeholder="Zet hier een omschrijving neer"
                    name="omschrijving"
                    id="omschrijving"
                  required ></textarea>
        </p>  
    </p>
    <p>
        <label for="prijs">Prijs: </label>
        <p>
        <input type="number"
               placeholder="Voer hier een prijs in"
               name="prijs"
               id="prijs"
               required />
        </p>    
    </p>
    <p>
        <label for="foto">Foto: </label>
        <p>
        <input type="file"
               name="foto"
               id="foto" />
        </p>    
    </p>
    
    <p>
        <button name="auto-voegtoe-submit">Auto Toevoegen</button>
    </p>
</form>

- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 26/06/2017 20:47:03 door - Ariën -
 
- SanThe -

- SanThe -

26/06/2017 15:54:12
Quote Anchor link
Je form mist dus enctype.
<form method="post" action="auto-voegtoe.php" enctype="multipart/form-data">
 
Ralph Klunder

Ralph Klunder

26/06/2017 15:54:23
Quote Anchor link
volgens mij is het inderdaad de enctype. deze heb ik zojuist toegevoegd en nu stuurt die hem door. Hartstikke bedankt!
 
- Ariën  -
Beheerder

- Ariën -

26/06/2017 19:01:21
Quote Anchor link
Waarom gebruik je nog de oude mysql-functies i.pv. PDO of MySQLi? Als je hosting je site overzet naar PHP7 zal je site plat liggen.

Verder hoort er een exit(); na je location-header, en wil je juist geen fouten tonen met die(). Waarom moet je script dan zo rigoreus dood gaan?
Gewijzigd op 26/06/2017 19:02:33 door - Ariën -
 
Ralph Klunder

Ralph Klunder

27/06/2017 09:31:47
Quote Anchor link
dit komt omdat dit een odpracht voor school is. De leraren kunnen mij niet verder helpen omdat ik dit in mijn eigen tijd thuis aan het doen ben en ik graag verder wil. De code die ik gebruik is code die ik van school heb gekregen. Deze site hoeft niet online of iets dergelijks. Nu heb ik wel nog weer een volgende vraag:

Ik ben bezig met het laten weergeven wat hij dus in de vraag van gister in de database zette. Daar zie je de code zo van. Nu heb ik het probleem dat die het plaatje niet weergeeft en deze tekst laat zien in de tabel: style='font-size: 30px'> Merk:

Dit doet die bij alles wat die ophaalt. Wat doe ik hier precies verkeerd?

Code:
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
<?php
session_start();
?>

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Teradruk BV.</title>
    <link rel="stylesheet" type="text/css" href="home.css">
</head>
<body>

    <div id="header"></div>
    <div id="menu">
        <?php
   if (isset($_SESSION["functie"])){    
        if ($_SESSION["functie"] == 2){
            echo "Welkom ". $_SESSION['naam'] ." | ";
            echo "<a href='index.php'>Home</a> | ";
            echo "<a href='auto-voegtoe.php'>Auto toevoegen</a> | ";
            echo "<a href='uitloggen.php'>Uitloggen</a>";
        }

        else {
            header("location: uitloggen.php");
        }
        
    }

  
?>
        
    </div>
    
    <div id="content">
 <h1>Advertentie</h1>

        <?php
//  pagina voor de bewerking van de auto gegevens in de database




$connection = mysql_connect('127.0.0.1', 'root', ''); //The Blank string is the password
mysql_select_db('autobedrijf');
$query = "SELECT * FROM auto";
$result = mysql_query($query);


echo "<div class='auto-update-container'>" ;
echo "<table>";

while($row = mysql_fetch_array($result) ) {
    
   // $foto_path = $row ['foto'];
    
    echo
        "<tr><td>"
        . "<p> style='font-size: 30px'> Merk: </p> " . " "
        . $row ['naam']
        
        .
"<p> style='font-size: 30px'> Beschrijving: </p> "
        . $row['omschrijving']

        .
"</td><td>"
        
        . "<p> style='font-size: 15px'> Prijs: </p> "
        . "<p> € </p>"
        . $row  ['prijs']
        .
"</td><td>"
        . '<img src=  "'. $row ['foto'] . '"  height="200" width="300" /> '

        
 
        . "</td> </tr>"
        
        
        ;
        
}


  
echo "</table>";
echo  "</div>" ;

mysql_close();



?>


    
    </body>
</html>


- Ariën -:
Gelieve in het vervolg bij code de [code][/code]-tags gebruiken.
Hier kan je meer lezen over de mogelijke opmaakcodes.
Alvast bedankt!
Gewijzigd op 27/06/2017 11:27:04 door - Ariën -
 
Ivo P

Ivo P

27/06/2017 09:40:06
Quote Anchor link
"<p> style='font-size: 30px'> Merk: </p> " . " "

moet zijn

"<p style='font-size: 30px'> Merk: </p> " . " "
 
Ralph Klunder

Ralph Klunder

27/06/2017 09:45:34
Quote Anchor link
bedankt, stomme fout inderdaad! nu zit ik alleen nog met die foto. In de eerdere vraag is te zien waar die geüpload wordt, alleen nu krijgt die hem niet uit de database.
 
Ivo P

Ivo P

27/06/2017 10:00:09
Quote Anchor link
leesbaardere variant:

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
<?php
//  pagina voor de bewerking van de auto gegevens in de database


$connection = mysql_connect('127.0.0.1', 'root', ''); //The Blank string is the password
mysql_select_db('autobedrijf');
$query = "SELECT * FROM auto";
$result = mysql_query($query);
?>


<div class='auto-update-container'>
  <table>
  <?php while($row = mysql_fetch_array($result) ): ?>
    
   // $foto_path = $row ['foto'];
    
        <tr><td>
           <p style='font-size: 30px'> Merk: </p>
           <?= htmlspecialchars( $row ['naam'] ) ?>
        
          <p style='font-size: 30px'> Beschrijving: </p>
           <?= htmlspecialchars( $row ['omschrijving'] ) ?>  

        </td><td>
          <p> style='font-size: 15px'> Prijs: </p>
        . "<p>  </p>
       <?=  $row  ['prijs'] ?>
        </td><td>
        <img src="<?= $row ['foto'] ?>' height="200" width="300" />

        
 
       </td> </tr>
        
        
      
        
<?php endwhile; ?>

  
  </table>
  </div>;


Toevoeging op 27/06/2017 10:01:13:

ah phphulp herkent de short tag <¿= niet. dat is gelijk <¿php echo
Gewijzigd op 27/06/2017 11:06:08 door Ivo P
 
Ralph Klunder

Ralph Klunder

27/06/2017 11:04:44
Quote Anchor link
heeft iemand een idee waarom mijn plaatje niet weergegeven wordt?
 
Ivo P

Ivo P

27/06/2017 11:06:54
Quote Anchor link
probeer het eens zonder de spaties na src=
 
Ben van Velzen

Ben van Velzen

27/06/2017 11:11:56
Quote Anchor link
Of doe eens bron weergeven en kijk wat je werkelijk als output krijgt, inclusief de url's naar plaatjes. De gevraagde url's kun je ook via het developer console opzoeken.
 
Ralph Klunder

Ralph Klunder

27/06/2017 11:15:20
Quote Anchor link
nee dat werkt helaas niet:(

ik zal het even verder uitleggen.

Ik heb een foto geüpload uit de map ./images/(fotonaam). Deze foto komt door mijn eerdere code in een tmp map terecht en daarna sla ik hem op in de map ./autos/(fotonaam). In de database komt alleen niet de URL: ./autos/(fotonaam) te staan maar de URL: ./images/(fotonaam). Wat de bedoeling is, is dat een foto geüpload van meerdere plekken en dus ook met meerdere URL's te maken heeft. Dus wat ik eigenlijk wil is dat de URL in de database aangepast wordt naar ./autos/ omdat hij daar daadwerkelijk goed opgeslagen staat. Als ik dat verhaal opgelost heb moet ik hem daarna dus ook nog weergeven. Iemand een idee?

Ben van Velzen op 27/06/2017 11:11:56:
Of doe eens bron weergeven en kijk wat je werkelijk als output krijgt, inclusief de url's naar plaatjes. De gevraagde url's kun je ook via het developer console opzoeken.


Hier laat die dus inderdaad zien dat die foto van ./images/ gepakt wordt. dit is alleen de url waarvan die geüpload wordt en niet waar die wordt opgeslagen
Gewijzigd op 27/06/2017 11:16:51 door Ralph Klunder
 
Ben van Velzen

Ben van Velzen

27/06/2017 11:31:58
Quote Anchor link
>> Hier laat die dus inderdaad zien dat die foto van ./images/ gepakt wordt. dit is alleen de url waarvan die geüpload wordt en niet waar die wordt opgeslagen

Waarom laat je het uploadscript dan in de database zetten dat de plaatjes in ./images staan?
 
Ivo P

Ivo P

27/06/2017 11:33:08
Quote Anchor link
Pas je insert query aan.
daar zeg je /images/....

wel handig om zo iets in je vraag te melden. Straks kom je nog met de vraag waarom er een verkeerde foto staat, en blijkt dat je foto's van vissen wilt zien en auto's geupload hebt.

Terug naar je vraag: het is niet per se heel handig om de url compleet op te slaan: mocht je een andere bestandsstructuur gaan gebruiken, moet je alle recors aanpassen.

Sowieso plaats ik alle foto's en andere uploads altijd in 1 map.
het is niet echt heel belangrijk dat duidelijk is dat het een foto van een auto.
daarbij zou ik niet de naam hanteren die de gebruiker gaf.
meerdere foto's genaam audi.jpg geven problemen.
 
Ralph Klunder

Ralph Klunder

27/06/2017 11:55:02
Quote Anchor link
Pas je insert query aan.
daar zeg je /images/....

daar zat inderdaad de fout! bedankt. Het gedeelte dat foto's met een dubbele naam komen maakt niet heel veel uit aangezien dit niet daadwerkelijk online komt. Ik heb nu nog 1 laatste vraag en dan ben ik klaar.

Bij prijs in dit gedeelte

. "<p> style='font-size: 15px'> Prijs: </p> "
. "<p> € </p>"
. $row ['prijs']
. "</td><td>"

probeer ik er een euroteken in te verwerken, deze komt alleen niet tevoorschijn voor het getal. hebben jullie een idee?

In ieder geval al heel erg bedankt voor de hulp. Hierdoor een flink stuk verder.
 

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.