Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

Hallo, ich habe folgendes Problem,

ich möchte eine SQL Abfrage senden um daten zu ändern, aber die Daten werden einfach nicht geändert, hier mein Quelltext

<?php

mysql_connect("localhost","root","admin") or die ("Keine Verbindung moeglich");

mysql_select_db("skillinventory") or die("Herstellen einer Verbindung fehlgeschlagen");


if(isset($_POST[Produktaendernsave]))

   {


     $aendern = "UPDATE produkte Set ProduktName = $_POST[Produktnameneu]

     WHERE ProduktName = $_POST[neu]";

     $update = mysql_query($aendern);

     echo $update;


   }

echo"

<html>

<style type=text/css>

input.button {

height: 20px;

width: 200px;

font-family: verdana;


}

</style>

<head><title>Daten ändern</title></head>

<body><div align=center>

<form action=produkt_aendern2.php method=POST>

<table>

<tr>

<td><input type=text name=Produktnameneu value=$_GET[wert]></td>

<input type=hidden name=neu value=$_GET[wert]>

</tr>

<tr>

<td><input type=submit class=button name=Produktaendernsave></td>

</tr>


</form>

</div>

</body>

</html>

";

?>

Die Variable $_GET[Wert] übergebe ich über die URL, und Sie enthält auch einen Wert. Sieht jemand einen Fehler?

Danke im voraus.

Geschrieben

Hallo,

achte mal bitte auf den Syntax. Wenn ich nicht irre müsste es heißen:


isset($_POST["Produktaendernsave"]))
[/PHP]

(analog bei allen anderen assoziativen Arrays)

Ebenso würde ich mir das Statement anschauen, der Where-Teil identifiziert den Datensatz, das Set ändert den Wert, da Du bei Where den neuen Namen angibst, wird er wohl kaum einen passenden Datensatz finden

HTH Phil

Geschrieben

würd auch sagen achte dadrauf, das die übergabevariablen in ' ' stehen also $_GET['variable'].

ansonsten gib auch bei der SQL syntax acht.

$aendern = "UPDATE produkte Set ProduktName = $_POST[Produktnameneu]

schreibe SET groß.

auch würde ich dir empfehlen den html teil der seite wirklich als html zu schreiben und nicht in ein echo zu packen. aber das ist nur nebensächlich :)

mfg

Elexil

Geschrieben (bearbeitet)

danke für deine Antowort, aber die änderung an der Syntax hat leider nichts gebracht.

Die Where Anweisung sollte stimmen, da in der Variable $_POST[neu] der Wert von $_Get drin steht also der wert der geändert werden soll. Da habe ich den Namen ein wenig unglücklich vergeben. Also in die If Anweisung wird gesprungen, dass konnte ich durch ein paar echos herausfinden und die Werte stimmen anscheinend auch alle, nur die Abfrage wird nicht durchgeführt. Die Tabellennamen habe ich auch schon mit den im Quelltext angegebenen verglichen und die stimmen auch alle.

Nur wird die Abfrage leider nicht durchgeführt :(

Das Ändern von Set in SET hat leider genauso wenig gebracht.

Bearbeitet von Kevinst
Geschrieben

Hallo,

Ich schätze mal er meckert, weil Produktname sehr wahrscheinlich ein String ist und er keine ' um den Wert findet.

so etwas tippe ich auch, oder es ist nicht case-(in)sensitiv bzw getrimmt. Aber bevor ich ins Blaue rate, einfach den Logauszug anschauen

Phil

P.S.: Ich würde da auf ADODB setzen und Preparestatements verwenden

Geschrieben (bearbeitet)

Vielen Dank für eure Hilfe,

ich habe es einfach nochmal neu geschrieben und jetzt gehts.

Es lag wohl an den ' '.

So sieht mein Quelltext jetzt aus:

<html>

<head>

<title> Produkt ändern</title>

</head>

<body>

<?php

mysql_connect("localhost","root","admin") or die 

("Keine Verbindung moeglich");

mysql_select_db("skillinventory") or die

("Herstellen einer Verbindung fehlgeschlagen");


if(isset($_POST['aendern']))

{

  $neuerwert=$_POST['neu'];

  $alterwert=$_POST['wert'];

  $abfrage = "UPDATE produkte SET ProduktName = '$neuerwert' WHERE

 Produktname = '$alterwert' ";

  $update = mysql_query($abfrage);

  echo mysql_error();

}

?>

<form action="produkt_aendern2.php" method="POST">

<input type="text" name="neu" value="<?php echo $_GET['wert']?>">

<input type="hidden" name="wert" value="<?php echo $_GET['wert']?>">

<input type="submit" name="aendern" value="ändern">

</form>

</body>



</html>

Vielen Dank nochmal!

Bearbeitet von Kevinst
Geschrieben

Kann mir jemand sagen, warum diese Abfrage nicht funktioniert?

Es gibt eine Tabelle namens Land in der es auch eine Spalte namens Land und eine Spalte namens LandID gibt. Und ich möchte den Wert der Spalte LandID aus der Zeile ausgegeben bekommen, in der der Wert in der Spalte Land mit dem Wert den ich aus dem Formuar übergeben bekomme übereinstimmt.

$land1=$_POST["land"];

$abfrage1="SELECT LandID FROM Land WHERE Land = $land1";

$ergebnis1=mysql_query($abfrage1);

echo mysql_error();

Geschrieben
Kann mir jemand sagen, warum diese Abfrage nicht funktioniert?

Warum fragst Du?

echo mysql_error();

Die Antwort sagt Dir Dein echo, falls ein syntaktischer Fehler vorliegt. Andernfalls kennst nur Du die Antwort

Phil

Geschrieben
SELECT LandID FROM Land WHERE Land = $land1

1. Fehler: Keine Bindvariablen -> Potentiell anfällig für SQL Injection.

2. Fehler: Strings werden in SQLs die keine Binds verwenden mit ' ' eingeschlossen. Das fehlt bei Dir.

Dim

Geschrieben

Hallo, kann mir jemand helfen?

ich habe nun die folgenden 3 Tabellen:

Mitarbeiterdaten:

MitarbeiterID

Vorname

Nachname

RegionID

Kenntnisse:

KenntnissID

MitarbeiterID

Produkt

Note

Regionen:

RegionID

Region

Die Tabellen Sollen mit Hilfe einer SQL Abfrage ausgelesen werden.

Bis jetzt schaffe ich es die Spalten

Mitarbeiterdaten.Vorname,Mitarbeiterdaten.Nachname und Kenntnisse.Note mit folgender

Abfrage auszulesen:

SELECT Vorname, Nachname, Note FROM Mitarbeiterdaten INNER JOIN Kenntnisse ON (Mitarbeiterdaten.MitarbeiterID = Kenntnisse.MitarbeiterID) WHERE Kenntnisse.ProduktID = 18

Jetzt brauche müsste ich noch zusätzlich Die Spalte Regionen.Region über die Spalte Mitarbeiterdaten.Region ID auslesen, weiss aber nicht wie ich die Abfrage dafür verschachteln muss.

Kann mir jemand helfen?

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...