I am trying to read a csv file to assign my mysql fields to the fields that the csv brings and to be able to select them from a form with a select.
At the moment I read the csv and I convert it into an associative array with this:
$registros = array();
if (($fichero = fopen($RutaDocumentos.'/'.$_POST["Destino"].".csv", "r")) !== FALSE) { //abrimos el csv y lo leemos
// Lee los nombres de los campos
$nombres_campos = fgetcsv($fichero, 0, ",", "\"", "\"");
$num_campos = count($nombres_campos);
// Lee los registros
while (($datos = fgetcsv($fichero, 0, ",", "\"", "\"")) !== FALSE) { // Crea un array asociativo con los nombres y valores de los campos
for ($icampo = 0; $icampo < $num_campos; $icampo++) { $registro[$nombres_campos[$icampo]] = $datos[$icampo]; }
// Añade el registro leido al array de registros
$registros[] = $registro;
}
fclose($fichero);
} //cerramos la lectura del csv
This generates me the associative array that contains the csv data. in this case when doing a var_dump it shows me this:
array(4) { [0]=> array(1) { ["Campo 1;Campo 2;Campo 3;Campo 4;Campo 5;Campo 6;Campo 7;Campo 8;Campo 9;Campo 10;Campo 11;Campo 12;Campo 13;Campo 14;Campo 15;Campo 16;Campo 17;Campo 18;Campo 19;Campo 20;Campo 21;Campo 22;Campo 23;Campo 24;Campo 25;Campo 26;Campo 27;Campo 28;Campo 29"]=> string(424) "Buy Electrical Direct;http://www.be-direct.co.uk;01/06/2005 04:46:48;Stoves 60cm Wide Dual Fuel Cooker;61DFDO;Stoves 60cm Wide Dual Fuel Cooker;16488;Stoves;61DFDO;;;GBP;0.00;583.99;0.00;;http://www.kqzyfj.com/click-1679007-10385498?url=http%3A%2F%2Fwww.be-direct.co.uk%2FproductDetails.asp%3Freferer%3Dcommissionjunction%26id%3D16488;http://www.awltovhc.com/image-1679007-10385498;;Cooking (cookers and microwaves);;;;;;;;;" } [1]=> array(1) { ["Campo 1;Campo 2;Campo 3;Campo 4;Campo 5;Campo 6;Campo 7;Campo 8;Campo 9;Campo 10;Campo 11;Campo 12;Campo 13;Campo 14;Campo 15;Campo 16;Campo 17;Campo 18;Campo 19;Campo 20;Campo 21;Campo 22;Campo 23;Campo 24;Campo 25;Campo 26;Campo 27;Campo 28;Campo 29"]=> string(528) "Buy Electrical Direct;http://www.be-direct.co.uk;01/06/2005 04:46:48;Hotpoint Ultima 60cm Gas Cooker with Sandstone Finish;EG73T;Hotpoint Ultima 60cm Gas Cooker with Sandstone Finish;16122;Hotpoint;EG73T;;;GBP;0.00;473.99;0.00;;http://www.tkqlhce.com/click-1679007-10385498?url=http%3A%2F%2Fwww.be-direct.co.uk%2FproductDetails.asp%3Freferer%3Dcommissionjunction%26id%3D16122;http://www.lduhtrp.net/image-1679007-10385498;http://www.be-direct.co.uk/additional/product_images/id16122.jpg;Cooking (cookers and microwaves);;;;;;;;;" } [2]=> array(1) { ["Campo 1;Campo 2;Campo 3;Campo 4;Campo 5;Campo 6;Campo 7;Campo 8;Campo 9;Campo 10;Campo 11;Campo 12;Campo 13;Campo 14;Campo 15;Campo 16;Campo 17;Campo 18;Campo 19;Campo 20;Campo 21;Campo 22;Campo 23;Campo 24;Campo 25;Campo 26;Campo 27;Campo 28;Campo 29"]=> string(548) "Buy Electrical Direct;http://www.be-direct.co.uk;01/06/2005 04:46:48;Hotpoint 60cm Electric Ceramic/Halogen Hob with Sandstone Finish;EW83T;Hotpoint 60cm Electric Ceramic/Halogen Hob with Sandstone Finish;16390;Hotpoint;EW83T;;;GBP;0.00;503.99;0.00;;http://www.tkqlhce.com/click-1679007-10385498?url=http%3A%2F%2Fwww.be-direct.co.uk%2FproductDetails.asp%3Freferer%3Dcommissionjunction%26id%3D16390;http://www.tqlkg.com/image-1679007-10385498;http://www.be-direct.co.uk/additional/product_images/id16390.jpg;Cooking (cookers and microwaves);;;;;;;;;" } [3]=> array(1) { ["Campo 1;Campo 2;Campo 3;Campo 4;Campo 5;Campo 6;Campo 7;Campo 8;Campo 9;Campo 10;Campo 11;Campo 12;Campo 13;Campo 14;Campo 15;Campo 16;Campo 17;Campo 18;Campo 19;Campo 20;Campo 21;Campo 22;Campo 23;Campo 24;Campo 25;Campo 26;Campo 27;Campo 28;Campo 29"]=> string(516) "Buy Electrical Direct;http://www.be-direct.co.uk;01/06/2005 04:46:48;Hotpoint 60cm Gas Cooker with Polar White Finish;GW62P;Hotpoint 60cm Gas Cooker with Polar White Finish;16402;Hotpoint;GW62P;;;GBP;0.00;495.99;0.00;;http://www.dpbolvw.net/click-1679007-10385498?url=http%3A%2F%2Fwww.be-direct.co.uk%2FproductDetails.asp%3Freferer%3Dcommissionjunction%26id%3D16402;http://www.tqlkg.com/image-1679007-10385498;http://www.be-direct.co.uk/additional/product_images/id16402.jpg;Cooking (cookers and microwaves);;;;;;;;;" } }
The fact is that now I want to select what puts field 1, field 2, etc to put it in a select for the user to select what is each thing.
I'm not sure how to do it and for the moment I've done this:
<select name="ImportarCsv_Nombre" id="ImportarCsv_Nombre" placeholder="Seleccionar Articulo">
<?php for ($i = 0; $i < $num_campos; $i++) { echo "<option value='$i'>".$nombres_campos[$i]."</option>"; }
?>
</select>
The problem is that it puts all the fields on the same line instead of separating them by option.
Am I doing well on this line or am I complicating my life and could I do otherwise easier?