Avatar billede astalavista Nybegynder
26. juni 2001 - 00:23 Der er 9 kommentarer og
2 løsninger

vis indlæg ~ php

jeg har en database der er delt op således:

tabellen hedder dagbog.
| id | land | byen | overskrift | tekst | ip | dato | tid |

Det der skal vises på den ene side er:

land      byen      dato
      overskrift
        Teksten

Det skal se ud som det script på webcafe (gæstebogen).
det vil sige man skal kunne bladre frem og tilbage.
der skal kun være et indlæg på hver side.
og der skal være et link til \"den andenside\".

På den anden side, skal alle indlæg vises således:

dato    overskrift    land    by

og man skal naturligvis kunne trykke på teksten og komme til den første side, hvor man så kan bladre frem og tilbage så dato\'erne passer.

Jeg ved det er en forholdvis stor opgave, derfor point\'ene.

/A
Avatar billede yaief Nybegynder
26. juni 2001 - 01:13 #1
hmm - er det så kun min MySQL der har et hadefuldt forhold til felter med under 3 tegn?? =)
Avatar billede blackscorpion Nybegynder
26. juni 2001 - 02:58 #2
Først skal du hive id med ind på siden, så laver du et næstelink, hvor du sender id\'et med til scriptet.

mysql_query(\"select * from din_tabel where id=\'$id\'\");

Nor at lave næste linket skal du gøre sådan, og for at komme til den forrige side, kan du så bruge.

$forrig_id = $id - 1;
echo \"<a href=\\\"dit_script.php?id=$forrig_id\\\">

#################################################

for at lave det sådan at når brugeren er på det sidste indlæg skal du gøre således.

$resultat = mysql_query(\"select * from din_tabel\");

while($input = mysql_num_rows($resultat)) {
if($input < $id) {
  $id++;
  print \"<a href=\\\"dit_script.php?id=$id\\\">
}
}

Så skulle den meget gerne stoppe ved det sidste indlæg, sådan at brugeren ikke kan komme videre.
 


Avatar billede blackscorpion Nybegynder
26. juni 2001 - 02:58 #3
Damn, det skulle have været et svar.
Avatar billede astalavista Nybegynder
26. juni 2001 - 07:21 #4
er det muligt at du kan lave et færdigt script???

/A
Avatar billede astalavista Nybegynder
26. juni 2001 - 08:01 #5
the_speaker  det du fortæller er som godt nok, men det står også i \"gæstebogen fra webcafe\", det jeg skal bruge er et færdigt script*

/A
Avatar billede astalavista Nybegynder
26. juni 2001 - 08:33 #6
<?php

if(!$start_nr || $start_nr < 0) {
        $start_nr = 0;
}

function top($titel) {

        $html = \"<html><head><title>Dagbog</title><link rel=\\\"stylesheet\\\" type=\\\"text/css\\\" href=\\\"admin/gbog-ting/stil.css\\\"></head><body>
                <h2>$titel</h2>\";

        return $html;(\'<p align=\"center\"><img border=\"0\" src=\"../pictures/titel.gif\" width=\"292\" height=\"50\"></p>\');
}

$sql = \"select id, land, byen, overskrift, tekst, ip, date_format(dato, \'%y-%m-%d\'), date_format(dato, \'%h:%m:%s\') as tiden, besked from dagbog order by dato desc limit $start_nr, $antal_ad_gangen\";
$taeller_sql = \"select count(*) as antal from dagbog\";

function aabn_forbindelse_og_vaelgdb() {
  $server = \"xxxxx\";
  $bruger = \"xxxxx\";
  $kodeord = \"xxxxx\";
  $database = \"xxxxx\";

  if (!mysql_connect(\"$server\",\"$bruger\",\"$kodeord\")) {
    udskriv_fejl(\"Kunne ikke oprette en forbindelse til MySQL.\");
  }

  if(!mysql_select_db(\"$database\")) {
    udskriv_fejl(\"Kunne ikke vælge databasen: $database\");
  }
}

function sql_spoerg_og_faa_svar($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl(\"Kunne ikke udføre: <em>$query</em>\");
  }

  while($raekke = mysql_fetch_array($resultat)) {
    $resultat_array[] = $raekke;
  }

  return $resultat_array;
}

function sql_spoerg($query) {
  $resultat = mysql_query($query);

  if(!$resultat) {
    udskriv_fejl(\"Kunne ikke udføre: <em>$query</em>\");
  }
}

function luk_forbindelse() {
  if(!mysql_close()) {
    udskriv_fejl(\"Kunne ikke lukke forbindelsen til MySQL!\");
  }
}

function udskriv_fejl($fejl) {
  echo \"<p>$fejl\";

  if ($mysql_fejl = mysql_error()) {
    echo \"<br>Fejlen er: <em>$mysql_fejl</em>\";
  }

  exit;
}

aabn_forbindelse_og_vaelgdb();
$resultat = sql_spoerg_og_faa_svar($sql);
$optaelling = sql_spoerg_og_faa_svar($taeller_sql);
luk_forbindelse();

#
# Så går vi igang med at bygge navigationen
# Først bruger vi extract til at få $antal ud til behandling.
# Vi looper ikke igennem resultatet, da vi ved der kun er een række,
# så vi tilgår den direkte ved $optaelling[0].
#

extract($optaelling[0]);

#
# Skal der laves et links til flere indlæg?
#

if($antal > ($start_nr + $antal_ad_gangen)) {

        $naeste_start_nr = $start_nr + $antal_ad_gangen;
        $naeste_nav = \"<a href=\\\"$PHP_SELF?start_nr=$naeste_start_nr\\\">N&aelig;ste</a>\";

} else {

        $naeste_nav = \"<span class=\\\"doedt-link\\\">N&aelig;ste</span>\";

}

#
# Skal der laves link til forrige indlæg?
#

if($start_nr > 0 && ($start_nr - $antal_ad_gangen) < $antal) {

        $forrige_start_nr = $start_nr - $antal_ad_gangen;
        $forrige_nav = \"<a href=\\\"$PHP_SELF?start_nr=$forrige_start_nr\\\">Forrige</a>\";

} else {

        $forrige_nav = \"<span class=\\\"doedt-link\\\">Forrige</span>\";

}

#
# Her sætter vi det hele sammen i en tabel vi kan bruge til at sætte ind på siden.
#

$nav = \"<center><table width=\\\"$tabel_bredde\\\" border=\\\"0\\\" cellpadding=\\\"5\\\" cellspacing=\\\"0\\\">
        <tr><td align=\\\"left\\\" width=\\\"33%\\\">$forrige_nav</td>
        <td align=\\\"center\\\" width=\\\"34%\\\"></td>
        <td align=\\\"right\\\" align=\\\"33%\\\">$naeste_nav</td></tr>
        </table></center>\";

#
# Og skriver tabellen ud med det samme:
#

echo \"$nav <p />\";

#
# Her begynder det egentlig interesante - vi looper os igennem de enkelte indlæg
# og skriver dem ud til skærmen.
#
# Hvis forespørgslen ikke har returneret nogle resultater, springer vi alt dette over.
#

if(count($resultat) < 1) {

  echo \"<center>Der er ingen indl&aelig;g i dagbogen</center>\";

} else {

  for($i=0;$i<count($resultat);$i++) {

        #
        # Med extract får vi smidt værdierne i variabler
        #

        extract($resultat[$i]);

        #
        # Vi brugte addslashes() da vi lagde tingene i databasen så for at få det til
        # at se læseligt ud, fjerne vi dem igen med stripslashes()
        #

        $besked = stripslashes($besked);
        $navn = stripslashes($navn);
        $epost = stripslashes($epost);

        #
        # Hvis der ikke må bruges HTML fjerner vi lige alle tags med htmlentities()
        #

        if($html_p != \"t\") {
                $navn = htmlentities($navn);
                $epost = htmlentities($epost);
                $besked = htmlentities($besked);
        }

        #
        # For at vi får linjeskift i HTML også, bruger vi nl2br til at skifte alle \\n
        # ud med <br>

        $besked = nl2br($besked);

        #
        # Vi laver et simpelt check: Hvis eposten indeholder et snabel-a, så laver
        # vi det til en mailto:
        #
        # Dette er dog ingen garanti for, at eposten er gyldig.
        #

        if(ereg(\"@\", $epost)) {
                $navn = \"<a href=\\\"mailto:$epost\\\">$navn</a>\";
        }

        #
        # Så er alt klart til browseren og vi spytter en tabel ud med denne besked.
        # Hvis du vil ændre markant i udseendet af din gæstebog, så er det
        # i blokken herunder det foregår. Du skal bare beholde de givne navne i
        # <input>-tagsene.
        #
        # Vi hopper lige ud af PHP-mode lidt, så vi er fri for at escape alle gåseøjnene.
        #

?>
    <center>
        <table width=\"<?php echo $tabel_bredde; ?>\" cellpadding=\"1\" cellspacing=\"0\" border=\"0\">
                <tr><td class=\"gbog-baggrund\" width=\"100%\" align=\"center\">

                        <table border=\"0\" cellpadding=\"8\" cellspacing=\"0\" width=\"100%\">
                                <tr><td class=\"gbog-top\" width=\"100%\">Skrevet af: <strong><?php echo $land; ?></strong>, <?php echo $dato; ?></td></tr>
                        </table>

                </td></tr><tr><td class=\"gbog-baggrund\" align=\"center\" width=\"100%\">

                        <table border=\"0\" cellpadding=\"8\" cellspacing=\"0\" width=\"100%\">
                                <tr><td class=\"gbog-bund\" width=\"100%\">
                                <?php echo $tekst; ?>
                                <p align=\"right\"></p></td></tr>
                        </table>

                </td></tr>
        </table><p />
</center>

<?php

  #
  # Vi hopper tilbage i PHP-mode.
  #
  # Her slutter loopet og PHP springer tilbage og går hele turen igennem med den næste
  # besked. Når der ikke er flere indlæg i denne omgang går PHP videre.
  #

  }

  #
  # Endelig skriver vi frem- og tilbage-links på i bunden af siden også.
  #

  echo $nav;

  #
  # Her slutter if-else-konstruktionen der fanger, om der er nogle indlæg overhovedet.
  #

}

#
# Og spytter den sidste stump HTML ud.
#

function bund() {

        $html = \"</body></html>\";

        return $html;

}

?>

-------------------------------------

så er jeg selv gådet igang!!! men jeg støder på nogle problemer ved denne:

$sql = \"select id, land, byen, overskrift, tekst, ip, date_format(dato, \'%y-%m-%d\'), date_format(dato, \'%h:%m:%s\') as tiden, besked from dagbog order by dato desc limit $start_nr, $antal_ad_gangen\";
$taeller_sql = \"select count(*) as antal from dagbog\";

kan en eller anden hjælpe, p.s. det er ikke færhvis jeg skal give 550 når jeg selv er gådet igang, men giver gerne 250 point til den der kan hjælpe mig til at mit ejet script kommer til at virke*

/A
Avatar billede astalavista Nybegynder
26. juni 2001 - 09:04 #7
glemte lige denne oppe i toppen!!!
Avatar billede astalavista Nybegynder
26. juni 2001 - 09:05 #8
$antal_ad_gangen = 1;
Avatar billede astalavista Nybegynder
26. juni 2001 - 14:16 #9
lukker og slukker!!!
Avatar billede astalavista Nybegynder
26. juni 2001 - 14:17 #10
for forsøget ;-)

/A
Avatar billede blackscorpion Nybegynder
26. juni 2001 - 19:46 #11
den med tiden, det ville være mere smart hvis du bare brugte dato som \"text\" i mysql databasen, og så kan du bruge php indbyggede time(): \"mener den hedder time\" og det kan du så formatere med date(\"d-m-Y - h-m-s\");

- The Speaker.
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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