Avatar billede kimox Nybegynder
21. april 2011 - 22:13 Der er 15 kommentarer og
2 løsninger

hjælp til array

Hej eksperter.

Jeg håber i kan hjælpe mig færdig..

Jeg har lavet følgende:
            <?
            $aarstal = array();
            $detteaar = date("Y");
            $aarstalquery = mysql_query("SELECT dato FROM nyhed");
            while($aarstalrow = mysql_fetch_assoc($aarstalquery)) {
            $dato = $row['dato'];
            $aardelt = substr($dato, -4);
              array_push($aarstal, $aarstalrow['aar']);
            }
            for($i = count($aarstal)-1; $i >= 0; $i--) {
              echo $aarstal[$i];
            }
            ?>

som jeg skal bruge til en arkiv funktion.. dvs jeg skal have lavet sådan at scriptet henter års tallene som der ligger nyheder for. (i min database står $dato som f.eks: 21/04-2011)

kan i hjælpe mig færdig? jeg er godt nok gået i stå... :-(
Avatar billede repox Seniormester
21. april 2011 - 22:15 #1
Du skal starte med at lave dit datoformat om til en standard så MySQL kan søge i det - og du kan bruge det til at sortere i - alternativet er at lave noget snavs i din mysql forespørgsel.
Avatar billede kimox Nybegynder
21. april 2011 - 22:19 #2
der ligger over 350 nyheder jeg skal til at lave om i dato hvis jeg gør det første, samt andet kildekode der skal ændres.

Håber på alternativ løsning medhjælp fra f.eks. $aardelt = substr($dato, -4);

Kan en hjælpe med kildekode,? :-(
Avatar billede repox Seniormester
21. april 2011 - 22:39 #3
Et minimalt arbejde for en optimal løsning, godt nok... Men dig om det...
Avatar billede kimox Nybegynder
21. april 2011 - 22:41 #4
Det eneste jeg skal bruge årstallet til, er en sql query som kun går ind og henter de nyheder som er fra det angivet år. Så det er kun for at få liste funktionen jeg skal bruge det.
Avatar billede repox Seniormester
21. april 2011 - 22:50 #5
SELECT * FROM nyhed WHERE RIGHT(dato, 4) = '2010'
Avatar billede tjens Nybegynder
21. april 2011 - 22:51 #6
Kan du ikke beskrive hvad din kode skal gøre pr. linie?

Jeg er nemlig ikke helt med:
- Hvor kommer $row fra. Den bliver pludselig brugt, men hvor dannes den?
- Hvorfor putter du noget i $aardelt, når det ikke bliver brugt senere?
- $aarstalrow['aar'] vil vel ikke virke, når der kun er felt 'dato' på select?


I øvrigt burde du kunne lave en sql, der kun giver de relevante årstal tilbage, hvis du kombinerer substring og distinct.
Dermed er din array ikke nødvendig.
Avatar billede kimox Nybegynder
21. april 2011 - 22:54 #7
okay, kan du give et eksempel på sidst nævnte?

koden som jeg har lavet er ved at samle lidt forskelligt, jeg er desværre ikke særlig god til array, men måske det med mysql kunne være en ide
Avatar billede tjens Nybegynder
21. april 2011 - 23:18 #8

  SELECT DISTINCT RIGHT( dato, 4 ) AS aar
  FROM  nyhed
  ORDER BY aar
 


Jeg tror at det "forskelligt" du har samlet ikke passer sammen:
Du skal lige rette det til. Kig på mine spørgsmål i #6
Avatar billede kimox Nybegynder
21. april 2011 - 23:18 #9
Repox: Jeg kan godt se ideen i den du skrev, men jeg skal have
en php kode til at lave en liste med links i.

f.eks:
Jeg har 4 datoer:
28/01-2001
30/05-2002
01/06-2010
15/07-2010

så skal listen se sådan ud når den echo's:
<a href=.... >2001 (antal: 1)
<a href=.... >2002 (antal: 1)
<a href=.... >2010 (antal: 2)

hvis i forstår?

mvh
Avatar billede tjens Nybegynder
21. april 2011 - 23:22 #10
#8: Denne sql giver også antal:

  SELECT DISTINCT RIGHT( dato, 4 ) AS aar, COUNT( * ) AS antal
  FROM nyhed
  GROUP BY aar
  ORDER BY aar

Avatar billede kimox Nybegynder
21. april 2011 - 23:23 #11
tjens: Det kan sagtens være det ikke passer sammen :-) det var også kun en test for at se om jeg kunne klare det selv, men det gik ik så godt :-/ - men den skal kunne det som jeg skrev i #8
Avatar billede kimox Nybegynder
21. april 2011 - 23:44 #12
hvad gør jeg forkert.. har følgende kode nu:

            <?
            $aarstal = mysql_query("SELECT DISTINCT RIGHT(dato, 4) AS aar, COUNT( * ) AS antal FROM nyhed GROUP BY aar ORDER BY aar");
            $resultatet = mysql_query( $aarstal ) or die( mysql_error() );
            while ( $aarskoll = mysql_fetch_array( $resultatet ) ) {
              echo  "År: " .$aarskoll['aar'] ." Antal " .$aarskoll['antal'] ."<br>";
            }
            ?>

og den melder tilbage:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Resource id #9' at line 1
Avatar billede kimox Nybegynder
21. april 2011 - 23:46 #13
glem det.. klokken er ved at være mange hehe ... har 2 stk. query .. den skal selvfølgelig se sådan ud:

            <?
            $aarstal = "SELECT DISTINCT RIGHT(dato, 4) AS aar, COUNT( * ) AS antal FROM nyhed GROUP BY aar ORDER BY aar";
            $resultatet = mysql_query( $aarstal ) or die( mysql_error() );
            while ( $aarskoll = mysql_fetch_array( $resultatet ) ) {
              echo  "År: " .$aarskoll['aar'] ." Antal " .$aarskoll['antal'] ."<br>";
            }
            ?>
Avatar billede kimox Nybegynder
21. april 2011 - 23:57 #14
smid et svar begge
Avatar billede tjens Nybegynder
21. april 2011 - 23:59 #15
Svar
Avatar billede repox Seniormester
22. april 2011 - 00:03 #16
hep
Avatar billede kimox Nybegynder
22. april 2011 - 00:13 #17
tusind tak for jeres hjælp.

Det var rart at få styr på. - god påske

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