webForumDet fria alternativet

Räkna antal e-vykort

20 svar · 357 visningar · startad av sorhh

sorhhMedlem sedan dec. 2002536 inlägg
#1

Jag är rätt så ny i PHP-världen men ni förstår nog.

Så här ser det ut i "textdatabasen" som ligger utanför www-roten:
->

mailadress1@regerar.com¦¦mailadress2@regerar.com¦¦Namn1¦¦Namn2¦¦NUMMER¦¦Meddelande¦¦Session-kod

<-

Hur gör jag för att räkna antal gånger tex. 50 finns i "fältet" NUMMER? Det borde väl gå?
Så här skriver jag ut NUMMER

<?php echo"$data[4]"; ?>

Detta är alltså för att kunna räkna antal gånger ett e-vykort är skickat. http://www.regerar.com/e-kort/ekortstart.php

Blir glad för lite hjälp!

rIkLuNdMedlem sedan feb. 2003169 inlägg
#2

Har NUMMER olika värden för varje rad i "databasen", eller finns det bara 1 rad i den??

sorhhMedlem sedan dec. 2002536 inlägg
#3

Det är blir en ny rad för varje e-kort som skickas. Dvs. en massa olika värden.

rIkLuNdMedlem sedan feb. 2003169 inlägg
#4

gör nåt som det här:

// ladda filen
$load = file("databas.txt");
// loopa igenom datan
for($i = 0; $i < count($load); $i++)
{
   // splitta den!
   $data = explode("||",$load[$i]);
   // räkna det nummer som finns i den här raden!
   $number[$data[4]]++;
}

// låt oss kolla på resultatet
echo "<pre>\n";
print_r($number);
echo "</pre>\n";
sorhhMedlem sedan dec. 2002536 inlägg
#5

Ok tack, men exakt var ska jag skriva tex. 43 för att kolla hur många gånger det är skickat?

rIkLuNdMedlem sedan feb. 2003169 inlägg
#6
echo $number[43];
sorhhMedlem sedan dec. 2002536 inlägg
#7
<?php
// ladda filen
$load = file("databasen.txt");
// loopa igenom datan
for($i = 0; $i < count($load); $i++)
{
   // splitta den!
   $data = explode("||",$load[$i]);
   // räkna det nummer som finns i den här raden!
   $number[$data[4]]++;
}

// låt oss kolla på resultatet
echo "<pre>\n";
print_r($number);
echo "</pre>\n";
?>

<?php
echo $number[43];
?>

Förlåt om jag är lite efter. Är det såhär du menar?

Det här blir resultatet: http://www.regerar.com/e-kort/antal.php

rIkLuNdMedlem sedan feb. 2003169 inlägg
#8

det verkar som att det inte funkar... *hmm* är det verkligen || som separerar värdena från varandra??

sorhhMedlem sedan dec. 2002536 inlägg
#9

Nja, det är ¦¦ fast det kanske inte är nån skillnad.

rIkLuNdMedlem sedan feb. 2003169 inlägg
#10

den här borde fungera:

// ladda filen
$load = file("databas.txt");
// loopa igenom datan
for($i = 0; $i < count($load); $i++)
{
   // splitta den!
   $data = explode("¦¦",$load[$i]);
   // räkna det nummer som finns i den här raden!
   $number[$data[4]]++;
}

// låt oss kolla på resultatet
echo "<pre>\n";
print_r($number);
echo "</pre>\n";

ändrade || till ¦¦

sorhhMedlem sedan dec. 2002536 inlägg
#11

Det funkade felfritt, tack så mycket!
Kanske återkommer senare ang. en e-kortstopplista ;)

rIkLuNdMedlem sedan feb. 2003169 inlägg
#12

gör det... :birp

sorhhMedlem sedan dec. 2002536 inlägg
#13

:birp

sorhhMedlem sedan dec. 2002536 inlägg
#14

Det verkar funka riktigt fint det här. Men hur gör jag om jag vill ha en 0:a när kortet inte har skickats nån gång alls.
Försökte knåpa lite själv med if osv. men det gick inge bra.

Kanske nån som kan hjälpa mej? :OO

rIkLuNdMedlem sedan feb. 2003169 inlägg
#15

finns de raderna inte i databasen eftersom de aldrig skickats?

sorhhMedlem sedan dec. 2002536 inlägg
#16

Nej, det blir en ny rad för varje skickat e-kort. Själva e-korten finns inte i nån databas.
När ett kort inte är skickat står det ingenting. Kan man byta ut ingenting mot en nolla?

rIkLuNdMedlem sedan feb. 2003169 inlägg
#17

vad menar du med ingenting? att det kortets id inte finns med i $number, eller vad menar du?

sorhhMedlem sedan dec. 2002536 inlägg
#18

exakt

rIkLuNdMedlem sedan feb. 2003169 inlägg
#19

då skulle du kunna ha alla korten som finns i t ex "kort.txt" så att den ser ut så här med kortens id på varje rad:
1
2
3
4
etc...

// ladda filen
$load = file("databas.txt");
// loopa igenom datan
for($i = 0; $i < count($load); $i++)
{
   // splitta den!
   $data = explode("¦¦",$load[$i]);
   // räkna det nummer som finns i den här raden!
   $number[$data[4]]++;
}

// låt oss nu kolla vilka kort som inte skickats!
// ladda filen!
$kort = file("kort.txt");
// loop
for($j = 0; $j < count($kort); $j++)
{
   // kolla om den har skickats någon gång
   if($number[$kort[$j]] > 0)
   {
      // japp, det hade den...
      continue;
   }
   else
   {
      // nej, det hade det inte...
      $number[$kort[$j]] = 0;
   }
}

// låt oss kolla på resultatet
echo "<pre>\n";
print_r($number);
echo "</pre>\n";
sorhhMedlem sedan dec. 2002536 inlägg
#20

Tackar, ska prova det ikväll!

267 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
125 ms — hämta forumlista (db)
131 ms — hämta statistik (db)
134 ms — hämta tråd, inlägg och bilagor (db)