Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:01 Der er 42 kommentarer og
1 løsning

hjælp til ekstra felt i PHP og Databasen.

Hej eksperter,

Jeg fik tilsendt en "nyhedssystem" af en venlig bruger herinde.

Nyhedssystemet er rimelig "simpelt" men da jeg er meget usikker på området søger jeg en der kan hjælpe mig med følgende:







Jeg vil gerne have et ekstra felt med en Dato i følgende PHP script:





$res = mysql_query("SELECT * FROM nyhedssystem") or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<table border=\"1\" width=\"500\">";
echo "<tr>";
echo "<td>";
echo "<b>Overskrift:</b> ";
echo $row['overskrift']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>beskrivelse:</b> ";
echo $row['beskrivelse']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>Nyhed:</b> ";
echo $row['nyhed']. "<br>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<br><br>";
}
?>








og jeg vil gerne sætte en ekstra tabel ind i databasen som er kørt med følgende SQL sætning:




CREATE TABLE `nyhedssystem` (
  `overskrift` varchar(200) NOT NULL default '',
  `beskrivelse` varchar(200) NOT NULL default '',
  `nyhed` varchar(200) NOT NULL default ''
) TYPE=MyISAM;






Er der en der kan hjælpe mig med de 2 ting?





mvh
Mads
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:02 #1
Den ekstra tabel i Tabellen skal udskrive dato format (helst den europæiske måde at udsrkive det på).


mvh
mads
Avatar billede jaw Nybegynder
11. december 2005 - 14:04 #2
$res = mysql_query("SELECT *, DATE_FORMAT(dato, '%d.%m.%Y %H:%i:%s') as datotid FROM nyhedssystem") or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<table border=\"1\" width=\"500\">";
echo "<tr>";
echo "<td>";
echo "<b>Overskrift:</b> ";
echo $row['overskrift']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>beskrivelse:</b> ";
echo $row['beskrivelse']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>dato:</b> ";
echo $row['datotid']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>Nyhed:</b> ";
echo $row['nyhed']. "<br>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<br><br>";
}
?>


Og så hop i phpMyAdmin og opret et nyt felt der er DATETIME som felttype og hedder "dato".
Avatar billede jakobdo Ekspert
11. december 2005 - 14:05 #3
Du tilføjer et felt som hedder datotid eller hvad du kan finde på!

I det script hvor nyheden så gemmes i databasen, laver du:

INSERT INTO nyhedssystem(overskrift,beskrivelse,nyhed,datotid) VALUES($overskrift,$beskriv,$nyhed,NOW())

NOW() vil indsætte tidspunktet lige nu!
Avatar billede jaw Nybegynder
11. december 2005 - 14:06 #4
Og så har du så fået både indsætning i og udtræk af databasen :)
Avatar billede jakobdo Ekspert
11. december 2005 - 14:07 #5
Så skulle den ged vel være barberet! :o)
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:09 #6
jo det prøver lige at kigge på.
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:12 #7
Jeg får en MySQL fejl for jeg har jo allerede lavet tabellen "nyhedssystem" via SQL sætningen:


CREATE TABLE `nyhedssystem` (
  `overskrift` varchar(200) NOT NULL default '',
  `beskrivelse` varchar(200) NOT NULL default '',
  `nyhed` varchar(200) NOT NULL default ''
) TYPE=MyISAM;






Så jeg skal kune tilføje et ekstra felt
Avatar billede jaw Nybegynder
11. december 2005 - 14:13 #8
Har du ikke phpMyAdmin installeret på serveren? Det er klart den nemmeste måde.
Avatar billede jakobdo Ekspert
11. december 2005 - 14:13 #9
Du skal åbne phpmyadmin og vælg structur mener jeg den hedder!
Der skal du kunne tilføje et ekstra felt.
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:13 #10
Så der er vel sådan her:

INSERT INTO nyhedssystem(datotid) VALUES($,NOW())



Den skal laves den sætning er det korrekt ?


mvh
mads
Avatar billede jakobdo Ekspert
11. december 2005 - 14:13 #11
2 hjerner, samme tanke!
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:14 #12
jo jeg har PHPMyadmin kørende lokalt hvor jeg tester.

Skal jeg gøre det uden SQL-sætning er det nemmere?
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:17 #13
ok jeg gør det nu via "Structur" men hvordan skal feltet se ud (hvilke data skal anvendes??).


mvh
mads
Avatar billede jaw Nybegynder
11. december 2005 - 14:18 #14
Hvis du læser sidste linie i mit første indlæg, så tror jeg den skulle være der?
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:20 #15
jeg kigger lige men er helt ny i det her derfor spørger jeg så meget.

mvh
Mads
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:23 #16
altså jeg gør det på følgende måde:

feltnavn: datotid

data type: TIME

Længde/Værdi*  ??
Kollation (Collation) ??
Attributter Nulværdi ??
Standardværdi**  ??
Ekstra  ??



