Avatar billede axel21 Juniormester
25. november 2006 - 16:57 Der er 5 kommentarer og
1 løsning

Hjælp til script.

Har dette script:

<?

if ($_GET = "varegrp=1");
{
$lines = array();
$data = file_get_contents ("varekatalog.csv");
$arr = explode("\n", $data);
foreach($arr as $value) {
    $lines[] = explode(";", $value);
}
foreach($lines as $line) {
    echo $line[0].'<br>';
   
}
}
else {
    echo "Bad choice";
}

?>



Vil gerne at den læser fra URL'en som kan se sådan ud: http://localhost/php/Vis_varegruppe.php?varegrp=1.

Hvis det der står i URL'en er det samme skal den skrive noget ud fra en csv fil. Men den skal også kunne skrive flere rækker, kan kun få den til at skrive en enkelt??
Avatar billede showsource Seniormester
25. november 2006 - 18:24 #1
Rækker, det er vel linier i filen?

<?php

$lines = file ("varekatalog.csv");

$linier = array();
foreach($lines as $value) {

    $linier[] = explode(";", $value);

}

    for($i = 0; $i < count($linier); $i++) {
    echo $linier[$i][0]."<br />\r\n";
 
    }
?>
Avatar billede coderdk Praktikant
26. november 2006 - 05:57 #2
Du lader også til at ville parse en CSV, prøv at kigge på fgetcsv(): http://dk.php.net/fgetcsv
Avatar billede coderdk Praktikant
26. november 2006 - 05:59 #3
I øvrigt, hvis en URL ser sådan ud: http://localhost/php/Vis_varegruppe.php?varegrp=1
Så er $_GET['varegrp'] == 1 - Hvis du vil checke hele url'en efter ? så er det $_SERVER["QUERY_STRING"]
Avatar billede axel21 Juniormester
26. november 2006 - 19:19 #4
Syntes ikke rigtigt at det øverste script virker efter hensigten..Ikke en der kan lave hele scriptet, så man kan sortere efter hvad der står i URL'en og vise mere en en række...

Her et udsnit af min CSV fil..

Varegruppe;Varenummer;Navn;Beskrivelse;Pris;Tilbud;Lager
1;1017025938;AFBR OPUS HV 1P AFBR OPUS HV;Opus;73,50;;34
1;1017026173;AFBR OPUS HV KRONE AFBR OPUS HV;Opus;56,89;;453
1;1017025996;AFBR OPUS HV KORR AFBR OPUS HV;Opus;43,88;;656
1;1017026144;AFBR OPUS HV KORR DOBBELT AFBR OPUS HV;Opus;35,00;;7658
1;1017026209;AFBR OPUS HV KRYDSNING AFBR OPUS HV;Opus;25,67;;9
1;1017026050;AFBR OPUS HV KORR LAMPE 2SLF AFBR OPUS ;Opus;129,50;;879
1;1017026995;BL’NDD’KSEL OPUS HV 1M BL’NDD’KSEL O;Opus;43,97;;43
1;1017026351;STIKDSE OPUS HV LMJ STIKDSE OPUS;Opus;91,45;;345
1;1017032251;STIKDSE OPUS66 HV 2xLMJ PLF STIKDSE ;Opus;35,01;;4878
1;1017031537;STIKDSE OPUS HV 3xLMJ PLF STIKDSE ;Opus;34,14;;54
1;1017025200;STIKDSE OPUS HV 2xLMJ UDV STIKDSE ;Opus;32,45;;545
1;1017032251;STIKDSE OPUS HV 3xLMJ UDV STIKDSE ;Opus;65,36;;46
1;1017031537;PANELSTIKK OPUS HV LMJX2 PANELSTIKK HV;Opus;49,31;;76856
1;1017027567;PANELSTIKK OPUS HV LMJX3 STIKK PANEL;Opus;43,31;;6346
1;1017033742;UNDERLAG OPUS66 HV 2M 34MM UNDERLAG ;Opus;68,30;;7754
2;1017035818;Afbryder 1-POL Hvid;Fuga;65,43;;54
2;1017036134;Afbryder krydsning;Fuga;87,43;;658567
2;1017036095;Afbryder krone;Fuga;94,50;;54
2;1017036053;Afbryder korrespondance for n›gle med sl›jfeklemme;Fuga;13,90;;6457
2;1017036011;Afbryder korrespondance dobbelt;Fuga;37,38;;6587
2;1017035973;Afbryder korrespondance;Fuga;43,85;;6745765
2;1017035931;Afbryder 2-pol 440 V;Fuga;35,80;;76543
2;1017035892;Afbryder 1-pol med sl›jfeklemme;Fuga;41,79;;3453
2;1017035850;Afbryder 1-pol med lampe 230V;Fuga;64,78;;53
2;1017036778;Stikkontakt 2-pol afbryder med jord;Fuga;37,94;;676
2;1017036736;Stikkontakt, dobbelt med 1-pol afbryder;Fuga;26,40;;58
2;1017036697;Stikkontakt med 1-pol afbryder 2-pol;Fuga;25,12;;65
2;1017036613;Stikkontakt med 1-pol afbryder EDB 2-pol med jord;Fuga;81,53;;37646
2;1017036574;Stikkontakt med 1-pol afbryder 2-pol med jord;Fuga;72,46;;6
2;1017036493;Stikkontakt EDB 1« modul med LED-lampe 230 V 2-pol med jord;Fuga;99,99;;86565
3;300;;;;;
Avatar billede coderdk Praktikant
26. november 2006 - 21:37 #5
hehe kunne ikke dy mig :P

