Text von db in Textarea laden und ändern
Hallo, ich möchte in ein Textfeld ein Text aus der DB laden und via update den Text bearbeiten. Ich habe dafür eine Datenbank name ist datenbank, eine Tabelle tageskarte und eine Spalte text in der mysql db erstellt. Nun komme ich nicht weiter und hoffe auf eure Hilfe.
PHP-Code:
<?
if ($_POST['weg'] == 'speichern') {
$con = mysqli_connect("","root");
mysqli_select_db($con, "datenbank");
$sql = "UPDATE tageskarte SET text='" . $_POST['text']."'";
mysqli_query($con, $sql);
}
?>
<form method="post" action="">
<b>Tageskarte</b>
<br>
<br>
<table width="100%" align="center" cellpadding="1" cellspacing="0">
<tr>
<td colspan="2"><textarea name="text" style="width:100%;height:200px;"><?=$_POST['text'];?></textarea></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="weg" value="speichern"></td></tr>
</table>
</form>
Re: Text von db in Textarea laden und ändern
Du musst auch den Text der angezeigt wird auch laden
ala
PHP-Code:
$sql = mysql_query("SELECT id, text FROM tabelle ORDER BY id");
$data = mysql_fetch_assoc ($sql);
danach musst du diesen Wert der textarea zuorden .. stichwort value
PHP-Code:
<textarea name="text" style="width:100%;height:200px;" value="<?php echo $data['text'];?>"></textarea>
ist jetzt mal grob aus dem kopf raus aber so dürfte der ansatz sein .. ansonsten kannst du dir auch mal im vms ankucken wie im adminforce die texte für agb, faq, newsletter geändert werden
da ist es ein ähnliches Prinzip
lg Kraemer84
Re: Text von db in Textarea laden und ändern
Muss ich da noch eine Spalte ID mit primery key hinzufügen? Es geht ja nur um 1 Text der bei Bedarf immer wieder geändert werden soll.
Re: Text von db in Textarea laden und ändern
wenn es nur ein text ist reicht es wenn du ein Feld mit id 1 machst und dann sucht der sich das ja immer zurecht wenn du zb in der sql abfrage angibst
PHP-Code:
$sql = mysql_query("SELECT id, text FROM tabelle WHERE id = 1");
$data = mysql_fetch_assoc ($sql);
hab aber gerade gesehen das mir selber ein Fehler unterlaufen ist .. bei Textarea geht gar nicht value="..
PHP-Code:
<textarea name="text" style="width:100%;height:200px;"><?php echo $data['text'];?></textarea>
so muss das sry
// edit
ich würde auch dem textfeld nicht width und height zuordnern sondern eher cols= und rows=
ala
PHP-Code:
<textarea name="text" cols="10" rows="3"><?php echo $data['text'];?></textarea>
Re: Text von db in Textarea laden und ändern
Danke für deine Hilfe. Momentan erhaltze ich folgende Fehlermeldung im Textarea Feld: <br />
<b>Notice</b>: Undefined variable: data in <b>D:\xampp\htdocs\.......</b> on line <b>18</b><br />
Datenbankname namens datenbank wurde angelegt. Dazu die Tabelle tageskarte mit den Spalten text (typ text) und id (typ int 15)
Hier nochmal die datei:
PHP-Code:
<?
if ($_POST['weg'] == 'speichern') {
$con = mysqli_connect("","root");
mysqli_select_db($con, "datenbank");
$sql = mysql_query("SELECT id, text FROM tageskarte WHERE id = 1");
$data = mysql_fetch_assoc ($sql);
}
?>
<form method="post" action="">
<b>Tageskarte</b>
<br>
<br>
<table width="100%" align="center" cellpadding="1" cellspacing="0">
<tr>
<td colspan="2"><textarea name="text" cols="100" rows="10"><?php echo $data['text'];?></textarea></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="weg" value="speichern"></td></tr>
</table>
</form>
Hier meine Datenbank:
Tabellenstruktur für Tabelle `tageskarte`
--
CREATE TABLE IF NOT EXISTS `tageskarte` (
`id` int(15) NOT NULL,
`text` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Daten für Tabelle `tageskarte`
--
INSERT INTO `tageskarte` (`id`, `text`) VALUES
(1, '12345');
Re: Text von db in Textarea laden und ändern
Du darfst die Abfrage ja nicht beim Submit reinschreiben
PHP-Code:
<?php
// Text laden
$sql = mysql_query("SELECT id, text FROM tageskarte WHERE id = 1");
$data = mysql_fetch_assoc ($sql);
// Wenn submit dann speichern
if ($_POST['weg'] == 'speichern') {
$con = mysqli_connect("","root");
mysqli_select_db($con, "datenbank");
}
?>
<!-- Form zum Speichern -->
<form method="post" action="">
<b>Tageskarte</b>
<br>
<br>
<table width="100%" align="center" cellpadding="1" cellspacing="0">
<tr>
<td colspan="2"><textarea name="text" cols="100" rows="10"><?php echo $data['text'];?></textarea></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="weg" value="speichern"></td></tr>
</table>
</form>
Re: Text von db in Textarea laden und ändern
Jetzt erhalte ich die Fehlermeldungen: Danke für Deine Mühe :rolleyes:
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in D:\xampp\htdocs\kapitel2\settings.php on line 5
Notice: Undefined index: weg in D:\xampp\htdocs\kapitel2\settings.php on line 7
Re: Text von db in Textarea laden und ändern
Was jetzt erstmal den undefinierten Index angeht .. das Post stimmt nicht .. du kannst nicht den value nehmen der als Post angegeben wird .. hier ist es so das der "name" den Wert entspricht .. hier der "name" = submit (hab das mal so gemacht da es egal ist und rein funktional)
PHP-Code:
<?php
// Text laden
$sql = mysql_query("SELECT id, text FROM tageskarte WHERE id = 1");
$data = mysql_fetch_assoc ($sql);
// Wenn submit dann speichern
if ($_POST['weg'] == 'submit') {
$con = mysqli_connect("","root");
mysqli_select_db($con, "datenbank");
}
?>
<!-- Form zum Speichern -->
<form method="post" action="">
<b>Tageskarte</b>
<br>
<br>
<table width="100%" align="center" cellpadding="1" cellspacing="0">
<tr>
<td colspan="2"><textarea name="text" cols="100" rows="10"><?php echo $data['text'];?></textarea></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="speichern"></td></tr>
</table>
</form>
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given insagt aus das ein wert erwartet wird aber keiner vorhanden ist .. also entweder ist die tabelle nicht korrekt .. es besteht keine verbindung zur datenbank .. die felder stimmen nicht 100% wie in der tabelle ..
Wenn es jetzt gar nicht zur Lösung kommt dann schreib mir eine pn dann übernehm ich das gern (vielleicht auch als Dankeschön ein kleiner Werbegutschein ^^)
lg Kraemer84
Re: Text von db in Textarea laden und ändern
mal eine frage dazwischen werfen.
warum baut ihr immer wieder eine verbindung zur datenbank auf im $_POST['weg']? es ist doch immer eine verbidung im vms da?
Wenn du wirklich schon mysqli nutzt kannst du es wie folgt aussehen lassen:
PHP-Code:
$daten = mysqli_fetch_array(db_query("SELECT id,text FROM tageskarte WHERE ID ='1' "));
if($_POST['weg'] == 'submit'){$update = db_query("UPDATE tageskarte SET text = '".$_POST['text']."' WHERE id = '".$daten['id']."' ");
if($update == true){
echo 'Tageskarte aktualisiert';}else{echo 'Fehler beim aktualisieren';}
}
$daten = mysqli_fetch_array(db_query("SELECT id,text FROM tageskarte WHERE ID ='1' "));
HTML-Code:
<!-- Form zum Speichern -->
<form method="post" action="">
<b>Tageskarte</b>
<br>
<br>
<table width="100%" align="center" cellpadding="1" cellspacing="0">
<tr>
<td colspan="2"><textarea name="text" cols="100" rows="10"><?php echo $data['text'];?></textarea></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="speichern"></td></tr>
</table>
</form>
Habe da mal die Funktion db_query auch schon auf den neusten stand gebracht:
PHP-Code:
function db_query($sql_tag) {
global $count_query,$sql_open;
$count_query++;
$fargs = func_get_args();
if (!empty($fargs)) {
$vargs = array();
foreach($fargs as $key => $arg) {
$vargs[$key] = mysqli_real_escape_string($sql_open,$arg);
}
array_shift($vargs);
if (!empty($vargs))$sql_tag = vsprintf($sql_tag, $vargs);
}
if ($ret = mysqli_query($sql_open,$sql_tag)) {
return $ret;
}else {
return 0;
}
}
also die solltest du dann auch aktualisieren.
solltest du noch mysql nutzen und kein mysqli ist es schon ein wenig einfacher.
dann sollte alles so aussehen:
PHP-Code:
$daten = mysql_fetch_array(db_query("SELECT id,text FROM tageskarte WHERE ID ='1' "));
if($_POST['weg'] == 'submit'){$update = db_query("UPDATE tageskarte SET text = '".$_POST['text']."' WHERE id = '".$daten['id']."' ");
if($update == true){
echo 'Tageskarte aktualisiert';}else{echo 'Fehler beim aktualisieren';}
}
$daten = mysql_fetch_array(db_query("SELECT id,text FROM tageskarte WHERE ID ='1' "));
HTML-Code:
<!-- Form zum Speichern -->
<form method="post" action="">
<b>Tageskarte</b>
<br>
<br>
<table width="100%" align="center" cellpadding="1" cellspacing="0">
<tr>
<td colspan="2"><textarea name="text" cols="100" rows="10"><?php echo $data['text'];?></textarea></td>
</tr>
<tr><td colspan="2" align="center"><input type="submit" name="submit" value="speichern"></td></tr>
</table>
</form>
da brauchst du dann kein update der verbidungsfunktionen mehr machen.