Upload data i eksisterende mySql fra et ODS ark

Jeg har en tabel i mySql som jeg gerne vil kunne poppulere med data fra OpenOffice regneark.
Regnearket indeholder ikke nødvendigvis alle felter som findes i tabellen.
Blandt andet er der et autoincrementeret felt på tabellen, som ikke er i regnearket. Der er også timestamp-felter på tabellen som ikke er i regnearket. De felter som ikke er i regnearket, skal blot initieres med blank eller det som er defineret på tabellen som standardværdi.
Eksempel på tabel:
id (autoincrement) - er aldrig i regnearket
nr - altid i regneark
beskrivelse - altid i regneark
antal - kan være i regneark
holdbarTil (timestamp) - er aldrig i regnearket
Eksempel på regneark (som jeg gætter på at den ser ud ved import):
1, letmælk i store flasker, 5, 2016-12-10-14.55.33.123456
2, videofilm med fiskeeventyr, 3
3, æbler,, 2017-12-24-17.33.44.123456
Det vil selvfølgelig være fedest at det foregår på en admin side på mit site, men det kan selvfølgelig også være via mySql admin.
Jeg glæder mig til at høre om der er nogle gode forslag eller eksempler til hvordan jeg kan løse opgaven.
Mvh. Jens Peter

Hejsa
Hvis du i OpenOffice eksportere dit regneark til et CSV-format, kan du nemt arbejde med data herfra i PHP.
Det kan enten ske vha. f.eks. PHPs egne CSV-funktioner som http://php.net/manual/en/function.str-getcsv.php
Der findes også awesome færdige klasser du kan benytte til CSV-håndtering: https://github.com/parsecsv/parsecsv-for-php
Der findes også klasse til at arbejde med .ods filer, men det er ikke nogle jeg har testet eller leget med: https://sourceforge.net/projects/ods-php/
Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

#1
Hej Daniel
Det ser meget spændende ud med parsecsv-for-php
Jeg kan dog ikke finde ud af hvordan jeg refererer til de enkelte koloners indhold.
Jeg har brugt eksemplet:
<table border="0" cellspacing="1" cellpadding="3">
<tr>
<?php foreach ($csv->titles as $value): ?>
<th><?php echo $value; ?></th>
<?php endforeach; ?>
</tr>
<?php foreach ($csv->data as $key => $row): ?>
<tr>
<?php foreach ($row as $value): ?>
<td><?php echo $value; ?></td>
<?php endforeach; ?>
</tr>
<?php endforeach; ?>
</table>
Men det udskriver jo blot hele linien med alle kolonner, jeg vil jo gerne have fat i indholdet af hver linies kolonner så jeg kan udføre en insert på min tabel...
Jeg kan ikke finde noget dokumentation på hvordan jeg skal bruge parsecsv-for-php og heller ikke et eksempel på hvordan jeg gør det jeg ønsker... Kan du mon lede på på vej ;-)
Mvh. Jens Peter

Det er nu lykkedes mig at få PHPs egne funktioner til at virke, det er jo super fedt.
Hvis du skulle lave et gennemløb af et directory på serveren som eks. har følgende indhold:
1.jpg
2.jpg
2_1.jpg
2_2.jpg
3.jpg
.
.
.
100.jpg
100_1.jpg
- og du vil tælle antal filer inden for hvert billede, altså:
billed 1 findes i 1 udgave
billed 2 findes i 3 udgaver
billed 3 findes i 2 udgaver
.
.
.
billed 100 findes i 2 udgaver
Hvordan ville du så gøre det i PHP?
Mvh. Jens Peter

Hej Peter,
Du bedes markere dette spørgsmål som løst, og oprette en ny forumtråd med dit nye spørgsmål, så er vi klar til at hjælpe dig
Hvis du har lyst, må du rigtig gerne dele løsningen på CSV-problemet med os andre herinde, så alle kan få glæde af den viden du har tilegnet dig.
Ps. Super fedt at du selv fandt frem til løsningen, den bedre måde at lære på, er ofte ved selv at lege og prøve.
Redigeret af
@db
d. 31.10.2016 kl. 07:51 Med venlige hilsner Daniel Bahl (@db)
CEO – v5.dk ApS

Jeg endte med følgende løsning...
<?php
include("app.php");
$app = new minAwesomeApp;
$file = fopen("../admin/uploads/Ting.csv","r");
while(! feof($file))
{
$linie = fgetcsv($file,0,";");
$app->DatabaseInsert( "ting", array('tingId','tingNr','beskrivelse'), array($linie[0], $linie[1], $linie[2]));
}
fclose($file);
?>
Her tager jeg bare de første 3 elementer i hver regnearks-række og inserter dem i tabellen.

#5
Hej Daniel
Hermed gjort :-)
Det er fuldstændig rigtigt, at den bedste måde at lære er ved at prøve selv. Men når jeg står helt blank og skal igang, har jeg brug for intro (gerne et eksempel) til at komme igang.
Tak for hurtig og seriøs hjælp.