TestMax.dk Paster
  • Forside
  • Print
  • Bookmark
  • Kontakt
  • SiteMap


infobox infobox
 

Opdater forside

20-10-2008 23:57:07
 
 
Muligheder (Anmeld)
Skrevet af rsditlev
Kliks 389
Kategori PHP Generelt
Hej eksperter. jeg er igang med at leje med php også skal jeg havde et adminsystem. så man kan opdatere alle sine sidder via adminmodule. kan ikke rigtig få det til at virke.

test-opret.php det er den side hvor jeg kan ændre min forside.

function GetSQLValueString($theValue, $theType, $theDefinedValue = "", $theNotDefinedValue = "")
{
$theValue = (!get_magic_quotes_gpc()) ? addslashes($theValue) : $theValue;

switch ($theType) {
case "text":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "long":
case "int":
$theValue = ($theValue != "") ? intval($theValue) : "NULL";
break;
case "double":
$theValue = ($theValue != "") ? "'" . doubleval($theValue) . "'" : "NULL";
break;
case "date":
$theValue = ($theValue != "") ? "'" . $theValue . "'" : "NULL";
break;
case "defined":
$theValue = ($theValue != "") ? $theDefinedValue : $theNotDefinedValue;
break;
}
return $theValue;
}

$editFormAction = $_SERVER['PHP_SELF'];
if (isset($_SERVER['QUERY_STRING'])) {
$editFormAction .= "?" . htmlentities($_SERVER['QUERY_STRING']);
}

if ((isset($_POST["MM_insert"])) && ($_POST["MM_insert"] == "gemt")) {
$insertSQL = sprintf("INSERT INTO bruger (brugernavn, password) VALUES (%s, %s)",
GetSQLValueString($_POST['overskrift'], "text"),
GetSQLValueString($_POST['indhold'], "text"));

mysql_select_db($database_db, $db);
$Result1 = mysql_query($insertSQL, $db) or die(mysql_error());

$insertGoTo = "test-opret.php";
if (isset($_SERVER['QUERY_STRING'])) {
$insertGoTo .= (strpos($insertGoTo, '?')) ? "&" : "?";
$insertGoTo .= $_SERVER['QUERY_STRING'];
}
header(sprintf("Location: %s", $insertGoTo));
}

mysql_select_db($database_db, $db);
$query_tjek = "SELECT * FROM forside ORDER BY fid DESC";
$tjek = mysql_query($query_tjek, $db) or die(mysql_error());
$row_tjek = mysql_fetch_assoc($tjek);
$totalRows_tjek = mysql_num_rows($tjek);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<form id="gemt" name="gemt" method="POST" action="<?php echo $editFormAction; ?>">
<table width="503" border="0">
<tr>
<td width="69" valign="top">overskrift:</td>
<td width="424"><label>
<input name="overskrift" type="text" id="overskrift" value="<?php echo $row_tjek['overskrift']; ?>" size="60" />
</label></td>
</tr>
<tr>
<td valign="top">Indhold:</td>
<td><label>
<textarea name="indhold" cols="60" rows="20" id="indhold"><?php echo $row_tjek['indhold']; ?></textarea>
</label></td>
</tr>
<tr>
<td valign="top">&nbsp;</td>
<td><label>
<input name="gemt" type="submit" id="gemt" value="Gemt" />
</label></td>
</tr>
</table>
<input type="hidden" name="MM_insert" value="gemt">
</form>
</body>
</html>
<?php
mysql_free_result($tjek);
?>


forside.php det her så her at den bliver postede.


<?php require_once('../Connections/db.php'); ?>
<?php
mysql_select_db($database_db, $db);
$query_forside = "SELECT * FROM forside ORDER BY fid DESC";
$forside = mysql_query($query_forside, $db) or die(mysql_error());
$row_forside = mysql_fetch_assoc($forside);
$totalRows_forside = mysql_num_rows($forside);
?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
</head>

