| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

30-05-2010, 10:57
|
|
duti
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
Tabelle durch Select+option aussuchen
Hi Leute.
Wie im Titel schon gesagt hänge ich schon seit langem an einer Select+Option Liste bei der ich meine Tabellen im value drin hab und durch anklicken der Liste die gewünschte Tabelle aussuchen und da dann Wert ändern.
Code:
<select name="select6">
<option value="BMW'">BMW
<option value="Audi">Audi
</select>
$select6 = $_POST['select6'];
{
$wirdgeaendert = $_POST['wert1'];
mysql_query("UPDATE $select Set Gehause = '$wirdgeaendert' WHERE id = '1'") or die (mysql_error());
}
was mache ich hier falsch?
Ich bitte um Hilfe.!!...
Währe euch sehr dankbar!!
MfG Duti
Geändert von duti (30-05-2010 um 11:30 Uhr)
|

30-05-2010, 11:19
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Hallo und willkommen im Forum,
$select ist nicht dasselbe wie $select6, Zeichenketten sollten sauber mit . verkettet werden, Benutzereingaben sollten geprüft und/oder escaped werden (SQL-Injection) und dein Datenbankdesign ist fragwürdig und sollte normalisiert werden.
Gruß,
Amica
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

30-05-2010, 11:28
|
|
duti
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
ohh sorry^^ hab da schnell schnell einen Beispiel gemacht.
also eigentlich sieht das so aus
Code:
<html>
<select name="select6">
<option value="BMW">BMW
<option value="Audi">Audi
</select>
</html>
<?php
include ("mysqllogin.php");
mysql_select_db("duti") or die ("DB existiert nicht");
$select6 = $_POST['select6'];
{
$wirdgeaendert = $_POST['wert1'];
mysql_query("UPDATE $select6 Set Gehause = '$wirdgeaendert' WHERE id = '1'") or die (mysql_error());
}
?>
die $select6 sollte sich ja im mysql_query zum gewünschten Value ändern doch das macht der nicht hab immer die Fehler meldung
<"ou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Set Gehause = '' WHERE id = '1'' at line 1">
wie kann ich das lösen`?
Oder gibt es eine andere möglichkeit?
|

30-05-2010, 11:43
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Das ist aber kein HTML, was du da zusammengekloppt hast!
Die Formulardaten stehen PHP erst zur Verfügung, wenn das Formular abgeschickt wurde. Dafür brauchst du noch einen Submit-Button.
Edit: Die geschweiften Klammern unten sind überflüssig, wenn auch nicht falsch, wie ich vorher schrieb.
Die anderen, bereits erwähnten, Probleme sind ebenfalls nicht zu vernachlässigen.
Edit: Der SQL-Fehler rührt daher, dass $select6 offenbar noch leer ist. Lass dir doch einfach die generierte Abfrage anzeigen, bevor du sie ausführst.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
Geändert von AmicaNoctis (30-05-2010 um 11:57 Uhr)
|

30-05-2010, 14:50
|
|
tr-oo-per
Registrierter Benutzer
|
|
Registriert seit: May 2010
Ort: at work
Beiträge: 32
|
|
Versuch mal die Formular-Elemente in einer Form zu kapseln und gibt ihr einen Submit-Button
HTML-Code:
<form action="..." method="POST">
<select name="select6">
...
</select>
<input type="submit" name="submit" ... />
</form>
|

30-05-2010, 15:19
|
|
duti
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
ich kriegs einfach nicht hin
ich habs mit allem probiert.
keine chance!
mein momentander code klar am probieren sieht aber so aus
PHP-Code:
[CODE] <html> <body>
<form action="11.php" method="post"> Firstname: <input type="text" name="name" /> <form method="post"> <select name="select_name"> <option value="duti">Test1</option> <option value="extreme">Test2</option> <option value="gamer">Test3</option> </select> <input type="submit"></input> </form> </body> </html> <?php //Connecting include ("mysql.php"); mysql_select_db("duti") or die("DB existiert nicht"); /////////////////////////////////////////////////////
$selected = $_POST['select_name']; $name = $_POST['name'];
//Daten schreiben $write = mysql_query("INSERT INTO '$selected' VALUES ('','$name','name2')");
?> [/CODE]
was mach ich falsch??
Geändert von duti (30-05-2010 um 15:37 Uhr)
|

30-05-2010, 15:36
|
|
tr-oo-per
Registrierter Benutzer
|
|
Registriert seit: May 2010
Ort: at work
Beiträge: 32
|
|
Erstens:
Du hast ineinander geschachtelte <FORM>-Tags, wobei nur 1 x ein </FORM>-Tag auftaucht. Das ist Mumpitz. Der innere <FORM>-Tag muss weg und dann könnte es HTML-technisch schon klappen.
Zweitens:
Code:
$sql = "INSERT INTO '$selected' VALUES ('', '$name', 'name2')";
ist Quark!
Code:
$sql = "
INSERT INTO `$selected` (
`spaltenname1`,
`spaltenname2`,
`spaltenname3`
)
VALUES (
'',
\"$name\",
\"name2\"
)
";
muss es heißen. Du gibst in der ersten Klammerung an, in welche Spalten die Werte (VALUES) gehören -- beachte die Reihenfolge. Falls Du den ersten Wert niemals setzt, lohnt es sich für die Spalte einen Standardwert zu setzten und den Teil der Query zu sparen.
Außerdem ist Dein Code anfällig für SQL-Injections!!!!!! Erstens filterst Du die $_POST-Argumente nicht und zweitens gibst Du dem Angreifer die Tabellennamen sogar im plain-HTML preis. Angenommen ich schicke Dir $_POST["select_name"] = "; DROP TABLE `gamer`;". Dann bye-bye gamer-Tabelle
Geändert von tr-oo-per (30-05-2010 um 16:08 Uhr)
|

30-05-2010, 15:58
|
AmicaNoctis
 Moderatorin
|
|
Registriert seit: Jul 2009
Beiträge: 5.550
|
|
Das ist genauso falsch. Tabellennamen gehören nicht in Anführungszeichen, wenn dann in Backticks. Außerdem gilt immer noch das bereits gesagte bezüglich der Verkettung und des notwendigen Escapings.
__________________
Hast du die Grundlagen zur Fehlersuche gelesen? Hast du Code-Tags benutzt? 
Hast du als URL oder Domain-Beispiele example.com, example.net oder example.org benutzt?
Super, danke! 
|

30-05-2010, 16:07
|
|
duti
Registrierter Benutzer
|
|
Registriert seit: May 2010
Beiträge: 4
|
|
geht auch nicht lieber tr-oo-per
schade. Hab jetzt so lange versucht das zu machen schaff es einfach nicht.
Ich gebe es auf. Ich erstell einfach die entsprechenden .php's.
Die werte kann man mit dem Option+Select ohne problem einfügen aber die Tabellen mit dem aussuchen schaff ich nicht^^.
Danke an allen.. Ihr seid die besten.. das mit der Injection schütz ich auch noch so das der sicherer ist. Danke für den hinweis.
Mfg Duti
|

30-05-2010, 16:20
|
|
tr-oo-per
Registrierter Benutzer
|
|
Registriert seit: May 2010
Ort: at work
Beiträge: 32
|
|
Mmh, schade. "geht auch nicht" ohne konkrete Fehlermeldung hilf leider wirklich nicht weiter
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|