chop-chop Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Hei Jeg holder på med et kurs i webapplikasjoner. En av oppgavene er å kunne administrere en database/tabell via en webside. Er det noen som har tips til hvordan jeg kan løse dette? Jeg har forsøkt å søke på nett (og lese i bøker), men klarer ikke å koble alle kodene sammen og begynner nå å bli ganske forvirret.....! Jeanette Lenke til kommentar
j-- Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Det du er ute etter er en webside som viser en HTML-tabell, og et "kontrollpanel" for å oppdatere/skifte ut elementer i tabellen? Og dette skal baseres på PHP/MySQL? Lenke til kommentar
chop-chop Skrevet 19. desember 2007 Forfatter Del Skrevet 19. desember 2007 (endret) Ja. Noe lignende det Også må det gå an å slette rader... Endret 19. desember 2007 av chop-chop Lenke til kommentar
j-- Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Forslag: Lag en tabell i en MySQL-databasen med alle feltene du skal ha i hver rad på websiden. I tillegg legger du til feltet id, som vil fungere som en referanse. På administrasjonssiden vil jeg fåreslå noe ala: felt 1, rad 1 | felt2, rad1 | felt3, rad1 | rediger | slett felt 1, rad 2 | felt2, rad2 | felt3, rad2 | rediger | slett felt 1, rad 3 | felt2, rad3 | felt3, rad3 | rediger | slett felt 1, rad 4 | felt2, rad4 | felt3, rad4 | rediger | slett felt 1, rad 5 | felt2, rad5 | felt3, rad5 | rediger | slett opprett ny rad Ved å trykke "slett" sletter man den spesifikke raden, ved å trykke "rediger" så endrer man den spesifikke raden, og ved å trykke "opprett ny rad" oppretter man en ny rad. Du vil da trenge ihvertfall tre sider for å administrere tabellen. - En side der du viser tabellen slik som i kodefeltet over - En side der du kan opprette en ny rad i tabellen - En side der du redigerer en rad i tabellen - (muligens en side der du sletter en rad i tabellen, alt ettersom hvordan du vil gjøre det) I tillegg vil du jo (muligens) trenge en side som viser selve tabellen uten mulighet for å redigere og slette. (altså typisk noe som sluttbruker vil se) Er det noe alá dette du er ute etter? Lenke til kommentar
chop-chop Skrevet 19. desember 2007 Forfatter Del Skrevet 19. desember 2007 (endret) Jo, er nok noe sånt jeg er på jakt etter. Problemet mitt er i størst grad å klare å sette sammen siden/kodene for å det til å fungere. Er ikke helt god på å kombinere herfra og derfra Det viktigste, ut i fra oppgaven, er å kunne slette rader.... Jeg har en bok hvor de foreslår å bruke sjekkbokser, men jeg klarer ikke å finne ut av hvordan jeg skal få informasjonen som hentes fra databasen inn i et skjema..... Endret 19. desember 2007 av chop-chop Lenke til kommentar
chop-chop Skrevet 19. desember 2007 Forfatter Del Skrevet 19. desember 2007 Noen som kan vise meg, fra a til å, hvordan det gjøres? (innhenting/oppsett av data, hvordan velge hva som skal slettes, og hvordan det slettes.)/php/mysql/javascript Har sittet å lett så mye på nett nå og sett så mange forskjellige koder (som jeg ikke klarer å benytte meg av) at det har helt stoppet opp i topplokket.... (Vet ikke hvor jeg skal putte inn alle kodene og hvordan jeg må dele det opp osv osv osv) Skulle "selvfølgelig" gjerne klart dette på egenhånd, men nå tror jeg at jeg kaster inn håndkleet (før jeg tar livet av pcn). Lenke til kommentar
j-- Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Ting du må ha i orden før du begynner: Apache med PHP og MySQL. Vil også anbefale deg å ha PHPMyAdmin for å se at alt går riktig for seg med tabellen i databasen. Om du ikke har en webserver kan du bruke PC-en du sitter med nå som webserver, ved å f.eks sette opp XAMPP. Forslag: Opprett filene vis.php, rediger.php, slett.php, funksjoner.php og legg_inn.php (bruk gjerne Programmers Notepad, Notepad++ eller lignende. Det viktigste er farge på tag-er og støtte for å ha flere filer åpne) I fila functions.php legger du tilkoblingsinfo til databasen, og andre funksjoner man eventuelt kommer til å lage. Denne fila skal inkluderes på toppen av hvert av de andre dokumentene (include 'funksjoner.php';). funksjoner.php kan i starten bestå av f.eks dette: <?php function start_mysql(){ $mysql[host] = 'localhost'; $mysql[user] = 'mysql_bruker'; $mysql[password] = 'mysql_passord'; $mysql[db] = 'mysql_db'; mysql_connect($mysql['host'], $mysql['user'], $mysql['password']) or die(mysql_error()); mysql_select_db($mysql['db']) or die(mysql_error()); } ?> (Merk: Dette er bare en måte å løse oppgaven. Det finnes andre webspråk, og andre metoder å løse dette på.) Om noe blir problematisk så skrik ut Lenke til kommentar
chop-chop Skrevet 19. desember 2007 Forfatter Del Skrevet 19. desember 2007 Skriker høyt jeg vet du. Dvs. var i går jeg skrek høyt, i dag har jeg resignert Selve oppkoblingen og henting av info går greit.... men kunne du vist meg hvordan jeg setter opp (kodene) for fila slett.php? (Hvordan jeg knytter det hele sammen) Har f.eks. funnet denne koden: <?php if (isset($id)) // hvis id variabelen er satt (det skjer når man trykker på slett knappen) { $delete_query = mysql_query("delete from adressebok where id='$id'"); // dette har vi da diskutert før! header("Location: $PHP_SELF"); // her sender vi brukeren tilbake til siden hvor han kan slette rader } else { $query = mysql_query("select id, navn from tabell order by navn"); // dette har vi også diskutert før! while ($row = mysql_fetch_array($query)) // ja, denne har vi faktisk også diskutert før! { /* her har jeg lagt til en link, og i linken har jeg lagt til den unike id'en slik at hvis man trykker på slett knappen til høyre for navnet, så setter man id variabelen og første del av scriptet vil bli utført (det hvor man sletter) */ echo "<b>".$row["navn"]."</b> - <a href=$PHP_SELF?id=".$row["id"].">Slett</a><br>\n"; } } ?> Er det den som blir slett.php - og må jeg koble den til f.eks. vis.php? Og hva er det jeg må endre bortsett fra tabell (og evt. navn)? Har en tabell som består av navn, epost, beskjed (++) Lenke til kommentar
EC Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 Tror denne passer bedre under PHP, ettersom det primært sett vil være funksjoner i PHP som benyttes til dette. Flyttet. Lenke til kommentar
grimjoey Skrevet 19. desember 2007 Del Skrevet 19. desember 2007 (endret) Du bør bruke POST når du skal endre noe i databasen. GET når du kun skal vise informasjon. Dette blandt annet for at ikke linken http://www.db.no/slett.php?id=19 skal bli snappet opp av en bot. En annen ide er å beskytte tabellen litt. Det enkleste er et passord lagret i en variabel i filen. Vil du score litt ekstra på oppgaven kan du skrive et brukerhåndterings-system i tillegg. <?php $debug = TRUE; $dbhost = 'databasehost'; $dbuser = 'brukernavn'; $dbpass = 'passord'; $dbname = 'databasenavn'; $dbtable = 'tabellnavn'; function my_error() { global $debug; if ($debug) return mysql_error(); else return 'generell feil'; } $link = mysql_connect($dbhost, $dbuser, $dbpass) or die(my_error()); mysql_select_db($dbname) or die(my_error()); function checkVar($var, $type = 0) { if ($type === 0) $type =& $_POST; else $type =& $_GET; if (isset($type[$var]) && !empty($type[$var])) return TRUE; else return FALSE; } function my_qry($qry) { $result = mysql_query($qry) or die(my_error()); return $result; } function my_get($qry) { $result = my_qry($qry); while ($row = mysql_fetch_assoc($result)) { $array[] = $row; } return $array; } function my_esc($string) { if (get_magic_quotes_gpc()) $string = stripslashes($string); $string = mysql_real_escape_string($string); return $string; } if(checkVar('submit_slett')) { my_qry('DELETE FROM '.my_esc($dbtable).' WHERE id = '.(int)$_POST['submit_slett_id'].';') or die(my_error()); echo 'Raden med id '.$_POST['submit_slett_id'].' er slettet. <a href="#" onclick="document.location.href = '."'".$_SERVER['PHP_SELF']."'".';">Tilbake</a>'; } else { $description = my_get('DESCRIBE '.my_esc($dbtable).';') or die(my_error()); $tabledesc = '<tr><td>rad</td>'; foreach ($description as $desc) { $tabledesc .= '<td>'.$desc['Field'].'</td>'; } $tabledesc .= '<td>slett</td></tr>'; $select = my_get('SELECT * FROM '.my_esc($dbtable).';') or die(my_error()); $tableout = ''; foreach ($select as $rnum =>$row) { $tableout .= '<tr><td>'.$rnum.'</td>'; foreach ($row as $field) { $tableout .= '<td>'.$field.'</td>'; } $tableout .= '<td><form action="" method="POST"><input type="hidden" name="submit_slett_id" value="'.$row['id'].'" /><input type="submit" name="submit_slett" value="Slett" /></form></td></tr>'; } echo '<table border="1">'.$tabledesc.$tableout.'</table>'; } ?> for eksempel. enkelt og stygt, men det gir deg vertfall noe å bite i. (ikke lever den direkte. den er tilgjengelig på internett for læreren din også ) edit: tettet sql injection hull. Endret 20. desember 2007 av grimjoey Lenke til kommentar
Mats Danielsen Skrevet 20. desember 2007 Del Skrevet 20. desember 2007 Dersom du lager HTML tabellen hvordan den skal se ut så skal jeg få se hva jeg kan sette sammen. Er ikke så masse og gjøre på nå uansett Lenke til kommentar
chop-chop Skrevet 20. desember 2007 Forfatter Del Skrevet 20. desember 2007 (endret) Noen som har begynt juleferien allerede ja Jeg begynner i utgangspunktet med en helt enkel tabell tror jeg, (får heller fikse på utseendet etter hvert). <html> <head> <title></title> </head> <body> <table> <tr> <td>Navn</td>td>Adresse</td><td>Postnummer</td> td>Poststed</td><td>E-postadresse</td><td>Antall voksne</td> <td>Antall barn</td><td>Beskjed</td> </tr> </table> </body> </html> Tusen takk for all hjelp så lang clvn, grimjoey og mats Skal se på koden din, grimjoey, når jeg kommer hjem. Har begrensede muligheter til å jobbe med dette så lenge jeg er på jobb. Endret 20. desember 2007 av chop-chop Lenke til kommentar
AnaXyd Skrevet 20. desember 2007 Del Skrevet 20. desember 2007 Kunne du ha postet det ferdige prosjektet? Er ute etter akkurat det samme jeg også! Lenke til kommentar
grimjoey Skrevet 20. desember 2007 Del Skrevet 20. desember 2007 (endret) bruker du kolonnenavnene fra tabellen din ovenfor til feltnavn i mysql tabellen vil koden min ved hjelp av "DESCRIBE tabell;" hente de ut som første rad. Deretter vil den hente ut alle radene og legge informasjonen i samme tabell under respektive kolonnenavn. I tillegg kommer en slett knapp bak hver rad som sletter raden dersom den blir klikket. Edit: Tips. Sett gjerne inn noen "if ($debug) print_r($array);" i koden så kan du se hvordan arrayene ser ut. Jeg bruker som regel en funksjon liknende my_get() som returnerer et array med alle radene som assosiative arrayer. Endret 20. desember 2007 av grimjoey Lenke til kommentar
Mats Danielsen Skrevet 20. desember 2007 Del Skrevet 20. desember 2007 Begynner nå. Jobber her: http://danielsenweb.net/missions/chop-chop/ Lenke til kommentar
AnaXyd Skrevet 21. desember 2007 Del Skrevet 21. desember 2007 Kommet noe lengre på dette prosjektet? Er det mulig å hente ut ett tall fra databasen, og hente det inn på ei webside? Isåfall hvordan? (I sammenheng med den databasen som blir opprettet her.) Lenke til kommentar
chop-chop Skrevet 21. desember 2007 Forfatter Del Skrevet 21. desember 2007 Tenker du på å hente ut ett bestemt tall? Eller det å velge ut bestemte felter fra tabellen (alle rader)? Lenke til kommentar
AnaXyd Skrevet 21. desember 2007 Del Skrevet 21. desember 2007 Altså, hvis du f.eks har dette: Stiftemaskiner på lager | 20 Kopimaskiner på lager | 13 Dopapir | 33 Også skal du ha lagerstatusen på hjemmesida di, f.eks. Lenke til kommentar
chop-chop Skrevet 21. desember 2007 Forfatter Del Skrevet 21. desember 2007 (endret) Du kan evt. gjøre slik: // HTML-tabellens formatering - tabellstart echo "<table border='1' bordercolor='#cccccc' cellspacing='0' cellpadding='3'>"; echo "<tr> <td>Vare</td><td>Lager</td></tr>"; // henter resultatrader fra tabellen while($row = mysql_fetch_array( $result )) { // skriver ut inneholdet i radene till HTML-tabellen echo "<tr><td>"; echo $row['vare']; echo "</td><td>"; echo $row['antall']; echo "</td></tr>"; } // HTML-tabellens formatering - tabellslutt echo "</table>"; Tror jeg fant denne på en svensk side: www.webdesignskolan.se Her finner du ganske mye. Endret 21. desember 2007 av chop-chop Lenke til kommentar
AnaXyd Skrevet 21. desember 2007 Del Skrevet 21. desember 2007 Se her ja.. Den kan nok brukes! Og hvordan skal man opprette og samkjøre dette via en database da? Noe man kan bruke tidligere i denne tråden? Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå