Avatar billede vixmix Nybegynder
12. august 2004 - 09:03 Der er 29 kommentarer og
2 løsninger

Korte nyheder

Hej Eksperter

Jeg håber i lige kan hjælpe mig med et lille spørgsmål.

Jeg har et nyheds script som skriver en nyhed på en hjemme side.. så langt er jeg nået.

Men nu kommer problemet, jeg skal have delt nyheden ! den skal evt. skrive 60 bogstaver og så laver den "...." efter det ord eller bogstav den deler sig ved.. og så skal der komme et link som hvor der står "Læs mere her" linket kan evt. bare hedde det samme som nyheds id'et.

Jeg håber virkelig i kan hjælpe. Jeg har siddet længe med det.

her er noget af scriptet:

<?php
require("db.php");
?>
            <?
$result = mysql_query("select * from druknyhed order by id DESC");
while($row = mysql_fetch_array($result)) {

echo"<td><tr><font face=Arial size=2 color=FFFFFF><b><a href=\"mailto:$row[mail]\">$row[navn]</a> - $row[dato]</b><br>  - $row[msg]</td></tr>\n</br></font>";

}
?>
            <?
mysql_close();
?>
Avatar billede sukos Juniormester
12. august 2004 - 09:08 #1
echo substr($row["msg"], 0, 60) ."...";

Og så kan id jo bruges til linket,
echo"<a href=\"fil.php?id=". $row["id"] ."\">læs mere</a>";
Avatar billede sukos Juniormester
12. august 2004 - 09:09 #2
druknyhed? Lyder ellers lovende :O)
Avatar billede sukos Juniormester
12. august 2004 - 09:26 #3
<?php
require("db.php");

$result = mysql_query("SELECT `id`, `mail`, `navn`, `dato`, LEFT(msg, 60) as `text` FROM `druknyhed` ORDER BY `id` DESC");
while($row = mysql_fetch_array($result)) {

echo"<tr>\n";
echo"<td><font face=Arial size=2 color=FFFFFF><b><a href=\"mailto:". $row["mail"] ."\">". $row["navn"] ."</a> - ". $row["dato"] ."</b><br>\n";
echo $row["text"] ."... <a href=\"visdruk.php?id=". $row["id"] ."\">L&aelig;s mere</a></font></td>\n";
echo"</tr>";

}
?>
            <?
mysql_close();
?>
Avatar billede vixmix Nybegynder
12. august 2004 - 09:54 #4
Hehe ja det lyder godt ikke.. :P..

hvad skal jeg skrive i visdruk.php :(?
Avatar billede Slettet bruger
12. august 2004 - 09:58 #5
Der skal du så have noget ala:

<?php
require("db.php");

$result = mysql_query("SELECT `id`, `mail`, `navn`, `dato`, `msg` FROM `druknyhed` WHERE id = '$_GET[id]');
$row = mysql_fetch_array($result);

echo"<table><tr>\n";
echo"<td><font face=Arial size=2 color=FFFFFF><b><a href=\"mailto:". $row["mail"] ."\">". $row["navn"] ."</a> - ". $row["dato"] ."</b><br>\n";
echo $row["text"] ."</font></td>\n";
echo"</tr></table>";

?>
Avatar billede Slettet bruger
12. august 2004 - 09:59 #6
disse funktioner er brugt på utallige sider, men er ekstremt gode. Har også en gang selv brugt dem, men ikke mere. Skriver nemlig ikke så lange nyheder :)
Avatar billede vixmix Nybegynder
12. august 2004 - 10:00 #7
der skal bare stå det samme uden LEFT(msg, 60) så ?

sidder lige og lære det sammen med så jeg ikke skal stille spg. igen hehe.
Avatar billede vixmix Nybegynder
12. august 2004 - 10:02 #8
wollsen. Det er nemlig det. Så bliver forsiden ikke total proppet med det kun nyheder.. mega træls at se på osv.
Avatar billede sukos Juniormester
12. august 2004 - 10:03 #9
Du bør nok også lige tjekke om id er sat, og om der rent faktisk er et row i DB'en som svarer til satte id
Avatar billede Slettet bruger
12. august 2004 - 10:04 #10
Det er altid en god ide at lære det man spørger om. Hvem ved, man bliver måske klogere :o)

