Zum Inhalt springen
View in the app

A better way to browse. Learn more.

Fachinformatiker.de

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Empfohlene Antworten

Veröffentlicht

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.

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

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

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

... und dann lässt Du Dir am besten mal mitloggen was Dein Code sendet...

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

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

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

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

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

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

weil land vermutlich ein CHAR ist und du keine anführungszeichen verwendest.

ist das hier ein ratespiel oder was?

s'Amstel

Danke für die Antworten

doppelter Eintrag

Bearbeitet von Kevinst

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?

Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.