/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Søge i en komma sepereret fil
Fra : Jesper Andersen


Dato : 02-12-03 11:52

Hejsa.
Jeg har en komma sepereret fil, hvor strukturen ser således ud.

01.001,76
01.002,12
01.003,0
01.004,104

Nu vil jeg gerne lave en form hvor man kan indtaste fx. varenummeret,
og så få PHP til at søge efter den dette varenummer og derefter vise
antallet (felt2).

Jeg har helt styr på det hvis det havde været i MySQL, men har aldrig
rodet med tekstfiler før.
Nogen der har en ide til noget kode ?

Filen fylder ca. 250KB og indeholder 12500 linier.

Mvh
Jesper Andersen

 
 
Johan Holst Nielsen (02-12-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 02-12-03 12:04

Jesper Andersen wrote:

> Hejsa.
> Jeg har en komma sepereret fil, hvor strukturen ser således ud.
>
> 01.001,76
> 01.002,12
> 01.003,0
> 01.004,104
>
> Nu vil jeg gerne lave en form hvor man kan indtaste fx. varenummeret,
> og så få PHP til at søge efter den dette varenummer og derefter vise
> antallet (felt2).
>
> Jeg har helt styr på det hvis det havde været i MySQL, men har aldrig
> rodet med tekstfiler før.
> Nogen der har en ide til noget kode ?
>
> Filen fylder ca. 250KB og indeholder 12500 linier.

En ide...

<?php
$itemNo = '01.004';

$itemFile = './fooitems.txt';
$fp = fopen($itemFile, 'r');
while($line = fgetcsv($fp, 500, ',')) {
if($line[0]==$itemNo) {
//DEBUG BEGIN
echo '<pre>';
print_r($line);
echo '</pre>';
//DEBUG END
break;
}
}
fclose($fp);
?>


Så har du din linie i et array som hedder $line :)

mvh
Johan


Johan Holst Nielsen (02-12-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 02-12-03 12:07

Johan Holst Nielsen wrote:

> Jesper Andersen wrote:
>
>> Hejsa.
>> Jeg har en komma sepereret fil, hvor strukturen ser således ud.
>>
>> 01.001,76
>> 01.002,12
>> 01.003,0
>> 01.004,104
>>
>> Nu vil jeg gerne lave en form hvor man kan indtaste fx. varenummeret,
>> og så få PHP til at søge efter den dette varenummer og derefter vise
>> antallet (felt2).

Ups - læste vidst ikke ordentlig :D
Brug Peter Brodersen's løsning - eller sæt count på min ;) Troede blot
du skulle finde den første linie med varenummeret ;)

mvh
Johan


Peter Brodersen (02-12-2003)
Kommentar
Fra : Peter Brodersen


Dato : 02-12-03 12:07

On Tue, 02 Dec 2003 11:52:14 +0100, Jesper Andersen
<jaREMOVE@palby.dk> wrote:

>Jeg har en komma sepereret fil, hvor strukturen ser således ud.
>
>01.001,76
>01.002,12
>01.003,0
>01.004,104

"01.001" er varenummeret, og "76" er antallet?

>Jeg har helt styr på det hvis det havde været i MySQL, men har aldrig
>rodet med tekstfiler før.
>Nogen der har en ide til noget kode ?

file() æder en tekstfil ind i et array, linje for linje - den ville
være oplagt at bruge.

<?php
// utestet
$brugerinput = "01.004";

unset($fundetantal);
// erstat "vareliste.txt" med filnavnet
$data = file("vareliste.txt");
foreach($data AS $line) {
// fjern return i slutningen af linje
$line = trim($line);
list($varenr,$antal) = explode(",",$line);
if ($varenr == $brugerinput) {
// Vi har fundet varen. Gem værdi, og kig ikke
// flere linjer igennem
$fundetantal = $antal;
break;
}
}

if (isset($fundetantal)) {
print "Der er $fundetantal stk.";
} else {
print "Varen blev ikke fundet";
}
?>

>Filen fylder ca. 250KB og indeholder 12500 linier.

Hvis der ikke er så meget trafik, så skulle det nok ikke være et
problem at vente på. Er der mere pres på, eller skal løsningen skalere
til mange flere linjer, vil en database selvfølgelig kunne anbefales.

I ovenstående løsning kigges hver linje igennem, indtil man finder en
match. Under alle omstændigheder bliver hele filen læst ind.

--
- Peter Brodersen

Ugens sprogtip: skodder (og ikke skoder)

Jesper Andersen (02-12-2003)
Kommentar
Fra : Jesper Andersen


Dato : 02-12-03 12:56

Ups, jeg kom til at gi jer det forkerte format.

Formattet ser egentlig sådan her ud når det er automatiseret.

"01.001",45,0,23,0

dvs: (((45-0)+23)-0) = antal

Kan man rette koden til så man kan beregen dette antal.

Jeg vidste ikke lige at det automatiserede format ikke var det samme
som et manuelt udtræk.

Jesper Andersen

Jonas Delfs (02-12-2003)
Kommentar
Fra : Jonas Delfs


Dato : 02-12-03 13:13

"Jesper Andersen" <jaREMOVE@palby.dk> skrev i en meddelelse
news:4avosvckppvc3s8060u44g2ti9aqt3b23a@4ax.com...
> Ups, jeg kom til at gi jer det forkerte format.
>
> Formattet ser egentlig sådan her ud når det er automatiseret.
>
> "01.001",45,0,23,0
>
> dvs: (((45-0)+23)-0) = antal
>
> Kan man rette koden til så man kan beregen dette antal.
>
> Jeg vidste ikke lige at det automatiserede format ikke var det samme
> som et manuelt udtræk.

Tag Peter Brodersens script, og erstat følgende:

- list($varenr,$antal) = explode(",",$line);
+ list($varenr,$et,$to,$tre,$fire) = explode(",",$line);

- $fundetantal = $antal;
+ $fundetantal = $et-$to+$tre-$fire;

Vil jeg gætte på - det er dog ikke sikkert at sidste linie er korrekt, da
det af dit eksempel ikke fremgår hvilket 0 der er hvad i din udregning.
Dette vil jo have betydning i det øjeblik andet og fjerde tal ikke er ens.

--
Mvh. Jonas Delfs
Freelance webprogrammør: http://delfs.dk



Johan Holst Nielsen (02-12-2003)
Kommentar
Fra : Johan Holst Nielsen


Dato : 02-12-03 13:31

Jesper Andersen wrote:

> Ups, jeg kom til at gi jer det forkerte format.
>
> Formattet ser egentlig sådan her ud når det er automatiseret.
>
> "01.001",45,0,23,0
>
> dvs: (((45-0)+23)-0) = antal
>
> Kan man rette koden til så man kan beregen dette antal.
>
> Jeg vidste ikke lige at det automatiserede format ikke var det samme
> som et manuelt udtræk.

Er der altid

Varenummer,Antal+,Antal-,Antal+,Antal-

eller hvordan? Eller kan der være f.eks. en ekstra Antal+,Antal-?

mvh
Johan


Søg
Reklame
Statistik
Spørgsmål : 177559
Tips : 31968
Nyheder : 719565
Indlæg : 6408934
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste