Gå til innhold

MYSQL, PHP, administrering via webside


Anbefalte innlegg

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
Videoannonse
Annonse

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

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 av chop-chop
Lenke til kommentar

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

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

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

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 av grimjoey
Lenke til kommentar

Noen som har begynt juleferien allerede ja :D

 

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 :thumbup:

 

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 av chop-chop
Lenke til kommentar

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 av grimjoey
Lenke til kommentar

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 av chop-chop
Lenke til kommentar

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...