04. oktober 2004 - 20:42Der er
38 kommentarer og 1 løsning
Problem med et nyhedssystem
jeg har et problem den skal skrive hvem der har lagt indlæget men det gør den ikke den skulle gerne skrive brugernavnet i kan se det på følgende adresse det er lavet over en mysql database http://exp.webcubic.dk/ som i kan se står der skrevet af: d.
<? echo $_SESSION['Brugernavn'] ; ?> der til at henete bruger navnet med
Her er så sql dump jeg håber der er en der kan hjælpe mig # # Table structure for table `brugere` #
CREATE TABLE `brugere` ( `id` int(23) NOT NULL default '0', `username` text NOT NULL, `password` text NOT NULL, `email` text NOT NULL, `level` text NOT NULL ) TYPE=MyISAM; # --------------------------------------------------------
# # Table structure for table `nyhedsys` #
CREATE TABLE `nyhedsys` ( `headline` text NOT NULL, `news` text NOT NULL, `name` text NOT NULL, `email` text NOT NULL, `date` datetime NOT NULL default '0000-00-00 00:00:00', `id` int(3) NOT NULL default '0', UNIQUE KEY `date` (`date`), KEY `date_2` (`date`) ) TYPE=MyISAM; # --------------------------------------------------------
name men det ser ud til når jeg går ind via phpmyadmin så ligger den ikke navnet ind i den kolone der hedder mane og email det er jo det den skal hente automatisk fra den bruger der er logget ind hvordan kan man lave det
Ja det ID brugeren har bruges til at gemme i nyhedsys så man ved hvem der har skrevet nyheden.
Når man udskriver nyhederne skal man så hente bruger navnet fra brugere tabellen, det kan gøre med en join.
Hvis du tilføjer en ny kolonne i nyhedsys: `brugerid` int(23) NOT NULL default '0'
Så kan du hente nyhderne sådan her: "select nyhedsys.*, brugere.username, brugere.email from nyhedsys inner join brugere on nyhedsys.brugerid=brugere.id"
Fordelen ved at bruge ID er hvis brugeren skifter bruger navn eller email så skal man ikke opdatere noget i nyhedsys for det bliver rigtigt.
Når du så gemmer en nyhed skal du ligge ID på den bruger som skriver nyhden i tabellen sammen med den andre data.
jeg r lidt noob til dette der for spørger jeg også her jeg vil gerne lære men det er for mig forvirende en gang imellem men jeg prøver at indsætte den kolonne
$resultat = mysql_query("select *,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys order by id desc"); while ($row = mysql_fetch_array($resultat)) {
</tr> <tr> <td vAlign="bottom"><b><? echo $headline; ?></b></td> </tr> <tr> <td vAlign="bottom"><? echo $news; ?></td> </tr> <tr> <td vAlign="bottom">Skrevet af: <a href="mailto:<? echo $row[email]; ?>"><? echo $row[name]; ?></a> d. <? echo $row[tid]; ?></td> </tr> <tr> <td vAlign="bottom"><? } ?> sådan ser min kodning ud kan du hjælpe mig med at ændre den til det der virker for jeg hjar kæmpet med det længe
Prøv at rette denne: $resultat = mysql_query("select *,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys order by id desc");
Til denne:
$resultat = mysql_query("select nyhedsys.*,brugere.username, brugere.email ,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys inner join brugere on nyhedsys.brugerid=brugere.id order by nyhedsys.id desc");
ok det r nu gjort nu har jeg så et andet problem jeg har en fil add_nyhed_sql.php som nu kommmer med fejl om en colum der ikke eksisterer jeg fandt ud af det med databasen sådan ser den fil ud
mysql_query(" INSERT INTO nyhedsys (id,headline,name,email,news,date) VALUES ('$id','$headline','$name','$email','$news',now())") or die(mysql_error());
Ok det så der den skal hente ID på brugerene i stedet for email og skrive det i tabellen:
$res = mysql_query("SELECT email FROM brugere WHERE username = '$name' "); $row = mysql_fetch_array($res); $email = $row[email];
så det bliver:
$res = mysql_query("SELECT id FROM brugere WHERE username = '$name' "); $row = mysql_fetch_array($res); $brugerid = $row['id'];
Den sql sætning som indsætter nyheden skal så rettes: mysql_query(" INSERT INTO nyhedsys (id,headline,name,email,news,date) VALUES ('$id','$headline','$name','$email','$news',now())") or die(mysql_error());
til dette: mysql_query(" INSERT INTO nyhedsys (id,headline,brugerid,news,date) VALUES ('$id','$headline','$brugerid','$news',now())") or die(mysql_error());
En anden ting, denne SQL sætning med JOIN i som jeg har vist før:
$resultat = mysql_query("select nyhedsys.*,brugere.username, brugere.email ,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys inner join brugere on nyhedsys.brugerid=brugere.id order by nyhedsys.id desc");
Bør rettes til denne så den også henter nyhederne ud selvom der ikke er angivet en bruger til nyheden:
$resultat = mysql_query("select nyhedsys.*,brugere.username, brugere.email ,date_format(date, '%e/%c %Y - %H:%i') AS tid FROM nyhedsys left join brugere on nyhedsys.brugerid=brugere.id order by nyhedsys.id desc");
jeg vil sige mange tak for din tolmodighed og hjælp med mit problem jeg er nu en meget glad mand
mange tak
Synes godt om
Ny brugerNybegynder
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.