PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Datensätze bearbeiten


edgar.basler
05.06.2004, 12:28:09
Wer kann mir an einem kleinen Beispiel zeigen wie man bestimmte Datensätze löschen, einfügen bzw. ändern kann?

Ich bin bereits soweit, daß ich in Tabellenform alle Datensätze sehe.

Ps.: Ich arbeite mit PHP und MySql. Es geht nicht um die Syntax von MySql, sondern um das Script von PHP

Corvin
05.06.2004, 12:41:13
// Inhalt gelöscht

Corvin
05.06.2004, 12:42:10
// Inhalt gelöscht

Marilu
05.06.2004, 14:47:40
@Corvin Gröning

Dast Du Dir eigentlich mal die Mühe gemacht, Dein "Tutorial" selbst auszuprobieren? Scheinbar nicht, sonst hättest Du auch die entsprechenden Fehlermeldungen bekommen.

Nach Beseitigung der ersten Fehler kommt folgende Startseite (hier als HTML):
<html>
<head>
<title>News</title>
</head>
<body>
<div align=center>Zur Zeit sind 0 Einträge vorhanden. <br>
Seite - Einträge von 0 bis 0 </div><br><br><br>
0&nbsp;</div></body>
</html> Und jetzt wie weiter?

Greets, Marilu

