Avatar billede birkmc Nybegynder
18. februar 2014 - 12:40 Der er 7 kommentarer og
1 løsning

Læse/hente specifik info fra celle i excel til en eksisterende drop downmenu i php

Jeg håber en af jer kan hjælpe mig :)

Jeg har en php side der indeholder en drop downmenu med tekststykker man kan vælge imellem.
For ikke at skulle ind i php-filen hver gang for at tilføje tekststykker til drop downmenuen vil jeg gerne blot kunne tilføje nye tekststykker i nye celler i en excelfil, således at dropdownmenuen får sit indhold direkte fra excelfilen.

Mon nogen kan hjælpe mig med en 1-2-3-vejledning?
Avatar billede Slater Ekspert
18. februar 2014 - 14:08 #1
Med Excel-fil mener du forhåbentlig CSV format (comma separated values), og ikke en af Excels native filer, som er binær og svær at læse?

Med en CSV er det ret nemt, i hvert fald til en flad menu.
Du kan f.eks. have en menus.csv der ser sådan ud:

"Menu 1","destination1"
"Menu 2","destination2"
"Menu 3","destination3"

Og så i PHP skrive:

$fh = fopen('menus.csv', 'r');
while ($menu = fgetcsv($fh))
  echo '<a href="', $menu[1] ,'">', $menu[0] ,'</a><br>';


- Hvis det skal virke til en drop-down med flere niveauer, skal vi nok lige høre nærmere, hvordan den ser ud.
Avatar billede birkmc Nybegynder
18. februar 2014 - 14:40 #2
Ja, da. Tror sagtens CSV format kan gøre arbejdet da den jo kan redigeres i excel :)
Vil lige teste PHP-koden.
Det er en drop down med forskellige <option value>, så tror ikke der er flere niveauer men blot flere valgmuligheder.
Koden ser således ud og er skabt af DreamWeaver:

<form id="form1" name="form1" method="post" action="">
  <label for="Test">Tester</label>
  <select name="Test" id="Test">
    <option value="Bil1">Bil</option>
    <option value="Bil2">Bil nr 2</option>
  </select>
</form>

Hvordan skal koden du foreslog placeres så den henter 'label for' og 'option values "Bil1" og "bil" osv i csv-filen?
Avatar billede Slater Ekspert
18. februar 2014 - 15:15 #3
Ah, den slags drop-down. Undskyld, jeg troede du mente en du selv havde lavet med elementer, ikke en <select>. My bad.

Jamen så er det bare f.eks.

<select name="blabla">
<?php

$fh = fopen('menus.csv', 'r');
while ($menu = fgetcsv($fh))
  echo '<option value="', $menu[1] ,'">', $menu[0] ,'</option>';

?>
</select>
Avatar billede birkmc Nybegynder
20. februar 2014 - 14:49 #4
Fantastisk! Ok :) :) :)
Nå, men så ønsker jeg at fortsætte lidt:

Den drop down jeg efter ovenstående anvisninger har lavet, skal indeholde fx. varer som har et varenummer. Jeg ønsker dog ikke at drop down skal vise varenummer, men kun varetekst.

Hvis jeg skriver i to kollonner, fx i en excelfil , adskilles varenummer og vare med ; (semikolon) og begge dele vises i dropdown i kun en linie:
1020;Æbler 1030;Pærer 1040;Bananer 1050;Nødder

Hvordan laver jeg indholdet i CSV'en (via excel) således at kun varetekst vises, men at både varenummer og varetekst registreres i den outputfil jeg genererer med "Send"-knappen(der allerede virker fint)? -og så jeg kan vælge imellem de forskellige varer i drop down og ikke blot i -en linie?
Avatar billede birkmc Nybegynder
20. februar 2014 - 14:51 #5
Avatar billede Slater Ekspert
20. februar 2014 - 17:22 #6
Jeg er ikke helt sikker på, jeg forstår hvad du vil have. Beklager.

Jeg kan naturligvis godt se problemet her, at det står på én linje - men det er jo bare fordi den fil du gemmer som bruger semikolon, som du også selv siger. Det kan nemt rettes ved at bruge

while ($menu = fgetcsv($fh, 0, ';'))

i stedet for

while ($menu = fgetcsv($fh))

- Så er der også lidt problemer med tegnsæt, men det er sandsynligvis fordi din menufil ikke er gemt i UTF-8, som du bruger på siden.

Andet er jeg ikke helt med på. Kan du beskrive nærmere?
Avatar billede birkmc Nybegynder
25. februar 2014 - 09:51 #7
Aha :) Det virkede således at jeg nu kun får en tekst frem, nemlig den tekst der står først: 1020
Dvs, der kommer ikke en linie i drop down for resten af varerne som findes i CSV'en.

Jeg har nok ik forklaret mig godt nok - tak fordi du hænger på alligevel :)

Det jeg ønsker er at have et excel ark med to kollonner (eller en CSV med tekst før og efter et semikolon).
Én kollonne med varenumre og en anden med varenavne. Kollonnen med varenavne ønsker jeg vist på min php-side via drop down. Jeg ønsker altså ikke varenumrene vist i drop down i første omgang.

1020;Æbler
1030;Pærer
1040;Bananer
1050;Nødder

Når en vare så er valgt og der trykkes send får bruger resultatet/ en kvittering og hér skal så både barenummeret og varenavnet vises.
Avatar billede Slater Ekspert
08. marts 2014 - 20:55 #8
Hov, nu fik jeg en email om denne tråd, men havde slet ikke set, at du havde skrevet før. Det må du virkelig undskylde. Har du fået løst dine problemer?
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester