Zum Inhalt springen

Problem bei SQL Abfrage


Empfohlene Beiträge

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.

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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

Link zu diesem Kommentar
Auf anderen Seiten teilen

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
Link zu diesem Kommentar
Auf anderen Seiten teilen

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();

Link zu diesem Kommentar
Auf anderen Seiten teilen

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?

Link zu diesem Kommentar
Auf anderen Seiten teilen

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