Jeg er usikker på hvad datatypen er og hvvad der skal ind de sidste felter!?!?



kan i hjælpe?

mvh
Mads
Avatar billede udvikler Nybegynder
11. december 2005 - 14:29 #17
hejsa igen foxmulder, jeg kan da godt lige hjælpe dig med det :)

Du tilføjer dette i phpmyadmin:

dato,varchar,255

og derefter indsætter du denne i opret_nyhed.php eller hvad jeg nu kaldte den da jeg lavede den :P

$dato = date('d/m/Y H:i:s');

samt at du ændre query linien til dette:

mysql_query("INSERT INTO nyhedssystem (overskrift, beskrivelse, nyhed, dato) VALUES ('$_POST[overskrift]', '$_POST[beskrivelse]', '$_POST[nyhed]', '$dato')") or die(mysql_error());


når du så skal trække datoen ud igen, skal du bare skrive dette:

$res = mysql_query("SELECT * FROM nyhedssystem") or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<table border=\"1\" width=\"500\">";
echo "<tr>";
echo "<td>";
echo "<b>Overskrift:</b> ";
echo $row['overskrift']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>beskrivelse:</b> ";
echo $row['beskrivelse']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>Nyhed:</b> ";
echo $row['nyhed']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>dato:</b> ";
echo $row['dato']. "<br>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<br><br>";
}
?>
Avatar billede jaw Nybegynder
11. december 2005 - 14:30 #18
No offence, men det er for omstændigt.

Du skal oprette feltet "dato" og så med type DATETIME. Resten skal du bare lade phpMyAdmin bekymre sig om, den skal nok udfylde standardværdi etc.
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:31 #19
jamen  jeg har jo oprettet denn tabel med overskift,nyhed allerede men jeg sletter bare tabellen i PHPMyadmin og kører din sætning der igen så?


mvh
mads
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:34 #20
nu har jeg indsat i PHPmyadmin følgende felt:

navn: dato

type: varchar

længde 255


mvh
Mads
Avatar billede udvikler Nybegynder
11. december 2005 - 14:34 #21
Det behøver du ikke, men du kan bare tilføje et nyt felt manuelt ?
ellers kan jeg da bare gøre det for dig:

CREATE TABLE `nyhedssystem` (
  `overskrift` varchar(200) NOT NULL default '',
  `beskrivelse` varchar(200) NOT NULL default '',
  `nyhed` varchar(200) NOT NULL default '',
  `dato` varchar(255) NOT NULL default ''
) TYPE=MyISAM;

Nu kan du bare slette den gamle og tilføje denne :)
Avatar billede udvikler Nybegynder
11. december 2005 - 14:35 #22
Okay, så er min ovenståene post ligegyldig.. prøv at køre min kode og se om det virker :) for det virker her.
Avatar billede jaw Nybegynder
11. december 2005 - 14:35 #23
Altså, du frakaster min og Jakob's løsning, til fordel for en ufleksibel overkill-løsning, der jo godt nok virker, men er tung og tosset??? For så gider jeg ikke følge med mere :)
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:36 #24
ja det gør jeg istedet ACO det er nemmere så er jeg sikker.

mvh
Mads


PS! du skal lige hjælpe mig med opret.php filen for jeg kan ikke se hvor din variabel hører hjemme der?
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:36 #25
jaw >> undskyld lad os nu ikke blive uvenner herinde.


mvh
Mads
Avatar billede jaw Nybegynder
11. december 2005 - 14:37 #26
Nej, nej, det bliver vi skam heller ikke. Men at vælge en løsning, du i fremtiden ikke har mulighed for at ændre opsætning af, den er tungere for serveren at håndtere, og den er sværere at lave. Men har du besluttet dig, så er det bare, at jeg ikke gider kommentere mere, men kan bruge min tid andetsteds :)

//OUT!
Avatar billede udvikler Nybegynder
11. december 2005 - 14:38 #27
Opret.php laver du sådan her:

<?
echo "<form action=\"\" method=\"POST\">";

if ($_POST[submit]) {

if ($_POST[overskrift] == ""){
echo "Du mangler at skrive en overskrift<br>";
}

if ($_POST[beskrivelse] == ""){
echo "Du mangler at skrive en beskrivelse<br>";
}

if ($_POST[nyhed] == ""){
echo "Du mangler at skrive nyheden<br>";
}
else {
$dato = date('d/m/Y H:i:s');
mysql_query("INSERT INTO nyhedssystem (overskrift, beskrivelse, nyhed, dato) VALUES ('$_POST[overskrift]', '$_POST[beskrivelse]', '$_POST[nyhed]', '$dato')") or die(mysql_error());
}
}


echo "Overskrift: <input type=\"text\" name=\"overskrift\">";
echo "Beskrivelse: <input type=\"text\" name=\"beskrivelse\"><br>";
echo "<textarea rows=\"10\" cols=\"60\" name=\"nyhed\"></textarea><br>";
echo "<input type=\"submit\" value=\"Opret\" name=\"submit\">";

echo "</form>";
?>
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:39 #28
ok sorry! jeg er ikke stærk i det her så jeg tager bare imod råd fra alle sider .

Det jeg har fet fra ACO har altid virket fint, så jeg vælge ACO`sløning.


Smid også et svar Jaw jeg vil ikke snyde dig for en andel i point!
Avatar billede udvikler Nybegynder
11. december 2005 - 14:40 #29
Jeg håber skam heller ikke at nogle får sure miner, jeg har bare altid brugt denne metode jaw :-)
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:41 #30
ACO >> den tager i tidspunkt og dato med i det nyheder man laver?

mvh
Mads
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:42 #31
hov jeg menr den tager IKKE tidpsunkt og dato med i mine nyheder jeg laver?


alt andet virker fint!


mvh
Mads
Avatar billede jaw Nybegynder
11. december 2005 - 14:42 #32
Ok. En sidste kommentar så :)

Jeg bliver ikke sur. Jeg prøver bare at sige, at Aco's løsning virker, for det vil den uden tvivl gøre, men den er tung og tosset.

Hans indsætter datoen dd/mm/YYYY HH:ii:ss - hvilket som sådan er fint. Men hvis du en dag vil have det til at være f.eks. dd.mm.YYYY så ville min løsning være klart nemmere.

Og nej tak, ingen point til mig, når du vælger en andens løsning - det er jo 100% dit valg :)

Og selvom man "altid har brugt en løsning", betyder det så at man ikke vil lære nye og smartere måde, så man også som programmør kan udvikle sig lidt? :)
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:44 #33
jo det har du nok ret i Jaw men jeg er så meget newbie at jeg vælger de løsninger som jeg umiddelbart får til at virke.
Og den løsning her fra ACO er meget tilfredstillende!

mvh
Mads


PS! tak for din tid idet mindste.
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:45 #34
dette er vel korrekt i PHPMyAdmin:


  overskrift  varchar(200) latin1_swedish_ci  Nej                 
  beskrivelse  varchar(200) latin1_swedish_ci  Nej                 
  nyhed  varchar(200) latin1_swedish_ci  Nej                 
  dato  varchar(255) latin1_swedish_ci  Nej 









tager den datoen med hos dig ACO?



mvh
mads
Avatar billede udvikler Nybegynder
11. december 2005 - 14:47 #35
Ja det virker hos mig :)

Har du indsat denne ? :

<?
$res = mysql_query("SELECT * FROM nyhedssystem") or die(mysql_error());
while ($row = mysql_fetch_array($res)) {
echo "<table border=\"1\" width=\"500\">";
echo "<tr>";
echo "<td>";
echo "<b>Overskrift:</b> ";
echo $row['overskrift']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>beskrivelse:</b> ";
echo $row['beskrivelse']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>Nyhed:</b> ";
echo $row['nyhed']. "<br>";
echo "</td>";
echo "</tr>";
echo "<tr>";
echo "<td>";
echo "<b>dato:</b> ";
echo $row['dato']. "<br>";
echo "</td>";
echo "</tr>";
echo "</table>";
echo "<br><br>";
}
?>


jaw -> Jo, du har fuldstændig ret i at man skal udvikle sig, jeg mente heller ikke at jeg KUN vil bruge min metode fordi jeg altid har brugt den, jeg vil da sagtens bruge nogle metoder som er bedre hvis jeg kendte dem, derfor vil jeg da også gerne lære "din" metode. Har selv en liste på min computer der indeholder en masse ting som jeg skal ændre på min hjemmeside inden jeg sætter den på nettet. En af punkterne er at gøre database opslagene hurtigere osv. Derfor vil jeg da kigge på din metode :)
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:52 #36
nej det havde jeg glemt LOL jeg er en klaphat til programmering !!!

Men der manglede vel også "include "mysql.php";"  i dit sidste indlæg ikke?


Det virker nu!!!


tusind tak ACO   


;]


mvh
Mads
Avatar billede udvikler Nybegynder
11. december 2005 - 14:53 #37
Jo det gjorde der :)

Godt at det virker, selv tak ;)
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:54 #38
tusind tak ACO !!!!  --> u saved my day once again....
Avatar billede udvikler Nybegynder
11. december 2005 - 14:56 #39
:)
Avatar billede jaw Nybegynder
11. december 2005 - 14:56 #40
Selv tak...
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:57 #41
ja også tak til dig Jaw, jeg vil gerne smide point til dig i "fri debat".
Avatar billede jaw Nybegynder
11. december 2005 - 14:57 #42
Nej, nej, ellers tak. Pointene var skam ikke pointen, dem mangler jeg jo ikke just :)
Avatar billede foxmulder58 Praktikant
11. december 2005 - 14:59 #43
tja jeg har allerede givet dig god karma ! så jeg ved ikke rigtig hvordan du kan belønnes.  tak er jo som bekendt kun et fattigt ord...  :]


Men tusind tak for hjælpen og din tid.
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