[php] 2 variabelen omvormen naar 1

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Goedendag,

Het volgende probleem heb ik met mijn script. Binnen bij mijn CMS heb ik een pagina waarin een 6 tal bestand in 1 keer verzonden kunnen worden naar de server. Het uploaden gaat in een loop, dit werkt ook allemaal naar behoren. Na het uploaden wil ik een variabelen creëren om de bestandsnaam door te geven aan mijn script.

Dit script zet het dan weer in de database. De frontpage weet dan de bestandsnamen.

Nu heb ik bij het invoeren de input als volgt
code:
1
<input type="file" name="file[1]">

Hierbij wordt het getal per input met 1 verhoogd.
In het script kan ik dat getal weer herleiden te weten $key.

Nu zijn niet alle velden verplicht, en daar komt het probleem. In het upload script wordt een waarde gedefineerd als volgt:
PHP:
1
define  ('FILE'.$key,           $upload);

Dit werkt wel gewoon alleen als er 1 of meerdere bestanden niet gebruikt worden dan wordt die waarde niet gedefineerd. Nu krijg ik dus in mijn db voor de niet gebruikte velden bijvoorbeeld FILE2 te zien. Wat op de frontpage weer resulteert in een niet gevonden afbeelding.

Nu had ik gedacht dit te kunnen oplossen door een te proberen $file1 te creëren. Dit heeft dan als voordeel dat als hij niet bestaat er ook niks ingevoerd wordt.

Maar als ik onderstaande bijvoorbeeld gebruik dan krijg ik het niet werkend.
PHP:
1
2
3
4
$key = "1";
$file = "file";
$$file.$key = "fiets";
echo ($file1);


Weet iemand hoe je zo iets kunt doen of hoe dit heet zodat ik het kan googlen.

Acties:
  • 0 Henk 'm!

  • DiedX
  • Registratie: December 2000
  • Laatst online: 20:05
Je hebt wel een dubbele $$? iig, het zou moeten werken, ook volgens http://www.phpf1.com/tutorial/php-string-concatenation.html (String Concatination)

DiedX supports the Roland™, Sound Blaster™ and Ad Lib™ sound cards


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 21:47

Creepy

Tactical Espionage Splatterer

Kan je niet gewoon arrays gebruiken?

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

Verwijderd

$$file.$key = "fiets";

Dit kan volgens mij niet.

$var = $file.$key;
$$var = "fiets";

Acties:
  • 0 Henk 'm!

  • Osiris
  • Registratie: Januari 2000
  • Niet online
josvane schreef op dinsdag 28 april 2009 @ 15:44:
Dit werkt wel gewoon alleen als er 1 of meerdere bestanden niet gebruikt worden dan wordt die waarde niet gedefineerd. Nu krijg ik dus in mijn db voor de niet gebruikte velden bijvoorbeeld FILE2 te zien. Wat op de frontpage weer resulteert in een niet gevonden afbeelding.
Kun je dit niet gewoon oplossen door in het uit-de-DB-haal-en-pleur-het-in-HTML-neer-script te checken of het wel een geldige waarde is en zo niet, dan dat item skippen en onmiddelijk doorgaan met de volgende?
Verwijderd schreef op dinsdag 28 april 2009 @ 16:15:
$$file.$key = "fiets";

Dit kan volgens mij niet.

$var = $file.$key;
$$var = "fiets";
Of:

${$file.$key} = 'fiets';

[ Voor 16% gewijzigd door Osiris op 28-04-2009 16:23 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Volgens mij mis ik wat maar waarom kan dit niet gewoon met wat simpel checken?

Je roept dus het uploaden in een loop aan? Je kunt toch prima checken welke bestanden wel of niet goed overkomen, foutmeldingen geven aan de hand daarvan, database records invoeren. Als die databaserecords niet aanwezig zijn laat je niets zien op de frontpage. Als het geen records ansich zijn ( Iets als Product hasMany Photo ) dan kun je toch ook gewoon controle doen op je image veld van het record?

Acties:
  • 0 Henk 'm!

  • _js_
  • Registratie: Oktober 2002
  • Laatst online: 18-08 21:31
Bij het invoer veld maak je een array aan, die moet je ook weer uitlezen als array. Dus $variabele[$key] en niet zelf iets in elkaar gaan prutsen met variabele variabelen.

Acties:
  • 0 Henk 'm!

  • RobertMe
  • Registratie: Maart 2009
  • Laatst online: 03:21
Zoals _js_ zegt, gewoon <input name="file[]"> doen, krijg je gewoon een array, vervolgens kun je met een loop er doorheen wandelen
PHP:
1
2
3
4
5
6
7
8
$aantal = count($_FILES['file']);
for($i = 0; $i<$aantal; $i++)
{
  if($_FILES['file'][$i] == een bestand)
  {
    //doe iets
  }
}

Acties:
  • 0 Henk 'm!

  • josvane
  • Registratie: Oktober 2002
  • Laatst online: 20-09 08:23
Dit was voor mij de oplossing, het simpelweg tellen kan in mijn geval niet, doordat de key niet zomaar iedere keer met 1 verhoogd kan worden. Het kan dus zijn dat alleen bestand 1,3 en 6 gebruikt worden.

Acties:
  • 0 Henk 'm!

Verwijderd

josvane schreef op dinsdag 28 april 2009 @ 17:30:
[...]


Dit was voor mij de oplossing, het simpelweg tellen kan in mijn geval niet, doordat de key niet zomaar iedere keer met 1 verhoogd kan worden. Het kan dus zijn dat alleen bestand 1,3 en 6 gebruikt worden.
Dan gebruik je toch een foreach loopje?

PHP:
1
2
3
4
5
6
7
8
9
<?php
foreach($_FILES['file'] as $file)
{
  if($file == een bestand)
  {
    //doe iets
  }
}
?>

[ Voor 14% gewijzigd door Verwijderd op 28-04-2009 17:34 ]


Acties:
  • 0 Henk 'm!

  • CodeCaster
  • Registratie: Juni 2003
  • Niet online

CodeCaster

Can I get uhm...

Creepy schreef op dinsdag 28 april 2009 @ 15:52:
Kan je niet gewoon arrays gebruiken?

https://oneerlijkewoz.nl
Op papier is hij aan het tekenen, maar in de praktijk...


Acties:
  • 0 Henk 'm!

  • Cartman!
  • Registratie: April 2000
  • Niet online
josvane schreef op dinsdag 28 april 2009 @ 17:30:
Het kan dus zijn dat alleen bestand 1,3 en 6 gebruikt worden.
Wat bedoel je met "gebruikt worden"? Volgens mij heb je nu een "oplossing" die je niet veel goed gaat doen om voortaan problemen op te lossen...
Pagina: 1