Einzelnen Beitrag anzeigen
  #4  
Alt 09.12.2006, 15:33:03
marc26 marc26 ist offline
Anfänger
 
Registriert seit: Apr 2006
Beiträge: 50
AW: Auslesen und beschreiben einer MySQL Datenbank

Die beiden haben natürlich recht..., aber hier vielleicht eine kleine Einstiegshilfe:

Die Datenbank: (mySQL / Name: users)

user_id (auto-increment, primary key)
user_name (text)
user_password (text)
user_email (text)

Die Datenbank-Connection: (mySQL / Name: users)
Normalerweise lagert man die Datenbank-Connection in eine externe PHP Datei aus (z.B. conn.php) und verlinkt auf jeder Seite, auf der man Datenbankverbindungen benötigt vorher auf die conn.php.

conn.php kann so aussehen (in diesem Fall lokal auf deinem Rechner):

PHP-Code:
<?php
$hostname_connDB 
"localhost";
$database_connDB "users";
$username_connDB "root";
$password_connDB "1234";
$connDB mysql_connect($hostname_connDB$username_connDB$password_connDB) or trigger_error(mysql_error(),E_USER_ERROR); 
?>
Auf der Seite, auf der du eine Datenbankverbindung (wie die folgenden erstellen willst), verlinkst du gleich zu Beginn auf die conn.php Connection Seite):

PHP-Code:
<?php
// db connection
require_once('conn.php');
?>
Das Einfügen: (mySQL)
Die user_id wird nicht von dir eingefügt, sondern das erledigt die Datenbank durch die Einstellung 'auto-increment' alleine. Das ist wichtig, damit jedem Datensatz eine unverwechselbare ID (user_id) zugewiesen wird, anhand derer du z.B. in der Select Anweisung durch deine Datensätze navigieren kannst. Es kann so (auf der technischen Seite) nie zu Verwechslungen kommen, selbst wenn du es zulassen würdest, dass mehrere User den selben Namen haben.

PHP-Code:
<?php
// get user info
$user_name 'Klaus';
$user_pasword 'xray23';
$user_email 'mailto@muster.de';

// insert user info
$insertSQL "
INSERT INTO users (
user_name,
user_password,
user_email


VALUES (
'"
.$user_name."',
'"
.$user_password."',
'"
.$user_email."'
)"
;    

mysql_select_db($database_connDB$connDB);
$result mysql_query($insertSQL$connDB) or die(mysql_error());
?>
Das Auslesen eines einzelnen Datensatzes: (mySQL)
In diesem Fall wird das Passwort eines einzelnen Users erfragt. Die Anzahl der auszugebenden Datensätze begrenzt man mit 'LIMIT = 1'.

PHP-Code:
<?php
// get user_id
$user_id 1;

// get user password
mysql_select_db($database_connDB$connDB);
$query_rsGetUserPassword "

SELECT * 
FROM users
WHERE users.user_id = '"
.$user_id."'
LIMIT 1
"
;

$rsGetUserPassword mysql_query($query_rsGetUserPassword$connDB) or die(mysql_error());
$row_rsGetUserPassword mysql_fetch_assoc($rsGetUserPassword);
$totalRows_rsGetUserPassword mysql_num_rows($rsGetUserPassword);

// echo result: user_password
echo $row_rsGetUserPassword['user_password'];
?>
oder wenn du die Ausgabe direkt im HTML unterbringen willst:
Code:
<b><?= $row_rsGetUserPassword['user_password'] ?></b>
Das Auslesen mehrerer Datensätze: (mySQL)
In diesem Fall sollen alle User Namen und die dazugehörigen Passwörter erfragt werden. Die Anzahl der auszugebenden Datensätze kann man wiederum mit 'LIMIT = 10' berenzen oder man lässt 'LIMIT' einfach weg dann werden alle Datensätze ausgegeben. Mit 'ORDER BY' lässt sich die Reihenfolge der Datensätze beeinflussen. 'ASC' steht für 'ascending' (aufsteigend: 1,2,3,4 o. a,b,c,d) und DESC steht für 'descending' (absteigend: 4,3,2,1 o. d,c,b,a).

Damit man gegebenenfalls auf das Ergebnis dieser Datenbankabfrage mehrfach zurückgreifen kann, packen wir die gefundenen Datensätze in ein Array ($allUserInfo). Auf den Inhalt dieses Arrays greift man dann zurück, wenn man die User Namen und Passwörter im HTML darstellen will.

Übrigens: Das * hinter dem Select sagt aus, dass diese Abfrage die Daten aus jeder Datenbanktabellenspalte (dh. user_id,user_name,user_password,user_email) abfragt. Da wir für unsere Ausgabe von User Namen und User Passwörtern aber nicht alle brauchen, könnte man das Sternchen auch durch die einzelnen Spalten, die man braucht ersetzen: SELECT users.user_name, users.user_password. Für unser Beispiel ist das jetzt egal, dennoch sollte man sich das angewöhnen, da bei grossen Datenbanken die Menge der überflüssig abgefragten Spalten auf die Performance geht.

PHP-Code:
<?php
// get user info
mysql_select_db($database_connDB$connDB);
$query_rsGetUserInfo "

SELECT * 
FROM users
ORDER BY users.user_name ASC
LIMIT 10
"
;

$rsGetUserInfo mysql_query($query_rsGetUserInfo$connDB) or die(mysql_error());
$row_rsGetUserInfo mysql_fetch_assoc($rsGetUserInfo);
$totalRows_rsGetUserInfo mysql_num_rows($rsGetUserInfo);

// results in array
do { 

    
$allUserInfo[] = $row_rsGetUserInfo

} while (
$row_rsGetUserInfo mysql_fetch_assoc($rsGetUserInfo));
?>
Im HTML sähe die Ausgabe in einer Tabelle dann so aus (du kannst den HTML Code jederzeit durch PHP Code unterbrechen, solange der in <?php ... ?> eingeschlossen ist):
PHP-Code:
<table>
<?php
// loop array
foreach ($allUserInfo as $item => $value) {

    echo 
'

    <tr>
      <td>
          <b><?= $value['
user_name'] ?></b>
      </td>
      <td>
          <?= $value['
user_password'] ?>
      </td>
    </tr>

    '
;

}
?>
</table>
Das Ändern: (mySQL)

PHP-Code:
<?php
// get user_id
$user_id 1;

// get new user_password
$newpassword 'lkwpeter';

// update user_password
mysql_select_db($database_connDB$connDB);
$query "UPDATE users SET user_password = '".$newpassword."' 
WHERE user_id = '"
.$user_id."'";
mysql_query($query);
?>
Das Löschen: (mySQL)

PHP-Code:
<?php
// get user_id
$user_id 1;

// delete user_password
mysql_select_db($database_connDB$connDB);
$query "DELETE FROM users WHERE user_id = '".$user_id."'";
mysql_query($query);
?>

Geändert von marc26 (10.12.2006 um 15:34:08 Uhr)
Mit Zitat antworten