<body>
<table width="394" border="0">
<tr>
<td width="354"><strong><?php echo $row_forside['overskrift']; ?></strong></td>
</tr>
<tr>
<td><?php echo $row_forside['indhold']; ?></td>
</tr>
</table>
</body>
</html>
<?php
mysql_free_result($forside);
?>


jeg laver det her i dreamweaver.
men jeg har ikke oprettet nogen tabller i min database i nu fordi jeg ikke lige ved hvordan tabllen skal laves. kan i hjælpe mig det vil være perfekt.

test.php den side skal jeg kunne opdatere min forside hele tiden hvis jeg vil skrive noget nyt på den.
Mvh Martin
 
infobox infobox


infobox infobox
 
#1jordz(Anmeld) 21-10-2008 13:57:25
 
 
Lad mig gætte du har søgt 60 forskellige steder på nettet og strikket det her sammen ud fra de forskellige resultater?

må indrømme at det er meget ringe det du har lavet og langt fra det "optimale" og "nemme".
vil forslå du starter fra scratch!

start med og sig hvilke værdier du vil gemme fx. id(int), title(varchar(255)),text(text),by(varchar(255),created (dato)
herefter laver du denne tabel på din database, eventuelt med navnet pages på.

du indsætter et par tilfældige rækker og laver output kan laves meget simpelt:


<?php
if (strlen($_GET['id'])>0){
$sql = "SELECT * FROM `pages` WHERE `id` = '".mysql_real_escape_string($_GET['id'])."' LIMIT 1";
} else {
$sql = "SELECT * FROM `pages` WHERE 1 ORDER BY `created` DESC";
}
$query = mysql_query($sql) or die(mysql_error());
if (mysql_num_rows($query)==1){
$data = mysql_fetch_assoc($query);
?>
<table>
<tr><td><h1><?=$data['title']?></h1></td>
<td><?=$data['by']?></td></tr>
<tr><td colspan="2"><?=$data['text']?></td></tr>
<tr><td colspan="2" style="text-align:right"><?=$data['created']?></td></tr>
</table>
<?php
} else {
echo "ERROR, No data collected!";
}
?>

(ikke testet)

nu har du så lavet visningen så skal du blot lave indsættelsen, et forslag kunne være at samle rediger og oprettelsen på samme sted så du kun skal lave 1 side til redigereingen!


<?php
if (strlen($_GET['id'])>0){
$sql = "SELECT * FROM `pages` WHERE `id` = '".mysql_real_escape_string($_GET['id'])."' LIMIT 1";
$query = mysql_query($sql) or die(mysql_error());
$data = mysql_fetch_assoc($query);
}
if ($_POST['submit'] == 'submit'){
$sql = "`pages` SET
`title` = '" . mysql_real_escape_string( $_POST['title'] ) . "',
`text` = '" . mysql_real_escape_string( $_POST['text'] ) . "',
`by` = '" . mysql_real_escape_string( $_POST['by'] ) . "'";
if (strlen($_POST['id'])>0){
        $sql = "UPDATE ".$sql." WHERE `id` = '" . mysql_real_escape_string( $_POST['id'] ) . "' LIMIT 1";
} else {
       $sql = "INSERT INTO " . $sql .",`created` = NOW()";
}
mysql_query( $sql ) or die(mysql_error());
//Du kan hente id på den nye side ved at checke $_POST['id'] hvis den er strlen==0 så mysql_insert_id().
}
?>
<table>
<tr>
<td>Title</td>
<td><input type="text" name="title" value="<?=$data['title']?>" /></td>
</tr>
<tr>
<td>By</td>
<td><input type="text" name="by" value="<?=$data['by']?>" /></td>
</tr>
<tr>
<td>Text</td>
<td><textarea name="text"><?=$data['text']?></textarea></td>
</tr>
</table>
<input type="hidden" value="<?=$data['id']?>" name="id" />
<input type="submit" value="submit" name="submit" />

(ikke testet)

Mit eksempel her er blot at vise at det er MEGET hurtigere at lave de enkelte SQL's midt i teksten istedet for at lave 1000 funktioner og kalde dem hele tiden.
Samtidig har jeg også vist dig hvordan du forholdsvis let kan lave administrationsdelen af siderne, dog vil jeg forslå dig at bruge TinyMCE som WYSIWYG editor i dit textarea.

der mangler dog bruger delen til denne administrationsdel, til dette kan jeg referere til en anden guide jeg har lavet her:
http://www.testmax.dk/For.....lt-login-system.aspx
Sprog: PHP - HTML - CSS - Javascript - MSL
Hjemeside: [url]http://www.Webcomfort.dk[/url]
 
infobox infobox

infobox infobox
 
#2rsditlev(Anmeld) 21-10-2008 16:12:17
 
 
Det er ikke noget jeg har hentet jeg har lavet det i dreamweaver 8. Hvis du kender det der program. men tak forhjælpen. jeg har kun redigeret i min mysql database. også virkede det. men skal lige prøve dit forslag. ;)
 
