PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Benutzer Bearbeiten



dokdobler
19.01.2009, 07:55
Hi,

Also ich spiel gerade einwenig mit PHP rum und habe nun ein kleines Problem, ich möchte gerne in einem Passwort geschützten Bereich einen Link machen - Benutzer Bearbeiten- Soweit so gut habe ich gemacht und habe es auch schon zusammen geschnippselt


<?php
}elseif($_POST['password'] != $_POST['password2']) {
echo '<form action="bearbeiten.php" method="post">';
echo '<p align="center">Die Passw&ouml;rter stimmen nicht &uuml;berein!<br><br>';
echo '<input type="submit" name="zurueck" value="Zur&uuml;ck"></p>';
echo '</form>';
}else{
$pass = md5($_POST['password']);
$email = $_POST['email'];
if($insert = @mysql_query("UPDATE '".$_SESSION['user']."' SET('$pass','$email')")) {
echo '<p align="center">Benutzer wurde bearbeitet!<br><br><a href="index.php">Zur Admin-Seite</a></p>';
}else{
echo '<p align="center">Beim Bearbeiten des neuen Benutzers trat leider ein Fehler auf!<br><br><a href="index.php?page=bearbeiten">Zur&uuml;ck</a></p>';
}
}
function check_emailsyntax($email) {
if (eregi("^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}\$",$email)==1) {
return true;
}else{
echo '<p align="center">Bitte geben sie eine Korreckte E-Mail Adresse an</p>';
}
}
?>nur das Problem ist egal was ich mache er gibt immer den fehler aus
Beim Bearbeiten des neuen Benutzers trat leider ein Fehler auf!meine frage was habe ich da falsch gemacht??

X21
19.01.2009, 08:26
Hau mich wenn ich falsch liege (bin müde) , aber solltest du nicht erstmal die Verbindung zur Datenbank herstellen?

dokdobler
19.01.2009, 08:41
verbindung wurde weiter oben schon erstellt ist nicht der ganze code sondern nur der bereich der dafür normal zuständig ist in der MYSQL Datenbank den eintrag zu ändern

mfg

hersch24
19.01.2009, 09:08
ganzen source posten

dokdobler
19.01.2009, 09:23
[PHP]<?php
session_start();
if(!session_is_registered('user') || $_SESSION['user'] == "") {
header("location:index.php");
die;
}
require("connect.inc.php");
?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>Neuen Benutzer anlegen</title>
<link rel="stylesheet" type="text/css" href="style.css"></head>
<body>
<?php if(!isset($_POST['submit'])) { ?>
<form action="<?php $PHP_SELF ?>" method="post">
<table width="400" bgcolor="#ffffff" border="0" cellpadding="5" cellspacing="1" align="center">
<tr>
<td bgcolor="#ffffff" align="center" colspan="2"><strong>Benutzer Bearbeiten </strong></td>
</tr>
<tr>
<td width="170" bgcolor="#ffffff">Benutzername</td>
<td width="230" bgcolor="#ffffff"><?php echo "<b><em>".$_SESSION['user']."</em></b>"; ?></td>
</tr>
<tr>
<td width="170" bgcolor="#ffffff">Passwort</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
</tr>
<tr>
<td width="170" bgcolor="#ffffff">Passwort wiederholen</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password2" size="20" class="input"></td>
</tr>
<tr>
<td bgcolor="#ffffff">E-Mail</td>
<td bgcolor="#ffffff"><input type="text" name="email" size="20" class="input"></td>
</tr>
<tr>
<td bgcolor="#ffffff" align="center" colspan="2">
<input type="submit" name="submit" value="Benutzer bearbeiten" class="button"> </td>
</tr>
</table>
</form>
<?php
}elseif($_POST['password'] != $_POST['password2']) {
echo '<form action="bearbeiten.php" method="post">';
echo '<p align="center">Die Passw&ouml;rter stimmen nicht &uuml;berein!<br><br>';
echo '<input type="submit" name="zurueck" value="Zur&uuml;ck"></p>';
echo '</form>';
}else{
$pass = md5($_POST['password']);
$email = $_POST['email'];
if($insert = @mysql_query("UPDATE '".$_SESSION['user']."' SET('$pass','$email')")) {
echo '<p align="center">Benutzer wurde bearbeitet!<br><br><a href="index.php">Zur Admin-Seite</a></p>';
}else{
echo '<p align="center">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br><br><a href="index.php?page=bearbeiten">Zur&uuml;ck</a></p>';
}
}
function check_emailsyntax($email) {
if (eregi("^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}\$",$email)==1) {
return true;
}else{
echo '<p align="center">Bitte geben sie eine Korreckte E-Mail Adresse an</p>';
}
}
?>
</body>
</html>


das ist der ganze code

mfg

Cout
19.01.2009, 10:22
Von wegen ganzer Code wo ist den die eingebundene Datei?
Aber so geht es auch. Dein Fehler ist der query.
Aber ich hab alles mal ein bisschen kommentiert.



