Hallo,

ik heb uit ditscript een groot deel gebruikt om voor mezelf een scriptje te schrijven, hopelijk vind cynthia het goed.

Nou ben ik zover gekomen dat ik een foto kan uploaden, een link in een database kan zetten en het weer kan uitlezen, dat was voor mij al een heel gepruts maar het is uiteindelijk gelukt.

Nou zou ik graag 3 foto's uploaden en de links hiervan ook in m'n database zetten.
Gelukkig staat er onderin het commentaar van dat script ook nog een ander script van Arjan Kapteijn voor het uploaden van meerdere foto's.

Uitendelijk heb ik, de SQL query van cynthia gebruikt, en het script van Arjan Kapteijn. dit aangepast en voor 1 foto werkt het nou dus super, het enige probleem is, dat de foto's goed geupload worden, maar de link niet in de databse terecht komt.

Dit is mijn code :

<?php
 $random = randomgenerator(5);
         $verplaats = move_uploaded_file($temp, "./img/" .$random.'-'.$naam);

         if($verplaats == 1){		
																		
	$query = "UPDATE users SET afbeelding1 = '/img/$random-$naam' WHERE `id` = $userid"; 
								 
										 if(!mysql_db_query($database,$query,$sql)) die(mysql_error());  
										 
echo' <hr color="#000000">Naam: ' .$naam. '<br> Type: ' .$type. '<br>';
	echo' ID: ' .$userid. '<br>';               
	echo 'Er is geen error opgetreden. Het bestand<b> ' .$naam. ' </b>is met success geupload<hr color="#000000">';

		}


Mijn database is 1 tabel met een aantal rijen met informatie, en 3 rijen voor de links van de foto's, deze heten afbeelding1 afbeelding2 en afbeelding3.
De map waar de foto's moeten komen is /img/.
$random is een gegenereerde code die voor de naam van de afbeelding komt om het uniek te maken.

Ik weet dat deze query niet de schoonheids prijs verdient maar ik heb ook nog niet heel erg veel kennis.

Wat heb ik zelf geprobeerd:

[list][li]Meerdere velden in de query[/li] maar omdat dan komt de laatste foto 3x in de database.
[li] Een for loop, met een variable als veldnaam. [/i] Zonder resultaat
[li] Meerdere queries[/li] Door de loop wie er is blijft het de zelfde afbeelding
[li] Functies gelezen op php.net[/li] Heeft me weinig op geleverd
[li] Google [/li] Weinig voor mij begrijpelijke code's wie mij wijzer maken.


Wie kan mij een zetje in de goede richting geven.






Wanneer $verplaats gelijk is aan 1, dan vindt er een update plaats. Waarom controleer jij niet hoeveel records er zijn geupdate? Zonder deze gegevens weet je nooit zeker of er een update heeft plaatsgevonden. mysql_affected_rows() is je beste vriend. Jouw huidige controle vertelt je alleen of de query is gelukt, dat is heel wat anders.

Begint jouw script overigens met de volgende regels?
<?php
ini_set('display_errors', 1);
error_reporting(E_ALL);

// rest van je script
?>
Ik heb de code wie je aangeeft erbij gezet, deze geeft geen errors weer.

mysql_affected_rows() geeft: 1
Dat er maar 1 veld geupdate zou worden had ik wel verwacht, omdat ik steeds andere afbeeldingen gebruik zie ik dat het veld afbeelding1 vel aangepast word, maar in 2 en 3 gebeurd niks.
De output staat wel bij in de loop, anders krijg ik errors door de ELSE wie erna komt.

Maar is dit output van de hele loop, of van de actie in 1 loop? (hoe leg je dat uit)

Iemand nog een idee..?
$query = "UPDATE users SET afbeelding1 = '/img/$random-$naam' WHERE `id` = $userid";

Ik zie hier de kolomnaam 'afbeelding1' staan. Dat duidt in de eerste plaats op een verkeerd datamodel, afbeelding2 en afbeelding3 zullen waarschijnlijk ook bestaan, er is dus niet (volledig) genormaliseerd, maar in de tweede plaats kan deze query onmogelijk een foto in een ander kolomnaam gaan opslaan.

Tevens mis ik een foreach of while waarmee je alle foto's gaat uploaden. Waar is deze code? En vooral, waarom denk jij dat er 3 bestandsnamen in de database moeten komen te staan? Er is hier geen letter php-code die daar op duidt.
Hier de volledige php code, wie hoogst waarschijnlijk nog wel meer schoonheids fouten fouten bevat, maar dit is nu niet van het grootste belang.


<html>
<body>

<!-- form starten voor de drop down list -->
<table>
<form name="form1" method="POST" action="<?php $_SERVER['PHP_SELF']; ?>" enctype="multipart/form-data">
<select name="id">
<option selected>Kies een naam</option>';

<?php 

ini_set('display_errors', 1);
error_reporting(E_ALL);

include "config.php";
$result = mysql_query("select * from users");  
//de keuze mogelijkheden onder elkaar zetten doormiddel van een loop

while ($gegevens = mysql_fetch_object($result)){ 
        $keuzenaam = $gegevens->a;
		$id = $gegevens->id;
 echo'<option value =' .$id. '>' .$keuzenaam. '</option>';
 }
?>

<!-- de dropdownlist afsluiten -->
</select>

<p>Afbeeldingen uploaden, max 100kb per afbeelding:</p>


