29. oktober 2003 - 13:01Der er
115 kommentarer og 1 løsning
hente og slette fra database
Hej, jeg har lavet en admin-side hvor der skal kunne rettes i tabel via browser.
Koden driller dog lidt, idet den kun viser en blank side - kan nogen se hvor fejlen ligger og den også vil virke på den måde den er skrevet - alt skal foregå på samme side:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html> <head>
<title>Administrationmodul - opdatering af side</title>
</head>
<body> <h1>Administrationmodul - opdatering af side</h1>
<h2>Hent side</h2> <h3>Indtast indeks</h3>
<?php mysql_connect("bla bal mysql_select_db("bla bla $hent = mysql_query("SELECT overskrift, indhold, dag FROM 'sider' WHERE indeks = $indeks"); while ($data = mysql_fetch_array($hent)) { echo "$data[overskrift]<br><br>"; echo "$data[indhold]<br><br>"; echo "$data[dag]<br><hr>"; } ?>
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
Prøv at rette: $hent = mysql_query("SELECT overskrift, indhold, dag FROM 'sider' WHERE indeks = $indeks"); til: $hent = mysql_query("SELECT overskrift, indhold, dag FROM sider WHERE indeks = $indeks");
Hvor har du i øvrigt $indeks fra, det fremgår ikke rigtigt?
Hej, det hjælper ikke med at ændre til sider, i øvrigt briger jeg altid 'sider' på alle mine andre kald og det giver ikke problemer.
$indeks er en indekssering i stedet for at bruge id i tabel, så jeg har en kolonne der hedder indeks og jeg skal så kunne indtaste indeks-numret og får de 3 celler frem inden jeg så retter dem længere nede på siden.
Det er underlig for hvis jeg fjerne den øverste/første php så vises det hele.
Du behøver ikke 'action' når du henviser til den samme side. Hvad hedder felterne i din tabel? Det ene sted bruger du stort forbogstav og det andet sted lille?
Så prøv at udskifte: $hent = mysql_query("SELECT overskrift, indhold, dag FROM 'sider' WHERE indeks = $indeks"); med: $hent = mysql_query("SELECT overskrift, indhold, dag FROM 'sider' WHERE indeks = $indeks") or die(mysql_error());
Forkert Query: UPDATE sider SET overskrift = 'Test af modul', indhold = 'Denne side skal kun bruges til at rette i via modul. Er nu testet mht. at hente.', dato = '29.10.2003' WHERE indeks = 250000 - Unknown column 'dato' in 'field list'
Jeg kunne tænke mig, at der var en slags liste med alle indeksnumre med tilhørende navn på siden, ikke .php-navnet nok mere link-navnet. Sådan at man kunne scrolle nej og vælge den respektive side, hvor man nu skal huske indeksnummer og indtaste det.
Havde du tænkt dig en seperat side med den liste. For så kunne man lige så godt lave det som links, så man automatisk fik de aktuelle data vist i formen. Hvad hedder det feltnavn du kunne tænke dig at vise i sådan en liste?
Jeg tror det bedste ville være jeg tilføjede en kolonne i tabellen hvor jeg så kan skrive det som jeg gerne vil have der skal stå i 'listen', så hvis vi nu siger den skal vise 'indeks' som før og så ved siden af det som jeg skriver i 'list'. Det er måske en god idé med en seperat side, da jeg nok med tiden får mange sider måske omkring 100 hvem ved...
ja det er måske det mest tydelige så jeg ikke går galt i byen - flere indtastninger giver jo større fejlmulighed.
Jeg må smutte nogle timer men vender tilbage igen og skal nok vente på du er der igen om ikke nadet så tester jeg og vi kan snakke når du giver tilbagemelding - men tak tak tak for nu
Bare i orden. Jeg kunne forestille mig noget i den her stil:
list.php --------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>Liste til rettelser</title> </head> <body> <? mysql_connect("bla bal"); mysql_select_db("bla bla"); $hent = mysql_query("SELECT indeks, list FROM sider ORDER BY list"); while ($data = mysql_fetch_array($hent)) { echo "<a href='ret.php?indeks=".$data['indeks']."'>".$data['list']."</a><br />"; } ?> </body> </html>
først ville jeg gerne have at man kunne vælge hvilken tabel man ville rette i, jeg har tabellen sider nu, men lad os sige jeg får flere feks. xxx og yyy - kan man så have en dropdown hvor man vælger mellem de 3 tabeller.
Men det er selvfølgelig kun en del af vejen, for vi bliver nødt til at rette i 'ret.php', hvis den skal finde den rigtige tabel at rette i. Hvordan ser 'ret.php' ud nu?
og en lille rettelse til 'list.php' echo "<a href='ret.php?indeks=".$data['indeks']."'>".$data['list']."</a><br />"; rettes til: echo "<a href='ret.php?indeks=".$data['indeks']."&tabel=".$_POST['tabel']."'>".$data['list']."</a><br />";
med andre ord så skal man lige nu scrolle langt ned på en 'blank' side før der kommer de links der refererer til de udfyldte felter i kolonnen list i databasen
heller ikke - det er hvad der kommer til at stå i kildekoden
-------------------
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML><HEAD> <META http-equiv=Content-Type content="text/html; charset=windows-1252"></HEAD> <BODY></BODY></HTML>
Jeg sidder lige og tænker på brugbarheden af det med at vælge den tabel der skal rettes i. Det vil jo kræve at alle tabeller har de samme felter. Ellers skal vi ud i noget helt andet.
nu må jeg lige checke det med flere tabeller - ellers hvis det kræver for meget så må jeg jo bare lave en alm side der ref. til list1 list2 osv, men lad os se på det.
det er korrekt, det virker ikke hvis ikke alle felter er ens i samtlige tabeller, så mon løsningen er at lave alm links til list1 list 2 osv og så også have flere af de andre filer til hver sin tabel og/eller database
Det fylder 3 filer og er meget mere flexibelt end det andet vi har lavet. Den første sider lister tabellerne, så man kan vælge en. På den anden side kan man rette data i en række fra den valgte tabel. Og den tredie opdaterer databasen.
Jo, tak. Det ville nu ellers være smart med sådan en allround model, men med lidt mere kodning, kan du da sagtens lave nogle scripts til hver tabel. Hvad har du fundet frem til?
osv osv - altså samme form bare tilpasset med action og name
--------------------
så en list.php for hver list1,2, 3 osv
<?php if (isset($_POST['sider'])) { mysql_connect(" mysql_select_db(" $hent = mysql_query("SELECT indeks, list FROM sider WHERE list<>'' ORDER BY list") or die(mysql_error()); print "Klik på linket til den side du ønsker at rette i:<br /><br />"; while ($data = mysql_fetch_array($hent)) { echo "» <a href='ret3.php?indeks=".$data['indeks']."&tabel=".$_POST['sider']."' class=hamlet>".$data['list']."</a><br />"; } } else { echo "Ingen tabel valgt!<br />"; } ?>
tilpasset med $POST og mysql_query og a href= for hver tabel
--------------------
så ret.php for hver
<?php mysql_connect(" mysql_select_db(" if (isset($_POST['hent'])) { extract($_POST); $hent = mysql_query("SELECT overskrift, indhold, dag FROM sider WHERE indeks = $indeks"); while ($data = mysql_fetch_array($hent)) { echo $data['overskrift']."<br><br>"; echo $data['indhold']."<br><br>"; echo $data['dag']."<br><hr>"; } } else { ?>
<?php } if (isset($_POST['update'])) { extract($_POST); $SQL = ("UPDATE sider SET overskrift = '$overskrift', indhold = '$indhold', dag = '$dag' WHERE indeks = $indeks"); mysql_query($SQL) or die("Forkert Query: $SQL - ".mysql_error()); echo "<b />Siden er opdateret som følger:</b /><br /><br />"; echo $overskrift."<br><br>"; echo $indhold."<br><br>"; echo $dag."<br><hr>"; } elseif (isset($_GET['indeks'])) { $hent = mysql_query("SELECT overskrift, indhold, dag, indeks FROM sider WHERE indeks = ".$_GET['indeks']); if (mysql_num_rows($hent) != 1) die("Der kunne ikke findes data med dette indeks!"); $row = mysql_fetch_assoc($hent); extract($row); ?> <form method=post action=""> <h3>Felter til opdatering i database [danske sider]</h3> Ret i felterne og klik opdater:<br><br> <input type="hidden" name="indeks" value="<?=$indeks?>" /> Overskrift:<br /><input type="text" size="50" name="overskrift" value="<?=$overskrift?>" /><br /><br /> Indhold:<br /><textarea cols="75" rows="25" name="indhold"><?=$indhold?></textarea><br /><br /> Dato for rettelse:<br /><input type="text" size="10" name="dag" value="<?=$dag?>" /><br /><br /> <input type="submit" name="update" value="Opdater" /> </form> <?php } mysql_close(); ?>
Denne er jeg dog ikke helt sikker på er kodet optimalt eller korrekt - gider du kigge efter - dog ser det udtil at virke!!!
for at komme ind til rettesystemt ville jeg gerne have login ned på en side og ikke som den sædvanlige boks der fremkommer.
Jeg anvender .htaccess, som jeg selv kan lave og har tidliger brugt javascript til at få 'boksen' ned på siden men ville høre om det ikke kunne lade sig gøre med php.
Den skal ikke genrererer password osv bare en enkelt en hvor selve interfacet er på siden og man så skrive navn og kode og så omstiller den til tabel.php
Mht. til det andet, kan det naturligvis laves i php, så du kan undvære .htaccess. Jeg forstår bare ikke hvorfor du vil det. .htaccess er da nemt og sikkert.
nej, jeg vil ikke undvære .htaccess det eneste jeg gerne ville er at få login'et ned på siden i stedet for den sædvanlige popup-boks i exploren og det har jeg før gjort med javascript hvor den anveder .htaccess'en
det med ( ) har du da sikkert ret i ikke behøves, men det var nu mere for at beskrive hvordan jeg laver links, jeg skal så bare have den sider jeg har rettet sat links ind under der hvor den viser det rettede resultat - altså links ud til selve siden - det rettede er jo kun en del af felterne mm.
Nu er der jo mange indlæg i den her kategori, men jeg prøver da så vidt muligt at følge med, når jeg har tid. Her er et svar, så kan du tildele de point du synes. Det er ok med mig. ;o)
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.