infobox infobox

infobox infobox
 
#3rsditlev(Anmeld) 21-10-2008 16:17:01
 
 
Denne her code har jeg lavet i dreamweaver 8 "Den virker" Men ser den normalt ud. eller skal selv begynde at lære at lave det i nota.



<?php require_once('Connections/db.php'); ?>
<?php
// *** Validate request to login to this site.
if (!isset($_SESSION)) {
session_start();
}

$loginFormAction = $_SERVER['PHP_SELF'];
if (isset($_GET['accesscheck'])) {
$_SESSION['PrevUrl'] = $_GET['accesscheck'];
}

if (isset($_POST['brugernavn'])) {
$loginUsername=$_POST['brugernavn'];
$password=$_POST['password'];
$MM_fldUserAuthorization = "";
$MM_redirectLoginSuccess = "login-on.php";
$MM_redirectLoginFailed = "login-fail.php";
$MM_redirecttoReferrer = false;
mysql_select_db($database_db, $db);

$LoginRS__query=sprintf("SELECT brugernavn, password FROM bruger WHERE brugernavn='%s' AND password='%s'",
get_magic_quotes_gpc() ? $loginUsername : addslashes($loginUsername), get_magic_quotes_gpc() ? $password : addslashes($password));

$LoginRS = mysql_query($LoginRS__query, $db) or die(mysql_error());
$loginFoundUser = mysql_num_rows($LoginRS);
if ($loginFoundUser) {
$loginStrGroup = "";

//declare two session variables and assign them
$_SESSION['MM_Username'] = $loginUsername;
$_SESSION['MM_UserGroup'] = $loginStrGroup;       

if (isset($_SESSION['PrevUrl']) && false) {
$MM_redirectLoginSuccess = $_SESSION['PrevUrl'];       
}
header("Location: " . $MM_redirectLoginSuccess );
}
else {
header("Location: ". $MM_redirectLoginFailed );
}
}
?>
 
infobox infobox

Påmindelse ved nyt svar

Ved at tilmelde dig automatisk påmindelse, modtager du en email så snart denne tråd bliver besvaret, dog sender vi kun en mail til dig, også selvom der er kommet flere svar, simpelthen for at spare dig for spam i din indbakke.


infobox infobox
  Svar på tråden  
   
 
 
infobox infobox

infobox infobox
  Læs dette før du sender dit indlæg!  
 
Ved tryk på send knappen accepterer du vores regelsæt som kan læses her
Praktiske informationer
Type Eksempel Resultat
Fed [b]din tekst[/b] din tekst
Kursiv [k]din tekst[/k] din tekst
Understreg [u]din tekst[/u] din tekst
Kode felt [code]din tekst[/code]
din tekst
infobox infobox