<?php

    $fp = fopen( "DIN_CSV_FIL.csv", "r" );
    $varer = array();
    $header = array();
    while ( $tmp = fgetcsv( $fp, 8192, ";" ) )
    {
        if ( count( $header ) == 0 )
        {
            $header = array_map( "strtolower", $tmp );
        }
        else
        {
            $varer[] = $tmp;
        }
    }
    $header = array_combine( array_values( $header ), array_keys( $header ) );
    $_SORTBY = ( !empty( $_GET['sortby'] ) ? $_GET['sortby'] : '' );
    if ( $_SORTBY != '' )
    {
        if ( array_key_exists( $_SORTBY, $header ) )
        {
            $_SORTBY = $header[$_SORTBY];
        }
        else
        {
            $_SORTBY = 0;
        }
    }
    else
    {
        $_SORTBY = 0;
    }
    $_REVERSE = ( !empty( $_GET['reverse'] ) ? 1 : 0 );
   
    function cmp( $a, $b )
    {
        global $_REVERSE;
        global $_SORTBY;
        if ( $a[$_SORTBY] == $b[$_SORTBY] )
        {
            return 0;
        }
        if ( $_REVERSE )
        {
            return ( $a[$_SORTBY] > $b[$_SORTBY] ? -1 : 1 );
        }
        else
        {
            return ( $a[$_SORTBY] < $b[$_SORTBY] ? -1 : 1 );
        }
    }

    usort( $varer, "cmp" );
   
    function ufilter( $val )
    {
        global $_FIELD;
        global $_FILTERVAL;
        return ( $val[$_FIELD] == $_FILTERVAL );
    }
   
    if ( !empty( $_GET['filter'] ) )
    {
        list( $field, $value ) = explode( "=", $_GET['filter'] );
        if ( array_key_exists( $field, $header ) )
        {
            $_FIELD = $header[$field];
            $_FILTERVAL = $value;
            $tmp = array_filter( $varer, "ufilter" );
            $varer = $tmp;           
        }
    }
   
    echo "<table><tr>";
    foreach ( $header as $key => $val )
    {
        echo "<th>$key</th>";
    }
    echo "</tr>";
    foreach( $varer as $vare )
    {
        echo "<tr>";
        foreach ( $vare as $felt )
        {
            echo "<td>$felt</td>";
        }
        echo "</tr>";
    }

?>

Den modtager i URL'en variablene: sortby=feltnavn og reverse=1 (hvis sorteringen skal være omvendt), og filter=feltnavn=værdi altså:

http://dinhost.dk/script.php?sortby=lager&reverse=1&filter=varegruppe=2

Viser alle varer i varegruppe 2 sorteret efter lagerantal i faldende orden
Avatar billede coderdk Praktikant
26. november 2006 - 21:38 #6
(Hvis du prøver at sortere på pris, får du ikke det du forventer, da det er en streng og ikke et tal, du har som pris ;) - forstået på den måde at kommatal skal være i formatet 123123.75 og ikke 123123,75)
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