Ja i bund og grund. Men for at lære mere omkring den enkelte nyhed, skal det vel også kun være den der bliver vist. Derfor skal du ikke bruge ORDER BY `id` DESC.
Istedet skal vi kun hente en nyhed, ved at sige: WHERE id = `$_GET[id]`

Når der nu kun hentes en nyhed, behøver du ikke køre det igennem en while løkke, så derfor fjernede jeg også den.

Men det var blot et skud i tågen om hvordan du ville have det, og for at du kunne se metoden i det.
Avatar billede vixmix Nybegynder
12. august 2004 - 10:08 #11
Jeg har lige et spørgsmål mere.

Jeg har 2 sider som jeg gerne vil høre om man kunne forkorte til 1 side.

de ligner meget hinanden, de ser sådan her ud:

Dette her script bruger jeg til at lave den nyeste nyhed som skal stå et andet sted end de andre.

<?php
require("db.php");
?>
<?
if($navn  && $msg) {
//Hvis  variablerne $nick og $msg er registrered så skal følgende kode eksekveres

$tid = date("d/m Y - H:i");
$navn = htmlentities($navn);
$msg = htmlentities($msg);
//Giver mulighed for at man kan bruge < og > i teksten

mysql_query("insert into nyhed(id, navn, msg, mail, dato, ip)             
values ('','$navn','$msg','$mail','$tid','$REMOTE_ADDR')");
//indsætter data ind i databasen

}
//Afslutter if sætningen
?>
<form action="nynyh.php" method="post">
  <table width="16%" border="0" cellspacing="0" cellpadding="0" height="158" align="center" class="tekst_normal">
    <tr>
      <td width="51%">Admin:<font color="#000000"></font><font color="#000000" size="1">:</font></td>
      <td width="332"><b>
        <?=$PHP_AUTH_USER?>
        </b><font size="2">
        <input type="hidden" name="navn" size="20" value="<?=$PHP_AUTH_USER?>">
        </font></td>
    </tr>
    <tr>
      <td width="51%">Mail:</td>
      <td width="49%"><font size="2">
        <input type="text" name="mail" size="20" maxlength="200" class="box">
        </font></td>
    </tr>
    <tr>
      <td width="51%">Nyhed<font size="2">:</font></td>
      <td width="49%"><font size="2">
        <textarea name="msg" cols="20" class="box" rows="5"></textarea>
        </font>
    </tr>
    <tr>
      <td colspan="2">
        <div align="center"><font size="2">
          <input type="submit" value="Send Nyhed" name="submit" class="submit">
          </font></div>
      </td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2">
        <div align="center" onClick="MM_openBrWindow('sletnynyh.php','NyhedSlet','scrollbars=yes,width=500,height=500')" class="cursor">[Slet
          nyheder her] </div>
      </td>
    </tr>
  </table>
  <div align="center">
    <?
mysql_close();
?>

og dette her script er til at lave de små andre nyheder.

<?php
require("db.php");
?>
<?
if($navn  && $msg) {
//Hvis  variablerne $nick og $msg er registrered så skal følgende kode eksekveres

$tid = date("d/m Y - H:i");
$navn = htmlentities($navn);
$msg = htmlentities($msg);
//Giver mulighed for at man kan bruge < og > i teksten

mysql_query("insert into nyheder(id, navn, msg, mail, dato, ip)             
values ('','$navn','$msg','$mail','$tid','$REMOTE_ADDR')");
//indsætter data ind i databasen

}
//Afslutter if sætningen
?>
<form action="nyhed.php" method="post">
  <table width="16%" border="0" cellspacing="0" cellpadding="0" height="158" align="center" class="tekst_normal">
    <tr>
      <td width="51%">Admin:<font color="#000000"></font><font color="#000000" size="1">:</font></td>
      <td width="332"><b>
        <?=$PHP_AUTH_USER?>
        </b><font size="2">
        <input type="hidden" name="navn" size="20" value="<?=$PHP_AUTH_USER?>">
        </font></td>
    </tr>
    <tr>
      <td width="51%">Mail:</td>
      <td width="49%"><font size="2">
        <input type="text" name="mail" size="20" maxlength="200" class="box">
        </font></td>
    </tr>
    <tr>
      <td width="51%">Nyhed<font size="2">:</font></td>
      <td width="49%"><font size="2">
        <textarea name="msg" cols="20" class="box" rows="5"></textarea>
        </font>
    </tr>
    <tr>
      <td colspan="2">
        <div align="center"><font size="2">
          <input type="submit" value="Send Nyhed" name="submit" class="submit">
          </font></div>
      </td>
    </tr>
    <tr>
      <td colspan="2">&nbsp;</td>
    </tr>
    <tr>
      <td colspan="2">
        <div align="center" onClick="MM_openBrWindow('sletnyh.php','NyhedSlet','scrollbars=yes,width=500,height=500')" class="cursor">[Slet
          nyheder her] </div>
      </td>
    </tr>
  </table>
  <div align="center">
    <?
mysql_close();
?>

-------

Måske de kunne blive lagt sammen så der kom på siden en select menu, hvor man kan vælge at skrive til den ene eller den anden db. hvis i har en anden måde at lave det på er jeg meget villig til idér .. Evt. sådan så den henter kun den første nyhed i DB. så slipper jeg jo for at skrive den ene nyhed over til anden db. hvor jeg har alle mine små nyheder liggende..

Håber i forstår hvad jeg mener. Flere points kan vi sagtens finde ud af. skal bare have dette op og køre :)
Avatar billede vixmix Nybegynder
12. august 2004 - 10:10 #12
Cyber - Okay, som jeg lige kan se så virker det fint :D!


// undskyld for den lange msg. oppe over.
Avatar billede sukos Juniormester
12. august 2004 - 10:11 #13
Du kan lave en radio button, som hedder db og har den ene eller anden værdi, alt efter hvilken DB det skal ind i
Avatar billede Slettet bruger
12. august 2004 - 10:11 #14
Ja det ville måske være en ide sukos :)
Men jeg er også lige stået op, så skal lige i omdrejninger.

<?php
require("db.php");

if(isset($_GET["id"])) {
    $id = $_GET["id"];

    $result = mysql_query("SELECT `id`, `mail`, `navn`, `dato`, `msg` FROM `druknyhed`  WHERE id = `$id`);
    if($rows = mysql_num_rows($result) > 0) {
        $row = mysql_fetch_array($result);

        echo"<table><tr>\n";
        echo"<td><font face=Arial size=2 color=FFFFFF><b><a href=\"mailto:".  $row["mail"] ."\">". $row["navn"] ."</a> - ". $row["dato"] ."</b><br>\n";
        echo $row["text"] ."</font></td>\n";
        echo"</tr></table>";
    } else {
        echo "Ingen nyhed blev fundet. Der er desværre sket en fejl.";
    }
} else {
    echo "Du er endt på siden, uden at vælge en nyhed.";
}
?>
Avatar billede vixmix Nybegynder
12. august 2004 - 10:16 #15
Genialt. Det havde jeg ikke lige tænkt på at kunne skrive at man ikek har fået den korrete nyhed. Mange tak :D.

Sukos - Jamen tænkte måske på om man kunne nøjes med en DB. hvor den så henter det hele derfra ? for det er bare den nyeste nyhed som skal være der
Avatar billede vixmix Nybegynder
12. august 2004 - 10:16 #16
Altså længere oppe på siden hehe. og så de andre nyheder som er ældrere skal bare stå lidt længere nede.
Avatar billede sukos Juniormester
12. august 2004 - 10:20 #17
?
Du har store og små nyheder, i hver deres DB
Hvis du vil samle dem i den samme DB, så lav et felt som får værdien 1 eller 0, for at bestemme om det er en stor eller lille nyhed.

Er ikke lige helt med, og jeg har været vågen i et par timer nu! :O)
Avatar billede vixmix Nybegynder
12. august 2004 - 10:28 #18
hehe ..

