2017-07-11 6 views
0

Ich erhalte zwei Felder als Array Bild und seine Farbe, HTML ist:Wie mehrere Felder in einer Variablen in PHP serialisiert

<div class="form-group"> 
    <input type="file" name="images[source][]" class="form-control input-lg"> 
    <input type="text" name="images[color][]" class="form-control input-lg"> 
</div> 

Und PHP ist

$images=array(); 
if(isset($_FILES['images']) && sizeof($_FILES['images']['source']) > 0) 
{ 
    foreach($_FILES['images']['source'] as $index=>$source) 
    { 
     if(!empty($source) && !empty($_POST['images']['color'][$index])) 
     { 
      $images[]=array('source'=>$source,'color'=>$_POST['images']['color'][$index]); 
     } 
    } 
    if(sizeof($images) > 0) 
    { 
     $data['images']=$N['images']=serialize($images); 
    } 

} 

Aber Wenn Sie auf "Senden" klicken, gibt es kein Ergebnis für die Bildquelle, aber die Bildfarbe wird angezeigt ... Jede Hilfe wird dankbar sein.

Antwort

0

Versuchen Sie dies: Sie verwenden $ source als eine Variable, während ich es nirgendwo deklariert sehe. Ich habe es geändert.

$images=array(); 
if(isset($_FILES['images']) && sizeof($_FILES['images']['source']) > 0) 
{ 
    foreach($_FILES['images']['source'] as $index=>$source) 
    { 
     if(!empty($_POST['images']['source'][$index]) && !empty($_POST['images']['color'][$index])) 
     { 
      $images[]=array('source'=>$_POST['images']['source'][$index],'color'=>$_POST['images']['color'][$index]); 
     } 
    } 
    if(sizeof($images) > 0) 
    { 
     $data['images']=$N['images']=serialize($images); 
    } 

} 
0

Hey Kumpel Sie den Namen Schlüssel im $_FILES Objekt fehlen. Sie müssen das auch überprüfen. Hier ist der aktualisierte Code.

<?php 
$images=array(); 
if(isset($_FILES['images']) && sizeof($_FILES['images']['name']['source']) > 0) 
    // name is present before source, you need to add that part 
{ 
    foreach($_FILES['images']['name']['source'] as $index=>$source) 
    { 
     if(!empty($source) && !empty($_POST['images']['color'][$index])) 
     { 
      $images[]=array('source'=>$source,'color'=>$_POST['images']['color'][$index]); 
     } 
    } 
    if(sizeof($images) > 0) 
    { 
     $data['images']=$N['images']=serialize($images); 
    } 
} ?> 

Hoffe, das hilft!

+0

großer Antwort aber der Arbeit meines Code jetzt ohne Namen als Bilder Eingangsnamen nur die Änderung [ ] und für Farbe ist es Farbe [] –

+0

Nun, ich dachte, Sie müssten die Bilder und Farben in der gleichen Anordnung erfassen, also habe ich meine Lösung entsprechend gerahmt. Wenn Sie etwas wie die Flexibilität erwähnt hätten, um die Bilder und Farben in einem separaten Array zu erfassen, hätte ich das auch früher vorgeschlagen.Glück Sie haben Ihren Fehler gelöst! –

0

Dank für meinen Code Hilfe Jungs nun mit HTML arbeiten:

<input type="file" name="images[]"> <input type="text" name="color[]">

PHP:

$array_serialize = array(); 
     if (!empty($_FILES['image'])){ 
      $files = $_FILES['image']; 
      $images = $files['name']; 
      foreach($images as $index=>$image) 
      { 
       if(!empty($image) && !empty($_POST['color'][$index])) 
       { 
        $array_serialize[]=array('image'=>$image,'color'=>$_POST['color'][$index]); 
       } 
      } 
      $N['images'] = serialize($array_serialize); 
     }