Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

Verschillende HTML labels voor in PHP for loop

Pagina: 1
Acties:

  • Gusev
  • Registratie: December 2006
  • Laatst online: 20-11 05:15
Ik zit met een simpel probleempje waar ik niet uit kom.

Ik heb de volgende PHP variabele gedefinieerd:


PHP:
1
$nrofattachments="2";


Vervolgens heb ik in mijn HTML code zoiets staan:

HTML:
1
2
3
4
5
6
<?For($i=1;$i <= $nrofattachments; $i++) {?>
   <div class="form-group">
      <label for="attachments" class="control-label">Attachment(s)</label>
      <input name="attachment[]" type="file" id="attachments" size="30"/>
   </div>
<?}?>


Wat ik graag zou willen is verschillende labels voor de bijlagen, bv. CV en Motivatiebrief. Ik heb het al voor elkaar gekregen om dmv de teller 'i' een opvolgnummertje te geven aan Attachment(s). Maar helaas nog niet volledig verschillende labels.

  • Reinier
  • Registratie: Februari 2000
  • Laatst online: 18:13

Reinier

\o/

Je zou een array kunnen vullen met je verschillende labels, en dan met $labels[i] de juiste weergeven. Je zou dan ook je $nroffattachments weg kunnen laten en door je label-array kunnen loopen.

  • InZane
  • Registratie: Oktober 2000
  • Laatst online: 18:05
Sowieso raar dat je $nrofattachments declareert als String en vervolgens in je loop als Int gaat behandelen.

  • Hydra
  • Registratie: September 2000
  • Laatst online: 06-10 13:59
Als je al weet dat je verschillende invoervelden hebt snap ik het nut van die loop niet helemaal.

https://niels.nu


  • andydewit
  • Registratie: December 2013
  • Laatst online: 05-11-2024
PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$labels = array('CV', 'Motivatiebrief');

foreach($labels as $label) {
?>
    <div class="form-group"> 
        <label for="attachment-<?=$label?>" class="control-label">Attachment (<?=$label?>)</label> 
        <input name="attachment-<?=$label?>[]" type="file" id="attachment-<?=$label?>" size="30"/>
    </div>
<?php } ?>


Volgensmij kom je hiermee al een aardig eind. :)

[ Voor 7% gewijzigd door andydewit op 08-04-2014 10:46 ]


  • Gusev
  • Registratie: December 2006
  • Laatst online: 20-11 05:15
@ Reinier: nrofattachments is nu nodig omdat ik dezelfde variabele gebruik om de bijlagen in een e-mail te hangen.

@ Hydra: true, ik heb een bestaand scriptje genomen (phMailer) welke hier niet op voorbereid was.

@ andydewit: thanks, ik kom een heel eind, helaas worden de bijlagen nu niet meegestuurd met de email

PHP:
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
// Verify Attachment info
        If($nrofattachments > 0) {
            
            // Get the total size of all uploaded files
            If((array_sum($_FILES['attachment']['size'])) > ($max_file_total*1024)) {
                
                $error.="The max size allowed for all your files is ".$max_file_total."kb<br />";
                
            } Else {

                //Loop through each of the files
                For($i=0; $i <= $nrofattachments-1; $i++) {
                    
                    If($_FILES['attachment']['name'][$i]) {
    
                        //Check if the file type uploaded is a valid file type. 
                        If(!in_array(get_ext($_FILES['attachment']['name'][$i]), $allowtypes)) {
                            
                            $error.= "Invalid file type for your file: ".$_FILES['attachment']['name'][$i]."<br />";
                            
                        //Check the size of each file
                        } Elseif(($_FILES['attachment']['size'][$i]) > ($max_file_size*1024)) {
                            
                            $error.= "Your file: ".$_FILES['attachment']['name'][$i]." is to big.<br />";
                            
                        } // If in_array
                        
                    } // If Files
                    
                } // For
                
            } // Else array_sum($_FILES['attachment']['size'])
            
        } // If Nrofattachments


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
//Add attachments to message
        If($nrofattachments > 0) {
            
            For($i=0; $i <= $nrofattachments-1; $i++) {
                
                If($_FILES['attachment']['tmp_name'][$i]) {
                    
                    $message.=phattach($_FILES['attachment']['tmp_name'][$i], $_FILES['attachment']['name'][$i], $boundary);
                    
                } //If $_FILES['attachment']['name'][$i]
                
            } //For
            
        } // If


Ik heb al geprobeerd om een if statement voor de code van andydewit te zetten, maar kom er nog niet helemaal uit...

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Niet zomaar blind andermans code overnemen als je niet weet wat het doet. ;) De code van andydewit verandert de naam van je input dus je kunt ze niet meer op die manier uitlezen. Haal $label weg uit die name, of pas je code aan. Daar was je trouwens achter gekomen met een héél simpele debugstap: var_dump($_FILES); Zie ook Programming FAQ - Debuggen: hoe doe ik dat?

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Gusev
  • Registratie: December 2006
  • Laatst online: 20-11 05:15
Haha ik had niet zomaar een stukje code overgenomen, maar de hele 'library'. Maar bedankt, met jou tip had ik meteen door dat er gerefereerd wordt naar attachment-cv[] of attachment-motivatiebrief[] en niet meer naar attachment[].

In ieder geval hartstikke bedankt allemaal, het is niet makkelijk voor een frontend developer om even gauw een labeltje te veranderen......

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

En die verwijzing naar attachment-cv[] in PHP is niet nodig, dat kan gewoon attachment[] zijn. Je hebt alleen die andere label-verwijzingen nodig.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Gusev
  • Registratie: December 2006
  • Laatst online: 20-11 05:15
Uhm ik snap niet helemaal wat je bedoeld, ik heb nu dit als resultaat:

PHP:
1
2
3
4
5
6
7
8
9
10
<?php
$labels = array('CV', 'Motivatiebrief');

foreach($labels as $label) {
?>
    <div class="form-group"> 
        <label for="attachment-<?=$label?>" class="control-label"><?=$label?></label> 
        <input name="attachment[]" type="file" id="attachment-<?=$label?>" size="30"/>
    </div>
<?php } ?>

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 20-11 11:59

NMe

Quia Ego Sic Dico.

Dan snapte je dus toch wat ik bedoelde. ;)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


  • Gusev
  • Registratie: December 2006
  • Laatst online: 20-11 05:15
Lol, laten we het er maar op houden dat jouw post in ieder geval duidelijk was ;) ...

  • andydewit
  • Registratie: December 2013
  • Laatst online: 05-11-2024
Is het inmiddels gelukt?

  • Gusev
  • Registratie: December 2006
  • Laatst online: 20-11 05:15
Zekers! Met jouw voorstel en een kleine aanpassing van NMe is het gelukt. Tnx.
Pagina: 1