 |
| Hinweise |
Willkommen im TP-Hilfe-Forum!Dies ist ein Forum zu den Themen Photoshop, Dreamweaver, Flash, Selbständigkeit und mehr, in dem Du Hilfe, Anleitung oder eine Lösung zu Deinen Problemen erhältst. Aktuell bist Du in unseren Foren als Gast mit reinen Leserechten unterwegs. Wenn Du Dich registrierst, kannst Du eigene Themen verfassen, deine Frage stellen und privat mit anderen TPlern kommunizieren. Weitere Foren werden zugänglich, und Du wirst – falls gewünscht – per Mail über neue Beiträge informiert. Die Registrierung ist schnell und kostenlos. Sollten bei der Registrierung Fragen auftauchen, reicht ein Klick in unsere Hilfe - Häufig gestellte Fragen oder eine kurze Mitteilung an das Support-Team. Viel Spaß bei Traum-Projekt.com |
18.05.2006, 15:13
|
#1
|
|
TP-Veteran
Registriert seit: May 2003
Ort: krefeld
|
[php & mysql] insert, update und delete
möchte einen bereich erstellen wo daten aus einer db ausgelesen werden, daneben 2 buttons - bearbeiten und löschen, ganz unten - neue anlegen.
anlegen:
da gehts schon mal los, habe leider nicht viel erfahrung mit insert, update und delete.
PHP-Code:
<?
if ($submit) {
$ber_bez_neu = $HTTP_POST_VARS["ber_bez"];
$sql = "
INSERT INTO
$table_ber
(ber_bez)
VALUES
('$ber_bez')
";
$result = mysql_query($sql) or die(mysql_error());
echo "Ihr Daten wurden abgeschickt! Ein neuer Bereich ".$ber_bez_neu." wurde angelegt. Vielen Dank!<br><br>";
}
else {
?>
<form method="post" action="<? echo $PHP_SELF ?>">
<table border="0" align="center"><tr>
<td>Neuer Bereich: </td>
<td><input name="ber_bez" type="text" id="ber_bez" value="<? echo $ber_bez ?>" size="50"></td>
</tr><tr>
<td> </td>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
warum wird da nicht angelegt?
__________________
computer tun nur das was man ihnen sagt, meistens
|
|
|
18.05.2006, 15:18
|
#2
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Register_globals off?
Nutz satt $HTTP_POST_VARS einfach die Schreibweise $_POST.
PHP-Code:
<? if (isset($_POST['submit'])&&$_POST['submit'] != "") { $ber_bez_neu = $_POST_['ber_bez']; $sql = " INSERT INTO $table_ber (ber_bez) VALUES ('$ber_bez') "; $result = mysql_query($sql) or die(mysql_error()); echo "Ihr Daten wurden abgeschickt! Ein neuer Bereich ".$ber_bez_neu." wurde angelegt. Vielen Dank!<br><br>"; } else { ?> <form method="post" action="<? echo $_SERVER['PHP_SELF'] ?>"> <table border="0" align="center"><tr> <td>Neuer Bereich: </td> <td><input name="ber_bez" type="text" id="ber_bez" value="<? echo $ber_bez ?>" size="50"></td> </tr><tr> <td> </td> <td><input type="submit" name="submit" value="Abschicken"></td> </tr> </table> </form> <? } ?>
Was ich mich nun aber frage ist, woher kommt die Var $table_ber (INSERT Befehl) und $ber_bez (FORM) ???
Geändert von webcreate (18.05.2006 um 15:20 Uhr).
|
|
|
18.05.2006, 15:38
|
#3
|
|
TP-Veteran
Registriert seit: May 2003
Ort: krefeld
|
Zitat:
|
Zitat von webcreate
Register_globals off?
|
ja, ist aus
$table_ber ist die tabelle, $ber_bez ist die spalte
__________________
computer tun nur das was man ihnen sagt, meistens
|
|
|
18.05.2006, 16:05
|
#4
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Zitat:
|
Zitat von jayjay
ja, ist aus
|
Dazu habe ich es ja auch zum Teil umgeschrieben.
Zitat:
|
Zitat von jayjay
$table_ber ist die tabelle, $ber_bez ist die spalte
|
OK, aber wo werden diese Vars befüllt? Ich sehe nichts, wo sie definiert werden. Das meinte ich.
Sollten es auch Vars sein, die über das form kommen, musst du sie auch mit $_POST schreiben, also $_POST['ber_bez'].
$table_ber kann ich allerdings sonst nirgends finden.
|
|
|
18.05.2006, 16:29
|
#5
|
|
TP-Veteran
Registriert seit: May 2003
Ort: krefeld
|
die tabelle ist in der config definiert, welche vorher included wird. du hattest ein _ zu viel in der 2 zeile ($_POST"_"['ber_bez']). es werden datensätze angelegt aber ber_bez bleibt leer
PHP-Code:
<?
if (isset($_POST['submit'])&&$_POST['submit'] != "") {
$ber_bez_neu = $_POST['ber_bez'];
$sql = "
INSERT INTO
dw_prod_ber
(ber_bez)
VALUES
('$ber_bez')
";
$result = mysql_query($sql) or die(mysql_error());
echo "Ihr Daten wurden abgeschickt! Ein neuer Bereich ".$ber_bez_neu." wurde angelegt. Vielen Dank!<br><br>";
}
else {
?>
<form method="post" action="<? echo $_SERVER['PHP_SELF'] ?>">
<table border="0" align="center"><tr>
<td>Neuer Bereich: </td>
<td><input name="ber_bez" type="text" id="ber_bez" value="<? echo $ber_bez; ?>" size="50"></td>
</tr><tr>
<td> </td>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
für alle fälle:
CREATE TABLE `dw_prod_ber` (
`ber_id` int(11) NOT NULL auto_increment,
`ber_bez` varchar(255) collate latin1_german2_ci NOT NULL default '',
PRIMARY KEY (`ber_id`)
)
__________________
computer tun nur das was man ihnen sagt, meistens
|
|
|
18.05.2006, 16:54
|
#6
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Du arbeitest da immer noch nicht überall mit den superglobals. Die musst du aber verwenden, wenn die register_globals off sind.
PHP-Code:
<?
if (isset($_POST['submit'])&&$_POST['submit'] != "") {
$ber_bez_neu = $_POST['ber_bez'];
$sql = "
INSERT INTO
dw_prod_ber
(ber_bez)
VALUES
('$_POST[ber_bez]')
";
$result = mysql_query($sql) or die(mysql_error());
echo "Ihr Daten wurden abgeschickt! Ein neuer Bereich ".$ber_bez_neu." wurde angelegt. Vielen Dank!<br><br>";
}
else {
?>
<form method="post" action="<? echo $_SERVER['PHP_SELF'] ?>">
<table border="0" align="center"><tr>
<td>Neuer Bereich: </td>
<td><input name="ber_bez" type="text" id="ber_bez" value="<? echo $_POST['ber_bez']; ?>" size="50"></td>
</tr><tr>
<td> </td>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
|
|
|
19.05.2006, 08:40
|
#7
|
|
TP-Veteran
Registriert seit: May 2003
Ort: krefeld
|
danke, funzt. hab da etwas erweitert
PHP-Code:
$ber_bez_min_lan = 3;
if (isset($_POST['submit'])&&$_POST['submit'] != "") {
if (empty($_POST['ber_bez'])) {
echo "<p>Bitte <b>Bereich</b> angeben!</p>";
}
else if (strlen($_POST['ber_bez'])<$ber_bez_min_lan) {
echo "<p>Der Bereich muss mindedestens <b>".$ber_bez_min_lan."</b> Zeichen lang sein!</p>";
}
else {
$ber_bez_neu = $_POST['ber_bez'];
$sql = "
INSERT INTO
$table_ber
(ber_bez)
VALUES
('$_POST[ber_bez]')
";
$result = mysql_query($sql) or die(mysql_error());
if ($result){
echo "Ihr Daten wurden abgeschickt! Ein neuer Bereich <b>".$ber_bez_neu."</b> wurde angelegt. Vielen Dank!<br><br>";
}
else {
echo "<p>Dateneingabe <b>nicht</b> erfolgreich!</p>";
}
}
echo "[ <a href='javascript:history.back()'>Zurück</a> ] - [ <a href='$_SERVER[PHP_SELF]'>Neuen Datensatz eintragen<a/> ]";
}
else {
$sql2 = "SELECT ber_bez FROM $table_ber";
$result2 = mysql_query($sql2);
$katfeld = "";
while ($row = mysql_fetch_assoc($result2)) {
$katfeld .= "<option value='".$row[ber_bez]."'>".$row[ber_bez]."</option>\n";
}
?>
<form method="post" action="<? echo $_SERVER['PHP_SELF'] ?>">
<table border="0" align="center"><tr>
<td>Neuer Bereich: </td>
<td><input name="ber_bez" type="text" id="ber_bez" value="<? echo $_POST['ber_bez']; ?>" size="50"></td>
</tr><tr>
<td></td>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
?>
jetzt brauche ich für zur übersicht ein option-feld das die daten aus der tabelle zieht, habe folgendes probiert:
PHP-Code:
$ber = "
SELECT
$table_ber.ber_id,
$table_ber.ber_bez
FROM
$table_ber
ORDER BY
$table_ber.ber_bez
";
$resber = mysql_query($ber) or die(mysql_error());
while($rowber = mysql_fetch_array($resber, MYSQL_ASSOC))
{
$options = "<option value=\"".$rowber['ber_bez']."\">".$rowber['ber_bez']."\n";
}
echo "<select name=\"bereich\">\n";
echo $options;
echo "</select>\n";
dabei wird immer der letzte angezeigt
__________________
computer tun nur das was man ihnen sagt, meistens
|
|
|
19.05.2006, 10:59
|
#8
|
|
TP-Veteran
Registriert seit: May 2003
Ort: krefeld
|
update
wo sitzt hier der fehler? wollte so ähnlich einen update-script machen, funzt leider nicht
PHP-Code:
<?
$ber = $_GET['ber'];
$ber_bez_min_lan = 3;
if (isset($_POST['submit'])&&$_POST['submit'] != "") {
if (empty($_POST['ber_bez'])) {
echo "<p>Bitte <b>Bereich</b> angeben!</p>";
}
else if (strlen($_POST['ber_bez'])<$ber_bez_min_lan) {
echo "<p>Der Bereich muss mindedestens <b>".$ber_bez_min_lan."</b> Zeichen lang sein!</p>";
}
else {
$ber_bez_neu = $_POST['ber_bez'];
$sql = "
UPDATE
$table_ber
SET
ber_bez='$ber_bez'
WHERE
ber_id=$ber
";
$result = mysql_query($sql) or die(mysql_error());
if ($result) {
echo "<p>Ihre Daten wurden abgeschickt! Der Bereich <b>".$ber_bez_neu."</b> wurde bearbeitet. Vielen Dank!</p>";
}
else {
echo "<p>Dateneingabe <b>nicht</b> erfolgreich!</p>";
}
}
echo "[ <a href='javascript:history.back()'>Zurück</a> ] - [ <a href='$_SERVER[PHP_SELF]'>Neuen Datensatz eintragen<a/> ]";
}
else {
$sql2 = "
SELECT
ber_id,
ber_bez
FROM
$table_ber
WHERE
ber_id=$ber
";
$result2 = mysql_query($sql2);
$katfeld = "".$ber."";
while ($row2 = mysql_fetch_assoc($result2)) {
$katfeld = "<option value='".$row2['ber_bez']."'>".$row2['ber_bez']."</option>\n";
?>
<form method="post" action="<? echo $_SERVER['PHP_SELF'] ?>">
<table border="0" align="center"><tr>
<td>Bereich: </td>
<td><input name="ber_bez" type="text" id="ber_bez" value="<? echo $row2['ber_bez']; ?>" size="50"> <? echo $row2['ber_bez']." (".$row2['ber_id'].")"; ?></td>
</tr><tr>
<td></td>
<td><input type="submit" name="submit" value="Abschicken"></td>
</tr>
</table>
</form>
<?
}
}
?>
__________________
computer tun nur das was man ihnen sagt, meistens
|
|
|
19.05.2006, 11:14
|
#9
|
|
TP-Moderator
Registriert seit: Aug 2004
Ort: Kaiserslautern
|
Versuch mal ob es mit ber_id = '$ber' in der WHERE Klausel besser funktioniert.
__________________
#.Viele Grüße, Andreas
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
|
|
|
19.05.2006, 11:24
|
#10
|
|
TP-Veteran
Registriert seit: May 2003
Ort: krefeld
|
jep, danke, zumindest kein fehler, meldet auch:
Ihre Daten wurden abgeschickt! Der Bereich BEREICH wurde bearbeitet. Vielen Dank!
aber in der db ändert sich nichts 
__________________
computer tun nur das was man ihnen sagt, meistens
|
|
|
19.05.2006, 11:32
|
#11
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
|
Problem Beitrag 7
Klar wird immer nur die letzte Option angezeigt, da du ja auch mit jedem Schritt der while-Schleife die Var $options neu schreibst.
Arbeite hier mit einem Array.
PHP-Code:
$ber = " SELECT $table_ber.ber_id, $table_ber.ber_bez FROM $table_ber ORDER BY $table_ber.ber_bez "; $resber = mysql_query($ber) or die(mysql_error()); $options = array(); while($rowber = mysql_fetch_array($resber, MYSQL_ASSOC)) { $options[] = "<option value=\"".$rowber['ber_bez']."\">".$rowber['ber_bez']."\n"; }
echo "<select name=\"bereich\">\n"; foreach($options as $foo) echo $foo; echo "</select>\n";
|
|
|
19.05.2006, 11:35
|
#12
|
|
TP-Urgestein
Registriert seit: Nov 2003
Ort: NRW
| | |