PHP - uprava scriptu

Programovacie jazyky, rady, poradňa...
mjz
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 134
Registrovaný: 25 nov 2007, 14:20
Bydlisko: Bardejov

PHP - uprava scriptu

Príspevok od používateľa mjz »

Zdravim,

mám kód ktorému dám CSV súbor a on mi z dát ktoré sa v ňom nachádzajú vyhodí druhý CSV súbor so štruktúrou ktorú potrebujem.

Je to vlastne súbor s rôznymi adresami. Ja to potrebujem importovať do GLS systému. Každá adresa má svoj riadok.

A ja potrebujem aby na prvom riadku bolo vždy toto:

Kód: Vybrať všetko

odosielatelPSC;odosielatelUlica;odosielatelCislo;
Ak to vložím do funkcie while tak to mám na každom druhom riadku za každou adresou.

PHP kód:

Kód: Vybrať všetko

<?php

$file = fopen($_FILES['file']['tmp_name'], 'r+');
$data = array();
$header = null;
while ($row = fgetcsv($file)) {
    if ($header === null) {
        $header = $row;
        continue;
    }
    $data[] = array_combine($header, $row);
}
$i = 0;
$count = count($data);

header("Content-Type: text/csv");
header("Content-Disposition: attachment; filename=mojnovysubor.csv");
header("Cache-Control: no-cache, no-store, must-revalidate");
header("Pragma: no-cache");
header("Expires: 0");

while ($i < $count) {


  $mycsv = 
  $data[$i]['psc'] . ";" .
  $data[$i]['ulica'] . ";" .
  $data[$i]['cislo'] . ";" .
  "\r\n";
  ++$i;
  
   echo iconv('UTF-8', 'Windows-1250', $mycsv);
}
Vedel by mi niekto pomôcť? Tento PHP kód som len zdedil a nevyznám sa v tom.

Ďakujem
Hensym
VIP
VIP
Používateľov profilový obrázok
Príspevky: 6978
Registrovaný: 24 apr 2011, 0:53
Bydlisko: Zvolen

Re: PHP - uprava scriptu

Príspevok od používateľa Hensym »

Za predpokladu, že ten kód funguje a stačí ti pridať prvý riadok s názvami stĺpcov, malo by stačiť keby presne PRED ten druhý while cyklus (čiže za definíciu PHP headerov) hodíš echo prvého riadku s odriadkovaním na konci:

Kód: Vybrať všetko

echo "odosielatelPSC;odosielatelUlica;odosielatelCislo;\r\n";
mjz
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 134
Registrovaný: 25 nov 2007, 14:20
Bydlisko: Bardejov

Re: PHP - uprava scriptu

Príspevok od používateľa mjz »

Funguje to super.

Ďakujem.
mjz
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 134
Registrovaný: 25 nov 2007, 14:20
Bydlisko: Bardejov

Re: PHP - uprava scriptu

Príspevok od používateľa mjz »

Ešte som narazil na ďalšiu vec.

Dajme tomu, že chcem spočítať súčet všetkých hodnôt z $data[$i]['cislo']

Skúšal som to nejak pozliepať ale stále mi vypísalo len hodnotu prvého.

Funguje mi to len v tomto prípade:

$testSucet = $data[0]['cislo']+$data[1]['cislo']+$data[2]['cislo'];

Čo je blbosť pretože tam môže byť aj 50 riadkov.
Hensym
VIP
VIP
Používateľov profilový obrázok
Príspevky: 6978
Registrovaný: 24 apr 2011, 0:53
Bydlisko: Zvolen

Re: PHP - uprava scriptu

Príspevok od používateľa Hensym »

Pred "while ($i < $count) {" daj:

Kód: Vybrať všetko

$sum = 0;
a dovnutra toho while, na zaciatok, daj:

Kód: Vybrať všetko

$sum += $data[$i]['cislo'];
Uplne na konci (po zbehnuti celeho toho while cyklu) budes mat sucet ulozeny v $sum a mozes si ho niekde vypisat.
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP - uprava scriptu

Príspevok od používateľa *****HERO***** »

alebo len na koniec toho celeho

Kód: Vybrať všetko

$sum = array_sum(array_column($data, 'cislo'));
mjz
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 134
Registrovaný: 25 nov 2007, 14:20
Bydlisko: Bardejov

Re: PHP - uprava scriptu

Príspevok od používateľa mjz »

Hensym takto nejak som to skúšal a nešlo to.

HEROve riešenie funguje.

Ďakujem obom.
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP - uprava scriptu

Príspevok od používateľa *****HERO***** »

musi fungovat aj Hensymove, keby si to spravil presne a nie "takto nejak" :) ale osobne radsej pouzijem tie nativne array funkcie vzdy ked sa daju
mjz
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 134
Registrovaný: 25 nov 2007, 14:20
Bydlisko: Bardejov

Re: PHP - uprava scriptu

Príspevok od používateľa mjz »

"Takto nejak" som myslel to, že pred tým som to podobne skúšal.

Hensymove som zadal presne ako písal. Môže to byť aj tým, že tú premennú $sum som používal nad cyklom while?
*****HERO*****
Guru wannabe
Guru wannabe
Používateľov profilový obrázok
Príspevky: 2446
Registrovaný: 08 máj 2006, 1:34

Re: PHP - uprava scriptu

Príspevok od používateľa *****HERO***** »

tu premennu sum pred cyklom vynulujes, takze nemoze to byt tym, ze si ju pouzival niekde predtym

takto by to malo vyzerat Hensymove riesenie komplet:

Kód: Vybrať všetko

$sum = 0;
while ($i < $count) {
  $sum += $data[$i]['cislo'];
  $mycsv = 
  $data[$i]['psc'] . ";" .
  $data[$i]['ulica'] . ";" .
  $data[$i]['cislo'] . ";" .
  "\r\n";
  ++$i;
  
   echo iconv('UTF-8', 'Windows-1250', $mycsv);
}

echo 'a tu mame nasu sumu: ' . $sum;
mjz
Medium Expert
Medium Expert
Používateľov profilový obrázok
Príspevky: 134
Registrovaný: 25 nov 2007, 14:20
Bydlisko: Bardejov

Re: PHP - uprava scriptu

Príspevok od používateľa mjz »

Ja $sum pouzivam nad while ($i < $count) {

takze preto mi to asi neslo.
Hensym
VIP
VIP
Používateľov profilový obrázok
Príspevky: 6978
Registrovaný: 24 apr 2011, 0:53
Bydlisko: Zvolen

Re: PHP - uprava scriptu

Príspevok od používateľa Hensym »

Samozrejme, veď vtedy ešte nie je naplnené hodnotami. :)
Napísať odpoveď