Avatar billede mr-buchwald Nybegynder
30. maj 2009 - 14:17 Der er 5 kommentarer og
2 løsninger

Gør noget andet, hvis nået til det sidste resultat fra en mysql_query

Hejsa!

Jeg ville høre, om det er muligt at få php til at gøre noget andet, hvis den er nået til det sidste resultat i en mysql_query.

F.eks.
   
  $query = sprintf("
        SELECT *
        FROM `data`
        ");

    $result = mysql_query($query);

    while ($row = mysql_fetch_assoc($result)) {
      $hejsa = $row['data'];

      og hvis sidste resultat, skal den f.eks. gøre dette:
      $hejsa = $row['data'] . " er enden på tabellen.";
}

I den forbindelse har jeg også et andet spørgsmål.

Jeg har en kalender, hvor der er gemt en masse arrangementer, som den også henter ned via. en kode lign. den ovenstående.

Her kunne jeg bare tænke mig at få indelt arrangementerne i måneder med en overskrift over den første fremkomst af hver måned. Hvordan kan det lade sig gøre?

På forhånd tak!
Mvh.
Mr. B
Avatar billede ebusiness Nybegynder
30. maj 2009 - 17:59 #1
Først og fremmest, du har postet et stykke meningsløs kode som bare overskriver en variabel for hver række, det er lidt meningsløst at arbejde med. Hvis du vil have et rigtigt svar skal du poste rigtig kode.

I det her tilfælde tror jeg nok at du bare kan lave tilføjelsen efter din while løkke. Ellers kan du bruge mysql_num_rows til at finde ud af hvor mange rækker der er.

Mht. månedsoverskrifte, lav to variable, måned og årstal, i enden af løkken opdaterer du dem med data fra den aktuelle række, i starten af løkken tjekker du om måned og år er det samme som sidste række, hvis ikke laver du en overskrift.
Avatar billede mr-buchwald Nybegynder
31. maj 2009 - 09:18 #2
Ja, den er så meningsløs, som den nu kan være...

Her er den faktiske situation: (hvorfor jeg ikke skrev den fra starten af er mig en gåde)

$query = sprintf("
        SELECT *
        FROM `data`
        ");

    $result = mysql_query($query);

    while ($row = mysql_fetch_assoc($result)) {
      echo "[" . $row['data'] . "],";

    Det sidste resultat skal ikke have kommaet efter ]
      echo "[" . $row['data'] . "]";
}

Ang. månedsoverskrifter:
Kan du ikke give et eksempel ud fra f.eks. denne, hvor data smides ud i en tabel:

<table>
  <tr>
    <td>
      Dato
    </td>
    <td>
      Arrangement
    </td>
  </tr>

<?php

$query = sprintf("
        SELECT *
        FROM `kalender`
        ");

    $result = mysql_query($query);

    while ($row = mysql_fetch_assoc($result)) {
echo "
  <tr>
    <td>
      " . $row['dato'] . "
    </td>
    <td>
      " . $row['arrangement'] . "
    </td>
  </tr>";

}

?>

</table>
Avatar billede ebusiness Nybegynder
31. maj 2009 - 11:37 #3
Du kan bare lade være med at skrive et komma før det første [

$query = sprintf("
        SELECT *
        FROM `data`
        ");

    $result = mysql_query($query);

    $row = mysql_fetch_assoc($result);
    echo "[" . $row['data'] . "]";
    while ($row = mysql_fetch_assoc($result)) {
        echo ",[" . $row['data'] . "]";
    }

Smp. 2: Vis mig lige dit datoformat, så behøver jeg ikke at bruge pseudokode.
Avatar billede mr-buchwald Nybegynder
31. maj 2009 - 12:11 #4
Spm. 1:
Det virker bare! SUPER :D

Spm. 2:
I databasen står datoer i dette format:
2009-05-31

Men når datoerne hentes ind i kalenderen på siden (tabellen vist i foregående kommentar) omskrives de vha.

$format = strtotime($row['dato']);
$startdato = date("d/m Y", $format);

Dvs. 31/05 2009
Avatar billede ebusiness Nybegynder
31. maj 2009 - 13:22 #5
Ok, det ser ud til at du igen har skrevet en simplificering af din kode, du har udeladt koden hvor du omformaterer datoen, så følgende skal sikkert tilpasses lidt.

<table>
  <tr>
    <td>
      Dato
    </td>
    <td>
      Arrangement
    </td>
  </tr>

<?php

$query = sprintf("
        SELECT *
        FROM `kalender`
        ");

    $result = mysql_query($query);
    $glformat="";
    while ($row = mysql_fetch_assoc($result)) {
    $format = strtotime($row['dato']);
    $maaned=date("m Y", $format);
    if($maaned!=$glmaaned){
        echo "<tr><th colspan='2'>$maaned</th></tr>"
    }
    $glmaaned=$maaned;
    $startdato = date("d/m Y", $format);
echo "
  <tr>
    <td>
      " . $row['dato'] . "
    </td>
    <td>
      " . $row['arrangement'] . "
    </td>
  </tr>";

}

?>

</table>
Avatar billede ebusiness Nybegynder
31. maj 2009 - 13:23 #6
Og der var lige en fejl, sådan her:

<table>
  <tr>
    <td>
      Dato
    </td>
    <td>
      Arrangement
    </td>
  </tr>

<?php

$query = sprintf("
        SELECT *
        FROM `kalender`
        ");

    $result = mysql_query($query);
    $glmaaned="";
    while ($row = mysql_fetch_assoc($result)) {
    $format = strtotime($row['dato']);
    $maaned=date("m Y", $format);
    if($maaned!=$glmaaned){
        echo "<tr><th colspan='2'>$maaned</th></tr>"
    }
    $glmaaned=$maaned;
    $startdato = date("d/m Y", $format);
echo "
  <tr>
    <td>
      " . $row['dato'] . "
    </td>
    <td>
      " . $row['arrangement'] . "
    </td>
  </tr>";

}

?>

</table>
Avatar billede mr-buchwald Nybegynder
31. maj 2009 - 13:33 #7
Beklager mine mange simplificeringer... ;)

Tusind tak for din hjælp og din tid!!!

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