Jeg har 1 DB. Som jeg bruger til at skrive den nyeste nyhed ind i.

og så har jeg den anden DB. som jeg bruger til at have de gamle nyheder i.

Den første DB. skriver jeg en ny nyhed i hvergang jeg har en ny, som kommer den anden som jeg har stående der i over i den anden DB til de "gamle" nyheder. Men det må da kunne gøres nemmere?

Evt med en DB hvor det ene script henter KUN den første nyhed/id så jeg kan have det stående på siden et sted.
og så det andet script skal hente alle de andre nyheder, undtaget den allerøverste som er den nyeste .. hvis du forstår hehe :D.
Avatar billede Slettet bruger
12. august 2004 - 10:38 #19
Du kan jo bruge noget som:

// denne henter den nyeste nyhed.
$result = mysql_query("SELECT `id`, `mail`, `navn`, `dato`, `msg` FROM `druknyhed`  ORDER BY `id` DESC LIMIT 0,1");

// denne alle andre nyheder, med de nyeste først.
$query = mysql_query("SELECT `id` FROM druknyhed");
$antal = mysql_num_rows($query) - 1;

$result = mysql_query("SELECT `id`, `mail`, `navn`, `dato`, `msg` FROM `druknyhed`  ORDER BY `id` DESC LIMIT 1,$antal");


Nå jeg vil smutte på arbejde.
Men held og lykke med dine druknyheder :)
btw, hvis dig og sukos bliver færdig med tråden, så hold mig udenfor det med points. Sukos var her jo først :)
Avatar billede vixmix Nybegynder
12. august 2004 - 10:41 #20
cyper - du har da os givet en stor hånd, så du skal da os have :).. vi finder da ud af noget.. Og god arbejdslyst !
Avatar billede vixmix Nybegynder
12. august 2004 - 10:46 #21
så skal jeg kun nøjes med at bruge den ene nyhed "writer" ikke ?
Avatar billede sukos Juniormester
12. august 2004 - 11:01 #22
ja, altså, du bruger jo id, som forøges med en hvergang du gemmer noget nyt i DB.
Så kan du jo vælge nyeste ud fra den, som cypermann skriver.
og så ellers noget af det samme, for at hente de andre:

$query = mysql_query("SELECT MAX(id) as `top` FROM `druknyhed`"); // henter højeste id i DB'en
$antal = (mysql_result($query, 0)-1); // træk en fra højeste id
Avatar billede vixmix Nybegynder
12. august 2004 - 11:07 #23
Så det bliver sådan her ca. ?

<?php
require("db.php");

if(isset($_GET["id"])) {
    $id = $_GET["id"];

    $result = mysql_query("SELECT `id`, `mail`, `navn`, `dato`, `msg` FROM `nyheder`  ORDER BY `id` DESC LIMIT 0,1");
    if($rows = mysql_num_rows($result) > 0) {
        $row = mysql_fetch_array($result);

        echo"<table><tr>\n";
        echo"<td><font face=Arial size=2 color=FFFFFF><b><a href=\"mailto:".  $row["mail"] ."\">". $row["navn"] ."</a> - ". $row["dato"] ."</b><br>\n";
        echo $row["text"] ."</font></td>\n";
        echo"</tr></table>";
    } else {
        echo "Ingen nyhed blev fundet. Der er desværre sket en fejl.";
    }
} else {
    echo "Du er endt på siden, uden at vælge en nyhed.";
}
?>