P.S.: Hast Du Dir mal den Eintrag
hier (http://www.selfphp3.de/forum/showthread.php?s=&threadid=1835) von |Coding durchgelesen?

Corvin
05.06.2004, 14:58:00
Ja, stimmt hätte ich eigentlich verlinken sollen.

Ich habe das Tutorial natürlich getetestet! Und es gab keine Fehler oder so. Was meinst du denn?

chris17
05.06.2004, 15:04:32
...daß allein in der "aendern.php" 5 mal die Zugangsdaten angegeben werden und 5 mal die DB-Verbindung aufgebaut wird, ist schon etwas unglücklich.


//...
$abfrage = "SELECT titel FROM news WHERE id = $chg_id"; // Die Spalte 'Titel' wird ausgewählt
$ergebnis = mysql_query($abfrage); // Die Daten werden abgefragt
# Wenn genau ein Datensatz ausgelesen wird, wozu braucht man dann eine "while" Schleife?
while($row = mysql_fetch_object($ergebnis))
//...

Corvin
05.06.2004, 15:09:13
Stimmt, dass ich das etwas umständlich gemacht habe und es auch überflüssig ist, aber es geht so. (Das Tutorial habe ich vor über einem Jahr geschrieben (da war ich noch nicht ganz so erfahren, ich bin breits dabei, es komplett zu überarbeiten).

fizzle
05.06.2004, 15:15:33
also ich finde sein tutorial ganz ok.

Marilu
05.06.2004, 18:09:43
@Corvin Gröning
> Und es gab keine Fehler oder so. Was meinst du denn?

Der erste Fehler kam schon in Zeile 13 der index.php:

<html>
<head>
<title>News</title>
</head>
<body>
<?php
$server = "localhost";
$user = "Benutzername";
$pass = "Passwort";
$datenbank = "Newsdatenbank";
$proseite=10; // Die Anzahl der Einträge pro Seite wird festgelegt
$db = mysql_connect ($sqlhost,$username,$passwort); // Die Verbindung zur Datenbank wird aufgebaut
mysql_select_db ($database); // Die Datenbank wird ausgewählt

Wie sollte es nach der Startseite denn weitergehen (siehe mein vorheriges Posting von der dargestellten index.php)?

Marilu
05.06.2004, 18:13:51
@Corvin Gröning, @fizzle

Sorry, wenn meine Kritik falsch rüberkam. Ich will sicher nicht das Tutorial schlecht machen; es zeigt vieles, was ein Newcomer gut gebrauchen kann. Ich denke nur, ein solcher muß es auch ans Laufen bekommen; und da er kleine Fehler sicherlich nicht so leicht findet, sollte es einigermaßen fehlerfrei sein.

Greetz, Marilu

chris17
05.06.2004, 21:08:57
Hallo zusammen,

meine Anmerkungen waren auch konstruktiv gemeint.
Wenn man ein Skript auf einem neuen/fremden Server zum Laufen bringen moechte, hat doch kein Mensch Lust die Zugangsdaten in mehreren Skripten an mehreren Stellen zu aendern... :-)
Das wird zentral an einer Stelle erledigt.

Ein Vorschlag:

<?php
/*
z.B. als "verbindung_db.php" speichern
Wenn sich Zugangsdaten aendern, muessen sie nur hier aktualisiert werden.
*/
$server = "lokalhorst";
$user = "Benutzername";
$pass = "Passwort";
$datenbank = "Newsdatenbank";

$verbindung = mysql_connect($server,$user,$pass);
mysql_select_db($datenbank);
?>

Und dann in der "aendern.php:"

<?php
/*
...einfach in jedem Skript, dass eine DB_Anbindung braucht inkludieren...
*/
include 'verbindung_db.php';

$chg_id = $_POST['chg_id']; // Könnte wichtig sein -> "register_globals=off"

/*
Eine Abfrage reicht vollkommen
*/
$abfrage = "SELECT
titel, kategorie, verfasser, verfassermail, newstext
FROM
news
WHERE
id = $chg_id";
/*
"or die(mysql_error())" wuerde ich nach der Entwicklungsphase rausnehmen.
*/
$ergebnis = mysql_query($abfrage)or die(mysql_error());

$row = mysql_fetch_object($ergebnis)or die(mysql_error());
?>
<html>
<head>
<title>News - &Auml;ndern</title>
</head>
<body>
<form action="aendernf.php" method="POST">
<!--
Ich würde hier die ID nicht in einem TEXT-Feld ausgeben lassen.
Was passiert wenn der Benutzer die ID ändert?
//-->
ID des zu ändernden Eintrages:<br><input type="text" name="chg_id" maxlength="11" value="<?php echo $chg_id; ?>">
<br>
Titel:<br>
<input type="text" name="titel" maxlength="100" value="<?php echo $row->titel; ?>">
<br>
Kategorie:<br>
<input type="text" name="datum" maxlength="250" value="<?php echo $row->kategorie; ?>">
<br>
Verfasser:<br>
<input type="text" name="verfasser" maxlength="100" value="<?php echo $row->verfasser; ?>">
<br>
Verfassermail:<br>
<input type="text" name="verfassermail" maxlength="250" value="<?php echo $row->verfassermail; ?>">
<br>
Newstext:
<br>
<textarea cols="40" rows="5" name="newstext"><?php echo $row->newstext; ?></textarea>
<br><br>
<input type="submit" value="Ändern">
</form>
</body>
</html>

<?php
mysql_free_result($ergebnis);
mysql_close($verbindung);
?>

Sieht doch schon a bissl schlanker aus, oder?

Grüsse

chris17

Corvin
05.06.2004, 21:41:52
hmm, das wusste ich schon, aber gut dass das hier steht, falls sich einer das Tut anguckt ;)

Corvin
08.06.2004, 19:49:48
HAllo,
ich habe das Tutorial komplett überarbeitet, selber getestet und auch andre testen lassen. Es geht.

Wen es noch interessiert, es ist jetzt hier (http://www.pc-guides.de/include.php?path=content/articles.php&contentid=37&PHPKITSID=b2068d4ed0f76c1dd4876cbe033f3500) zu finden.
Ist übrigens die Community Seite die ich grade mit nem Freudn aufbaue.

feuervogel
08.06.2004, 21:05:11
wow, da hat ja jemand gelernt, php-code zu highlighten;) freut mich! da ist doch aber jeweils noch ein zeilenumbruch pro zeile zu viel, oder ist das absicht?

Corvin
08.06.2004, 21:17:47
Das ist absicht. Da der Code automatisch umgebrochen wird, soll erkannt werden wo nur automatisch umgebrochen wurde und wo einer wirklich hingehört.

feuervogel
10.06.2004, 00:00:19
>Das ist absicht.

aha.

der link zu deinem tutorial geht nicht mehr...