Denna delen av 99 uppdateras inte längre utan har arkiverats inför framtiden som ett museum.
Här kan du läsa mer om varför.
Mac-nyheter hittar du på Macradion.com och forumet hittar du via Applebubblan.

PHP och MySQL: Alla inställningar i en fil

Tråden skapades och har fått 5 svar. Det senaste inlägget skrevs .
1

Jag bestämde mig i morse för att börja försöka lära mig hur PHP och MySQL fungerar istället som nu, bara konstatera att det fungerar. Därför har jag skrivit ett projekt att prova mig fram med. Filen view.php hämtar data från databasen och presenterar den. Filen edit.php innehåller ett formulär för att redigera informationen i databasen. Filen engine.php används av formuläret för att uppdatera databasen. Jag har skapat databasen red_db, som innehåller tabellen datatabell, som innehåller kolumnen datatext. I kolumnen är det tänkt att bara lagras en post som innehåller informationen som view.php ska presentera.

Så här ser view.php ut:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict...">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<title>Redigerbar sida</title>
</head>
<body>

<?php

$link = mysql_connect('localhost', 'red_user', 'red_pass');
if (!$link) {
	die('Could not connect: ' . mysql_error());
}
$result = mysql_query('SELECT datatext FROM red_db.datatabell');
if (!$result) {
	die('Could not query:' . mysql_error());
}
echo mysql_result($result, 0); 

mysql_close($link);

?>

<hr />
<p><a href="edit.php">Redigera sidan</a>.</p>

</body>
</html>

Så här ser edit.php ut:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict...">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<title>Redigera sida</title>
</head>
<body>
<?php
	$link = mysql_connect('localhost', 'red_user', 'red_pass');
	if (!$link) {
		die('Could not connect: ' . mysql_error());
	}
	
	$result = mysql_query('SELECT datatext FROM red_db.datatabell');
	if (!$result) {
		die('Could not query:' . mysql_error());
	}
?>

<form method="post" action="engine.php">
	<textarea name="textfield" rows="16" cols="80"><?php echo mysql_result($result, 0); ?></textarea> 
	<br />
	<br />
	<input type="submit" id="submit" value="Ändra">
</form>

<?php
	mysql_close($link);
?>

<hr />
<p><a href="view.php">Visa sidan</a>.</p>

</body>
</html>

Så här ser engine.php ut:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict...">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
	<meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
	<title>Uppdatering sker</title>
</head>
<body>

<?php
$link = mysql_connect('localhost', 'red_user', 'red_pass');
if (!$link) {
	die('Could not connect: ' . mysql_error());
}

mysql_query("UPDATE red_db.datatabell SET datatext = '$_POST[textfield]' ") or die('Could not query:' . mysql_error());

mysql_close($link);

echo '<p>Uppdatering utförd.</p>';

?>

<hr />
<p><a href="view.php">Visa sidan</a>.</p>

</body>
</html>

Det fungerar precis som det ska. Informationen i databasen ändras. Å, ä och ö ser ut som de ska. Allt sådant fungerar. Men det känns lite onödigt att inställningarna för databasen, användarnamnet och lösenordet ska finnas i alla filer. Därför skulle jag vilja skapa en fil som heter t ex config.php som jag har alla inställningar i. Men hur gör jag det?

Senast redigerat 2005-12-16 19:02
  • Medlem
  • 2005-12-16 20:54
include('/path/till/config.php');

inkluderar specifierad fil i dokumentet.

virtual()

Är också rätt smidigt, läs manualen för att ta reda på skillnaden mellan dom.

virtual är smidigt framförallt om man vill göra typ

virtual('yay.php?foo=bar');
  • Oregistrerad
  • 2005-12-17 17:37

Jag ser ofta till att köra:

require('conn.php');

Se: http://se2.php.net/require

Tack så mycket.

Förresten, vad är skillnaden mellan include, require och require_once?

  • Medlem
  • Svedala
  • 2005-12-18 14:59

Require innebär att scriptet vägrar köra om filen av någon anledning inte skulle kunna inkluderas. Med include kör scriptet på ändå, men risken finns ju att fel uppstår i resten av scriptet om inte filen kan inkluderas.

_once(), antar jag betyder att om du inkluderar samma fil på två ställen antingen på samma sida direkt eller indirekt genom någon annan fil, så kommer PHP-motorn att kolla om filen redan finns inkluderad sen innan. Om man bara skriver include, och du råkar inkludera två gånger så kommer PHP-motorn att rapportera ett fel. Så funkar det i alla fall i C++ så det borde väl vara samma i PHP.

Jag läste någonstans att det var bättre att hålla koll på sina includes och använda vanliga include snarare än att använda _once() alternativet. Dock så tror jag inte att detta innebär någon större overhead. Dock är det ju alltid bra att hålla koll på strukturen på sidan så man vet vad man håller på med

1
Bevaka tråden