<?php

// Ich sag es jedem der diese scheiß session Funktion von php bnnutz
// baut euch eure eigene Funktion wenn ihr schon die Datenbank nutz.
session_start();

if( !session_is_registered('user') || $_SESSION['user'] == "")
{
header("location:index.php");
die;
}
// reuire_once oder willst du die Datei öfter einbinden?
require("connect.inc.php");
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>

<head>
<!-- Ich denk es geht um das Bearbeiten von einem vorhandenen User -->
<title>Neuen Benutzer anlegen</title>
<!--
Du benutzt für alle inputs und submits eine eigene Klasse
ich frag die warum so viel mühe schreib lieber für Ausnahmenen eine klasse,
die du in den Tags angeben kannst anstatt über alle die Klasse anzugeben.
// Wird auf alle inputs angewendet
input { background:#d5d5d5; }
// Wird auf alle input mit der Klasse input angewendet
.input { background:#000000; }
-->
<link rel="stylesheet" type="text/css" href="style.css">
<!-- Meta Zeichenkodierung fehlt -->
</head>

<body>
<!-- Man kann auch hier den Code einrücken -->
<?php if( !isset( $_POST['submit'] ) ) { ?>

<form action=" <?php $PHP_SELF ?> " method="post">
<!-- Wenn du schon eine CSS Datei angibts dann nutz sie auch und setze nicht noch im HTML Code Attribute.
cellpadding="5" cellspacing="1" ist veraltet nutz dafür lieber die css eigenschaften -->
<table width="400" bgcolor="#ffffff" border="0" cellpadding="5" cellspacing="1" align="center">
<!-- Wo ist den tbody ? leider ist dieser Tag pflicht, weil sonst nur unötige Fehler durch den IE entstehen!
Dort sieht die Verarbeitung so aus: table -> thead/tbody/tfooter -> tr -> td -->
<tr>
<td bgcolor="#ffffff" align="center" colspan="2"><strong>Benutzer Bearbeiten </strong></td>
</tr>
<tr>
<td width="170" bgcolor="#ffffff">Benutzername</td>
<!-- Wemm du schon php und html auf so eine schlechte Art und Weise trennst,
dann mach es bitte einheitlich und misch nicht noch in einen php tag html -->
<td width="230" bgcolor="#ffffff"><b><em><?php echo $_SESSION['user']; ?> </em></b> </td>
</tr>
<tr>
<td width="170" bgcolor="#ffffff">Passwort</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password" size="20" class="input"></td>
</tr>
<tr>
<td width="170" bgcolor="#ffffff">Passwort wiederholen</td>
<td width="230" bgcolor="#ffffff"><input type="password" name="password2" size="20" class="input"></td>
</tr>
<tr>
<!-- Die eMail soll jedes mal neu angegeben werden?
Lade sie lieber aus der Datenbank so brauch man sie nur noch abändern, wenn man es möchte -->
<td bgcolor="#ffffff">E-Mail</td>
<td bgcolor="#ffffff"><input type="text" name="email" size="20" class="input"></td>
</tr>
<tr>
<td bgcolor="#ffffff" align="center" colspan="2">
<input type="submit" name="submit" value="Benutzer bearbeiten" class="button"> </td>
</tr>
<!-- eof tbody -->
</table>
</form>
<?php
} else if( $_POST['password'] != $_POST['password2'] ) {

// Viel zu umständlich JS ist heut zu Tage pflicht oder ein simpler link zurück
echo '<p align="center">Die Passw&ouml;rter stimmen nicht &uuml;berein!<br><br>';
echo '<input type="submit" value="Zur&uuml;ck" onclick="javascript:history.back();" />';

} else {

// Ah so unübersichtlich , lieber so wie ich es jetzt gemacht habe!
// ' wird nur bei Werten benutzen ` das ist das was du meintest
// Wo ist den die WHERE abfrage? und wo gibst du den den tabellen refernez an?
$result = mysql_query( "UPDATE `users`
SET `password` = '". md5( $_POST['password'] ) ."' ,
`email` = '". $_POST['email'] ."'
WHERE `user` = '". $_SESSION['user'] ."' ");

// Warum seit ihr alle zu faul euch den Fehler anzeigen zu lassen?
if ( mysql_errno() ) {
echo mysql_error();
die();
}

// Update auswerten
if( $result )
echo '<p align="center">Benutzer wurde bearbeitet!<br><br><a href="index.php">Zur Admin-Seite</a></p>';
else
// Und nun? jetzt sind alle Information weg die man eben mühevoll eingegeben hat?
echo '<p align="center">Beim Anlegen des neuen Benutzers trat leider ein Fehler auf!<br><br><a href="index.php?page=bearbeiten">Zur&uuml;ck</a></p>';

}


function check_emailsyntax( $email )
{
if ( eregi( "^([a-z0-9_]|\-|\.)+@(([a-z0-9_]|\-)+\.)+[a-z]{2,4}\$" , $email ) == 1 )
return true;
else
echo '<p align="center">Bitte geben sie eine Korreckte E-Mail Adresse an</p>';
// Funktionen sollten immer mit einem return abschließen auch wenn nichts übergeben wird.
return;
}
?>
</body>
</html>
<!--
Letztendlich kann ich nur sagen mir gefällt dieses Misch-Masch von Php und Html kein Stück,
jedoch für kleinerer Projekte durchaus annehmbar. Mein Rat schau dir lieber Template Kassen an und
wenn es nur eine simple replace Funktion für Platzhalter hat ist es schon tausend mal besser als so ein "Dreck".
Aber wie gesagt für den Anfang durch aus annehmbar.
-->
Ich hab dir noch eine mysql Klasse dran gehängt kannst dir anschauen und damit üben.

<?php

/**
* @name sql
* @desc connect to the database
* @access public
*/
class MySql
{


/**
* @name host
* @desc get the host addr
* @access private
* @var string
*/
private $host;


/**
* @name host
* @desc get the user name
* @access private
* @var string
*/
private $user;


/**
* @name passwort
* @desc get the passwort
* @access private
* @var string
*/
private $password;


/**
* @name db
* @desc get the db name
* @access private
* @var string
*/
private $db;

public $praefix;

/* IDs */
public $link_id = 0;
public $query_id = "";


/**
* @name __construct
* @desc
* @param string
* @param string
* @param string
* @param string
* @access public
* @return bool
*/
public function __construct( $host , $user , $password , $db , $praefix )
{
try
{
$this -> host = $host;
$this -> user = $user;
$this -> password = $password;
$this -> db = $db;
$this -> praefix = $praefix;
$this -> connect();
} catch ( Exception $e ) {
echo $e -> getMessage();
die();
}
return true;
}


/**
* @name __destruct
* @desc destroy everyything
* @access public
*/
public function __destruct()
{
mysql_close( $this -> link_id );
}


/**
* @name connect
* @desc connect to the database
* @access private
* @return bool
*/
private function connect()
{
$this -> link_id = mysql_connect( $this -> host, $this -> user, $this -> password);
if ( !$this -> link_id ) throw new Exception( 'Link-ID == false, connect failed' );
if ( !empty( $this -> db ) ) mysql_select_db($this -> db, $this -> link_id);
else throw new Exception( 'Database was not defined' );
return true;
}


/**
* @name query
* @desc send a query to the database
* @param string
* @param int [optional]
* @param int [optional]
* @access public
* @return string
*/
public function query( $query_string , $limit=0 , $offset=0 )
{
try
{
if($limit!=0) $query_string.=" LIMIT $offset, $limit";
$this -> query_id = mysql_query( $query_string,$this -> link_id );
if ( !$this -> query_id ) throw new Exception( $query_string );
} catch ( Exception $e ) {
echo '
<style lang="text/css">
<!--
table { margin:30px auto; border:1px solid #666; }
thead { background-color:#d4d4d4; }
td { padding:10px; }
-->
</style>


<table rules="all">
<thead>
<tr><td colspan="2"> <b> Database error</b></td></tr>
</thead>
<tbody>
<tr><td> <b> query:</b></td><td> ' . $e -> getMessage() . '</td></tr>
<tr><td> <b> mysql error:</b></td><td> ' . mysql_error().'</td></tr>
<tr><td> <b> location:</b></td><td> ' . $e -> getFile().'</td></tr>
<tr><td> <b> mysql error number:</b></td><td> ' . mysql_errno().'</td></tr>
<tr><td> <b> php version:</b></td><td> ' . phpversion().'</td></tr>
<tr><td> <b> Date:</b></td><td> ' . date('d.m.Y @ H:i').'</td></tr>
<tr><td> <b> Script:</b></td><td> ' . getenv('REQUEST_URI').'</td></tr>
<tr><td> <b> Referer:</b></td><td> ' . getenv('HTTP_REFERER').'</td></tr>
</tbody>
</table>';
die();
}
return $this -> query_id;
}


/**
* @name fetch_array
* @desc fetch a result row as an associative array, a numeric array, or both
* @param int
* @access public
* @return array
*/
public function fetch_array( $result )
{
return mysql_fetch_array( $result );
}


/**
* @name num_rows
* @desc get number of rows in result
* @param int
* @access public
* @return int
*/
function num_rows( $query_id = -1 )
{
if ( $query_id != -1 ) $this -> query_id = $query_id;
return mysql_num_rows( $this -> query_id );
}


/**
* @name affected_rows
* @desc get number of affected rows in previous MySQL operation
* @access public
* @return int
*/
function affected_rows()
{
return mysql_affected_rows( $this -> link_id );
}


/**
* @name num_rows
* @desc get the ID generated from the previous INSERT operation
* @access public
* @return int
*/
function insert_id()
{
return mysql_insert_id( $this -> link_id );
}

?>PS: Mich würde interessieren ob du es hinbekommen hast.