<!-- -----------------------------------------------1----------------------------------------------------------- -->
<tr>
	<input type="hidden" name="MAX_FILE_SIZE" value="102400">
</tr>
<tr>
	<td>Afbeelding:</td><td><input size="50" type="file" name="afbeelding1"></td>
</tr>
<tr><td height="5px"></td></tr>
<!-- -----------------------------------------------2---------------------------------------------------------- -->

<tr>
	<input type="hidden" name="MAX_FILE_SIZE" value="102400">
</tr>
<tr>
	<td>Afbeelding:</td><td><input size="50" type="file" name="afbeelding2"></td>
</tr>
<tr><td height="5px"></td></tr>
<!-- ------------------------------------------------3---------------------------------------------------------- -->

<tr>
	<input type="hidden" name="MAX_FILE_SIZE" value="102400">
</tr>
<tr>
	<td>Afbeelding:</td><td><input size="50" type="file" name="afbeelding3"></td>
</tr>
<tr><td height="5px"></td></tr>

<!-- -------------------------------------------------------------------------------------------------------------- -->
<tr>
	<td>
<input type="submit" name="Submit" value="Uploaden!">
	</td>
<tr>
</form>
</table>
</body>
</html>

<?php

ini_set('display_errors', 1);
error_reporting(E_ALL);

if(isset($_POST['Submit']))
{

//random code genereren om later achter de afbeelding te zetten.     
    function randomgenerator($aantaltekens)
    {
        $kleineletters     = range('a','z');
        $groteletters     = range('A','Z');
        $cijfers        = range(0,9);
        
        $karakters     = array_merge($kleineletters, $groteletters, $cijfers);
        $aantal     = count($karakters)-1;
          $random     = null;
          
          for($i=0; $i < $aantaltekens; $i++) {
               $random .= $karakters[mt_rand(0, $aantal)];
          }
          return $random;
    }
    
//
    foreach($_FILES as $afbeelding)
    {
        $naam         = $afbeelding['name'];
        $type         = $afbeelding['type'];
        $temp         = $afbeelding['tmp_name'];
        $error        = $afbeelding['error'];
        $size         = $afbeelding['size'];

			$userid = $_REQUEST['id'];

        switch($error)
        {
            case 0:
                if(is_uploaded_file($temp))
                {
if($type == 'image/jpeg' || $type == 'image/gif' || $type == 'image/png' || $type == 'image/jpg' || $type == 'image/bmp'||)
                    {
                        if($size >= 102400)
                        {
                            echo '<p>Sorry, dit bestand is te groot om te worden geupload!</p>';
                        }else{
                            $random = randomgenerator(5);
                            $verplaats = move_uploaded_file($temp, "./img/" .$random.'-'.$naam);

                            if($verplaats == 1){	
								
																		
$query = "UPDATE users SET afbeelding = '/img/$random-$naam' WHERE `id` = $userid"; 

										 if(!mysql_db_query($database,$query,$sql)) die(mysql_error());  

echo' <hr color="#000000">Naam: ' .$naam. '<br> Type: ' .$type. '<br>';
echo' ID: ' .$userid. '<br>';               
echo' Er is geen error opgetreden. Het bestand<b> ' .$naam. ' </b>is met success geupload<br>';
echo' Updated records: ', mysql_affected_rows();
								}					
															
							else{
                                echo '<p>Er ging iets mis met het uploaden van '.$naam.', neem contact op met de webmaster.</p>';
                            }
                        }
                    }else{
                        echo '<p>Sorry, dit bestandsformaat accepteer ik niet!</p>';
                    }                
                }else{
                    echo '<p>Sorry, dit accepteer ik niet!</p>';
                }
                break;
                
            case 1:
echo '<p>Error: De grootte van het bestand is groter dan wat de server aankan!</p>';
                break;
            
            case 2:
echo '<p>Error: De grootte van het bestand is groter dan 100kb!</p>';
                break;
            
            case 3:
echo '<p>Error: Het bestand is maar gedeeltelijk geupload!</p>';
                break;
            
            case 4:
                //Geen bestand geupload, we doen niks!
				break;
			}
		}
    }

?>


Dit is zoals je kunt zien, en in mijn start post stond aagegeven een bestaand script, wie ik zelf probeer aan te passen naar mijn wensen.
Frank schreef op 17.11.2006 19:37
$query = "UPDATE users SET afbeelding1 = '/img/$random-$naam' WHERE `id` = $userid";

Ik zie hier de kolomnaam 'afbeelding1' staan. Dat duidt in de eerste plaats op een verkeerd datamodel, afbeelding2 en afbeelding3 zullen waarschijnlijk ook bestaan, er is dus niet (volledig) genormaliseerd, maar in de tweede plaats kan deze query onmogelijk een foto in een ander kolomnaam gaan opslaan.

Tevens mis ik een foreach of while waarmee je alle foto's gaat uploaden. Waar is deze code? En vooral, waarom denk jij dat er 3 bestandsnamen in de database moeten komen te staan? Er is hier geen letter php-code die daar op duidt.


Is het mischien een idee om een nieuwe tabel te maken met daarin een naam van de afbeelding, een afbeelding ID en een userID. Deze koppelen aan de tabel "users" wie al bestaat via de usersid?
Is het mischien een idee om een nieuwe tabel te maken met daarin een naam van de afbeelding, een afbeelding ID en een userID. Deze koppelen aan de tabel "users" wie al bestaat via de usersid?
Dat is een uitstekend plan!

Reageren