Foutje bij vullen database

Status
Niet open voor verdere reacties.

SillyMelody

Banned
Lid geworden
23 apr 2007
Berichten
4.309
Hallo allemaal,

ik heb een invulblad en deze vult een tabel in een database.
Nu wil ik een keuze invoerveld hebben als een array.
Deze gegevens haal ik uit een andere tabel.

Dit werkt goed, maar als ik op verzenden klik, wordt niet de naam, maar het ID opgeslagen.

Het stukje code wat ik hiervoor gebruik is dit.

Wat doe ik fout?

Alsvast bedankt

PHP:
Onderwerp             :<select name="onderwerp" type="text" />
<?php
                       $db = mysql_connect("localhost", "root", "wachtwoord")
                             or die("Kan niet verbinden: " . mysql_error());
                             mysql_select_db("database", $db);
                       $sql = "SELECT * FROM merken_a ORDER BY Naam ";
                       $resultaat  = mysql_query($sql); // voer SQL code uit
                             while ($rij = mysql_fetch_array($resultaat)) {
                             echo "<option value=\"";
                             echo $rij["CATEGORIE_ID"]."\">";
                             echo $rij["Naam"]."</option>\n";
        }
                     mysql_close($db);
?>
 </select>
 
Laatst bewerkt:
heb je ook het stukje code waar het in de database wordt gestopt?
Want dit stukje laat alleen het resultaat zien.
 
heb je ook het stukje code waar het in de database wordt gestopt?
Want dit stukje laat alleen het resultaat zien.

Natuurlijk

PHP:
<link href="xampp.css" rel="stylesheet" type="text/css">
<?php
// bestanden insluiten
include_once('config.php');
include_once('functions.php');
include_once('header.php');

