|
| 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
| |
|
|