PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : [SQL] Text von db in Textarea laden und ändern



Everlast3310
04.06.2015, 03:25
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.


<?
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>

Kraemer84
04.06.2015, 09:29
Du musst auch den Text der angezeigt wird auch laden

ala



$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



<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

Everlast3310
04.06.2015, 13:27
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.

Kraemer84
04.06.2015, 13:37
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



$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="..


<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


<textarea name="text" cols="10" rows="3"><?php echo $data['text'];?></textarea>

Everlast3310
04.06.2015, 17:31
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:


<?
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');

Kraemer84
04.06.2015, 18:15
Du darfst die Abfrage ja nicht beim Submit reinschreiben



<?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>

Everlast3310
04.06.2015, 18:26
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

Kraemer84
04.06.2015, 20:50
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

// 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

isaack
06.06.2015, 11:30
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:



$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' "));



<!-- 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:


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:



$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' "));



<!-- 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.