// initialisatie en configuratie heeft plaatsgevonden in config.php
if (isset($_POST['verzonden'])){
        // begin de controles foto1
        if (!isset($_FILES['foto1'])){
                // Het formulier is niet goed verzonden, of de pagina is foutief aangeroepen
                echo 'Het formulier is niet goed ingevuld. <br />';
                echo  "Try <a href=\"$deze_pagina\">again</a>";
                exit;
        }
        else{
                // Een array maken met alle waarden voor de foto
                $foto1 = $_FILES['foto1'];
        }

        // controleer of er fouten zijn opgetreden bij het uploaden
        switch ($foto1['error']){
                case UPLOAD_ERR_OK:
                        // Het uploaden is goed gegaan, maar misschien is de foto
                        // groter dan toegestaan. Dit controleren
                        if ($foto1['size'] > MAX_FOTO_SIZE){
                                $fout_bericht .= "De foto is te groot. Hij mag niet groter zijn dan " .
                                MAX_FOTO_SIZE . " bytes<br />";
                        }
                        // er is geen fout opgetreden, doe niets.
                        break;
                case UPLOAD_ERR_INI_SIZE:
                        // de foto is groter dan wordt toegestaan door php.ini
                        $fout_bericht .= 'De foto is te groot! Hij mag niet groter zijn dan ' . MAX_FOTO_SIZE . 'bytes';
                        break;
                case UPLOAD_ERR_PARTIAL        :
                        // de foto is maar gedeeltelijk ge-uploaded
                        $fout_bericht .= 'Er is een fout opgetreden tijdens het uploaden. ';
                        break;
                case UPLOAD_ERR_NO_FILE :
                        // Er is geen bestand opgegeven om te uploaden
                        if (UPLOAD_VERPLICHT){
                                // als het uploaden van een bestand verplicht is de foutmelding tonen
                                $fout_bericht = 'U hebt geen foto opgegeven om te uploaden. ';
                        }
                        break;
                default:
                        // Vangnet; er zou geen onbekende fout mogen optreden, maar het is
                        // goed hier toch een voorziening voor te treffen
                        $fout_bericht = 'Er is een onbekende fout opgetreden. ';
                        break;
        } // einde switch

        if (!$fout_bericht){
                // het uploaden is goed gegaan. Mogelijke overige fouten afvangen.

                // Het MIME-type van de foto controleren.
                // Alleen JPEG, GIF en PNG-bestanden zijn toegestaan
                // De toegestane MIME-types zijn gedefinieerd in $foto_MIME
                if (!in_array($foto1['type'], $foto_MIME)){
                        $fout_bericht .= "U kunt alleen GIF-, JPG- of PNG-foto's uploaden. Het huidige type is: ". $foto1['type'];
                }

                // controleren of er al een foto bestaat met deze naam.
                // Dubbele namen (=per ongeluk
                // overschrijven van een foto) mogen niet voorkomen.
                $foto_naam1 = $upload_dir . $foto1['name'];
                if (file_exists($foto_naam1)){
                        $fout_bericht .= 'Er bestaat al een foto met deze naam.
                        Verander de naam van de foto op uw computer en upload opnieuw. ';
                }

                // Overige formuliervelden valideren.
                // Naam moet ingevuld zijn
                if (!check_field($_POST['merknaam'], T_TEXT)){
                        $fout_bericht .= 'U hebt geen naam ingevuld <br /> ';
                }

        }


        // Einde van de controles. Als er geen fouten zijn opgetreden
        // is $foutbericht nog leeg. In dat geval kan de foto worden
        // verplaatst naar de definitieve directory
        if (!$fout_bericht){
                if(!move_uploaded_file($foto1['tmp_name'], $foto_naam1)){
                        $fout_bericht .= "Er is een fout opgetreden bij het opslaan van de foto. ";
                }
        }


        if(!$fout_bericht){

                /**
                * database openen. Foutcontrole niet nodig, als dit failt
                * wordt ge-die-d vanuit de functie
                */
                $db = safe_db_open($host, $gebruiker, $wachtwoord, $database);
                /**
                * openen geslaagd, query opbouwen met gegevens uit formulier
                */
                $query = "INSERT hoofd_database (id, onderwerp, type, made_in,  photo_filename, datum, beschrijving)
                        VALUES ('', '" .
                        safe_text($_POST['onderwerp']) ."', '" .
                        safe_text($_POST['type']) ."', '" .
                        safe_text($_POST['made_in']) ."', '" .
                        safe_text($_FILES['foto1']['name']) . "', '" .
                        safe_text($_POST['datum']) . "', '" .
                        safe_text($_POST['beschrijving']) . "')";
                /**
                * gegevens invoegen in de database, ook nu foutcontrole (in dit voorbeeld)
                * niet nodig, omdat wordt ge-die-d vanuit de functie indien het opslaan mislukt.
                * Mogelijk wilt u hier zelf een ander type error-handling toepassen, in de vorm van
                * if(!safe_query())... enzovoort.
                */
                safe_query($db, $query);
                mysqli_close($db);
                // Einde opslaan in database

                // Thumbnail maken.
                // Stap 1: eigenschappen van de foto achterhalen
                list ($breedte, $hoogte, $image_type) = getimagesize($foto_naam1);

                // Stap 2: bepaal de verhouding tussen hoogte en breedte
                $image_ratio = $breedte/$hoogte;

                // Stap 3: bereken op basis van de ratio de nieuwe hoogte
                if ($image_ratio > 1){
                        $tn_breedte = THUMB_SIZE;
                        $tn_hoogte = THUMB_SIZE / $image_ratio;
                }
                else{
                        $tn_hoogte = THUMB_SIZE;
                        $tn_breedte = THUMB_SIZE * $image_ratio;
                }

                // Stap 4: maak een lege thumbnail in het geheugen van de server
                $thumb = imagecreatetruecolor($tn_breedte,$tn_hoogte);

                // Stap 5: afhankelijk van het type foto het juiste type thumbnail maken
                switch ($image_type){
                        case IMAGETYPE_GIF:
                                $source = imagecreatefromgif($foto_naam1);
                                break;
                        case IMAGETYPE_JPEG:
                                $source = imagecreatefromjpeg($foto_naam1);
                                break;
                        case IMAGETYPE_PNG:
                                $source = imagecreatefrompng($foto_naam1);
                                break;
                        default:
                                // vangnet, dit komt als het goed is nooit voor.
                                // indien toch: trachten gif-bestand te maken
                                $source = imagecreatefromgif($foto_naam1);
                                break;
                }

                // Stap 6: De grote foto verkleinen en kopieren naar de thumbnail
                imagecopyresampled($thumb, $source, 0, 0, 0, 0, $tn_breedte, $tn_hoogte, $breedte, $hoogte);

                // Stap 7: naam van de thumbnail instellen
                $thumbname= $upload_dir ."thumbnails/" . "tn_" . $_FILES['foto1']['name'];

                // Stap 8: tot slot: de thumbnail opslaan, opnieuw afhankelijk van het type
                switch ($image_type){
                        case IMAGETYPE_GIF:
                                imagegif($thumb, $thumbname);
                                break;
                        case IMAGETYPE_JPEG:
                                // jpeg-afbeelding opslaan, kwaliteit: 100%
                                imagejpeg($thumb, $thumbname, 100);
                                break;
                        case IMAGETYPE_PNG:
                                imagepng($thumb, $thumbname);
                                break;
                }

                // In deze toepassing: De thumbnail op het scherm tonen
                echo "<img src=\"$thumbname\" />";
                // Einde thumbnail maken

                // alle handelingen voltooid, melding op het scherm zetten
                echo "<h2>Gegevens zijn opgeslagen in de database!</h2>";
                echo "<a href=\"upload.php\">Back to Upload page</a>";

                exit;
        }
        else{
                // normaal gesproken: netjes doorsturen naar een error-pagina.
                // nu even Quick and Dirty naar het scherm schrijven (geen correcte HTML!)
                echo '<h2>There is a ERROR !<BR><BR><BR></h2>';
                echo $fout_bericht;
                echo  "<br />Try <a href=\"$deze_pagina\">again</a>";
                exit;
        }
}
else{
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Uploaden</title>
</head>

<body>




<h2>Uploaden</h2>
<form method="post" enctype="multipart/form-data" action="<?php echo $_SERVER['PHP_SELF']?>">
<pre>
Select a Picture     :<input name="foto1" type="file"  size="50 "id="foto" />
Another Picture      :<input name="foto2" type="file"  size="50 "id="foto" />
Onderwerp            :<select name="onderwerp" type="text" />
<?php


                       $db = mysql_connect("localhost", "root", "hollywood1")
                             or die("Kan niet verbinden: " . mysql_error());
                             mysql_select_db("database", $db);
                       $sql = "SELECT * FROM merken_a ORDER BY Naam ";
                       $resultaat  = mysql_query($sql); // voer SQL code uit
                             while ($rij = mysql_fetch_array($resultaat)) {
                             echo "<option value=\"";
                             echo $rij["CATEGORIE_ID"]."\">";
                             echo $rij["Naam"]."</option>\n";



                       }

                     mysql_close($db);

?>
 </select>
Type                 :<input name="type" type="text" size="50" />
Made in              :<input name="made_in" type="text" size="50" />
Beschrijving         :<textarea name="beschrijving" cols="50" rows="4"></textarea><br />

<input type="hidden" name="verzonden" value="1" />
<input type="hidden" name="datum" value="<?php echo date("YmdHis"); ?>" />
</pre>
<hr>
<input type="submit" name="Submit" value="Submit" />
<input type="reset" name="Reset" value="Reset" />

</form>
</body>
</html>
<?php
} // het grote else-blok afsluiten
?>
 
Wat je fout doet is dat je de ID als value van de option zet..

Stel dat je als ID 1 hebt en als naam test
PHP:
// Jou code
echo "<option value=\""; 
echo $rij["CATEGORIE_ID"]."\">"; 
echo $rij["Naam"]."</option>\n"; 

//resultaat
<option value="1">test</option>

///////////////////////////////////////////////////////////////////////////////

//Juiste code
echo "<option value=\""; 
echo $rij["Naam"]."\">"; 
echo $rij["Naam"]."</option>\n";

//resultaat
<option value="test">test</option>
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan