20. oktober 2004 - 23:41Der er
11 kommentarer og 1 løsning
Hjælp til selektiv sletning af rækker i MySql via PHP sider.
Jeg har leget lidt med et nyhedsscript som jeg gerne vil kunne slette/rette nyheder i uden at skulle ind i PhpMyAdmin for at slette/rette rækkerne.
de 3 sider som jeg har gang i ser sådanher ud: ====================Tilføj nyhed side==================== <html> <body> <?php if($kodeord == "kodeord"){ echo "Nyheden er tilføjet"; $db = mysql_connect("#localhost#", "#root#", "#pwd#"); mysql_select_db("#Min Database#", $db); $nyhed_dato = time();
mysql_query("insert into Nyheder_Forside (dato, overskrift, tekst) values ('$nyhed_dato', '$nyhed_overskrift', '$nyhed_tekst')");
} else { ?> <form method=post action=<?php echo $php_self; ?>> kodeord:<br> <input type=password name=kodeord><br> overskrift:<br> <input type=text name=nyhed_overskrift><br> tekst:<br> <textarea name=nyhed_tekst>her indtastes nyheden</textarea><br> <input type=submit value=skriv> </form> <?php } ?> </body> </html> ========================================================= ================Siden som viser nyhederne================ <html> <body> <?php $db = mysql_connect("#Localhost#", "#root#", "#pwd#"); mysql_select_db("#Min Database#", $db); $foresp = mysql_query("SELECT dato, overskrift, tekst FROM Nyheder_Forside ORDER BY dato DESC LIMIT 0, 2"); while($data = mysql_fetch_array($foresp)){
</html> ========================================================= Det er den sidste side som jeg har problemer med, og som I sikkert kan se på det ekstra kodning så er jeg rimelig meget nybegynder. En ting som ville være fint var hvis jeg kunne tilføje/rette/slette rækker i MySql via samme php side.
Noget som jeg kunne forestille mig er at når det bliver hentet fra databasen så skal det smides ind i nogle tekstfelter ligesom når jeg opretter en nyhed hvor jeg så kan enten rette den eller slette den. Men så må alle nyhederne jo komme ind i sådanne tekstfelter på samme side. For at slette en nyhed så er det noget med en knap lige under hver nyhed af en eller anden art som så siger til mysql databasen at den skal slette det hele, og det er dette som jeg lige regner med jeg har problemer med.
Jeg håber der er nogle som kan hjælpe mig det ville være rigtig fedt :)
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Så skal det tredje script kun håndtere at slette en nyhed, og det første kan tilrettes til også at redigere. NB! Jeg kender ikke dine filnavne, så de skal tilrettes.
Synes godt om
Slettet bruger
22. oktober 2004 - 08:27#3
Ved nærmere eftertanke, så fjern form nummer to med slet-knappen. Det er lige så let at nøjes med 2 filer.
Derefter laver du tilføj-siden om til nedenstående. Bemærk at jeg har ændret lidt i den oprindelige kode også. Dette var for at gøre den lidt mere sikker og for at den også skal virke med register_globals slået fra. Derudover får man ny formylaren at se igen, så man kan rette en gang mere, hvis det skulle være nødvendigt.
Jeg har ca. 3 forskellige nyhedssider som gerne må blive opdateret på samme måde, men skal jeg så have 3 x 2 sider eller kan jeg rette lidt og smide dem alle 3 ned i en og samme?
Synes godt om
Slettet bruger
22. oktober 2004 - 16:44#7
De kan godt bruge samme, men det er kun smart, hvis tabellerne er ens. Du kunne jo eventuelt have allesammen i samme databasetabel, og så bare tilføje et felt til den, der definerer, hvilken side nyheden skal vises på.
Lav en ny tabel (jeg kalder den sider), med et autoincrementeret id-felt og et navn-felt og fyld sidenavnene i den. Lav feltet side i nyhedstabellen (INT) og sæt id fra den anden tabel ind.
Så skal du bare tilføje en smule, når du vil finde nyhederne
$foresp = mysql_query("SELECT dato, overskrift, tekst, side FROM Nyheder_Forside, sider WHERE side=sider.navn ORDER BY dato DESC LIMIT 0, 2");
og en linie mere til den formular, der laver retteknappen:
$sideliste=array(); $foresp=mysql_query("SELECT * FROM sider ORDER BY id"); while($data=mysql_fetch_assoc($foresp)){ $sideliste[$data['id']]=$data['navn']; }
jeg tænkte på om jeg ikke lige så godt kunne lave en ekstra række i den tabel som jeg allerede bruger til nyhederne? og jeg skal vel også rette noget på de sider som skal vise nyhederne så de ved hvilke nyheder de skal bruge så ikke dem på side 3 kommer på side 2 og 1 også.
Synes godt om
Slettet bruger
24. oktober 2004 - 19:24#10
Du mener et ekstra felt (kolonne). Det er det, jeg siger i allerførste afsnit i det sidste indlæg, jeg skrev. Der skal bruges en ny tabel, og et nyt felt i nyhedsdatabasen.
Men ja, jeg fik ikke nævnt, at du på nyhedssiderne skal vælge ud fra det ekstra felt. Det gøres ved at rette linien til:
$foresp = mysql_query("SELECT Nyheder_Forside.id as id, dato, overskrift, tekst FROM Nyheder_Forside, sider WHERE Nyheder_Forside.side=sider.id AND sider.navn='sidenavn' ORDER BY dato DESC LIMIT 0, 2");
Der skal ordet sidenavn så rettes til navnet på den side, du viser på. (Du kunne også lave en side med alle nyhederne samlet, og så bare udelade den rettelse.
Det nye felt i nyheder-tabellen skal være INT og de to felter i sider-tabellen skal være:
id: INT primærnøgle, autooptæl navn: enten TINYTEXT eller VARCHAR, bør også sættes til UNIQUE
$sideliste=array(); $foresp=mysql_query("SELECT * FROM sider ORDER BY id"); while($data=mysql_fetch_assoc($foresp)){ $sideliste[$data['id']]=$data['navn']; }
Siden som viser nyheden til forsiden (siden hedder Forside.php (med CASE))
***
<?php $db = mysql_connect("#mysql#", "#bruger#", "#kode#"); mysql_select_db("#database1#", $db); $foresp = mysql_query("SELECT Nyheder.id as id, dato, overskrift, tekst FROM Nyheder, sider WHERE Nyheder.side=sider.id AND sider.navn='forside' ORDER BY dato DESC LIMIT 0, 2"); while($data = mysql_fetch_array($foresp)){
id: int, auto_increment,primary dato: tinytext overskrift: tinytext tekst: text
***
sider:
***
id: int,primary side: tinytext
***
Kunne ikke sætte side til unik da den brokkede sig over at jeg skulle angive en værdi
og den vil hverken vise nyhederne eller tilføje dem til databasen.
Fandt forresten nogle ; og " mangler hist og her, som hjalp lidt på det hele, kunne ikke få siden vist ellers.
Og så i nyhedsadministrationen kunne jeg ikke få "Vælg hvilken side nyheden skal vises på her" options til at virke, jeg dublikerede bare <option></option> taggene og rettede values og label, values til tal og label til navne på diverse sider.
Håber du lige vil hjælpe med det sidste her. :)
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.