if(isset($_GET["id"])) {
    $id = $_GET["id"];

    $result = mysql_query("SELECT `id`, `mail`, `navn`, `dato`, `msg` FROM `druknyhed`  ORDER BY `id` DESC LIMIT 1,$antal");
    if($rows = mysql_num_rows($result) > 0) {
        $row = mysql_fetch_array($result);
        $query = mysql_query("SELECT `id` FROM druknyhed");
        $antal = mysql_num_rows($query) - 1;

        echo"<table><tr>\n";
        echo"<td><font face=Arial size=2 color=FFFFFF><b><a href=\"mailto:".  $row["mail"] ."\">". $row["navn"] ."</a> - ". $row["dato"] ."</b><br>\n";
        echo $row["text"] ."</font></td>\n";
        echo"</tr></table>";
    } else {
        echo "Ingen nyhed blev fundet. Der er desværre sket en fejl.";
    }
} else {
    echo "Du er endt på siden, uden at vælge en nyhed.";
}
?>
Avatar billede sukos Juniormester
12. august 2004 - 11:29 #24
ehh, du vil gerne vise nyeste nyhed øverst, med link til de andre nyheder nedenunder?
Eller hvad?
Avatar billede vixmix Nybegynder
12. august 2004 - 11:32 #25
nej bare på samme side.. den nyeste (nyhed 1) skal bare vises et andet sted på siden fremfor de andre fra 2-x skal vises et stykke under
Avatar billede sukos Juniormester
12. august 2004 - 11:42 #26
Ment som eksempel:

// VIS NYESTE
$hent_nyeste = mysql_query("SELECT * FROM `druknyhed` ORDER BY `id` DESC LIMIT 0,1") or die (mysql_error());
$vis_nyeste = mysql_fetch_object($hent_nyeste);
echo $vis_nyeste->msg ."<br>\n";
$max = $vis_nyeste->id;
mysql_free_result($hent_nyeste);

// VIS ALLE ANDRE, UNDTAGEN NYESTE
$hent_andre = mysql_query("SELECT * FROM `druknyhed` WHERE `id` !='". $max ."' ORDER BY `id` DESC") or die (mysql_error());
while($vis = mysql_fetch_object($hent_andre)) {
echo $vis->id ."<br>";
}
mysql_free_result($hent_andre);
Avatar billede vixmix Nybegynder
12. august 2004 - 12:53 #27
okay tusind tak .. jeg tester det lige senere !
Avatar billede vixmix Nybegynder
12. august 2004 - 12:54 #28
smider i et "svar" :)
Avatar billede sukos Juniormester
12. august 2004 - 13:05 #29
jow da! :O)

Du kan evt. også køre en query til at finde største id, for at holde $max "adskilt"

$get_max = mysql_query("SELECT MAX(id) FROM `druknyhed`") or die (mysql_error());
$max = mysql_result($get_max, 0);
mysql_free_result($get_max);

$hent_nyeste = mysql_query("SELECT * FROM `druknyhed` WHERE `id` = '". $max ."'") or die (mysql_error());
$vis_nyeste = mysql_fetch_object($hent_nyeste);
echo $vis_nyeste->msg ." - ". $vis_nyeste->id ."<br>";
mysql_free_result($hent_nyeste);


$hent_andre = mysql_query("SELECT * FROM `druknyhed` WHERE `id` !='". $max ."' ORDER BY `id` DESC") or die (mysql_error());
while($vis = mysql_fetch_object($hent_andre)) {
echo $vis->id ."<br>";
}
mysql_free_result($hent_andre);
Avatar billede Slettet bruger
12. august 2004 - 14:59 #30
Tja, så får du da et svar; så kan du fordele som du vil.
Nå jeg må hellere finde noget frokost, eller hvad man nu skal kalde det :)
Avatar billede vixmix Nybegynder
17. august 2004 - 20:53 #31
Jeg siger tusind tak for jeres hjælp. jeg vil prøve at smide det sammen og få det til at virke hehe !
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