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:

<?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");
}

}
}
}
}










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

moet zijn

"<p style='font-size: 30px'> Merk: </p> " . " "
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.
leesbaardere variant:


<?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>;


[size=xsmall]Toevoeging op 27/06/2017 10:01:13:[/size]

ah phphulp herkent de short tag <¿= niet. dat is gelijk <¿php echo
heeft iemand een idee waarom mijn plaatje niet weergegeven wordt?
probeer het eens zonder de spaties na src=
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.
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
>> 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?
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.
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.

Reageren