Antworten auf deine Fragen:
Neues Thema erstellen

MySQl-Daten per Formular updaten

redbull2906

Nicht mehr ganz neu hier

Hallo zusammen,

ich kann euch z.Zt. leider keinen Code anbieten aber ich versuche mal die Frage per Text verständlich genug zu formulieren.

Folgendes Prob

Ich habe eine Datenbank in der Artikel und Preise stehen - auslesen und hinzufügen ist kein Problem. Mein Problem betrifft das Updaten.

Wie kann ich es realisieren, dass wenn ein neuer Artikel hinzugefügt wird, dieser dann direkt auf der aendern.php-seite angezeigt wird, also sprich mit einem Formfeld wo somit die Preise geändert werden können?
Also ich hoffe es ist verständlich - ich möchte das automatisch der neue Artikel dort angezeigt wird und preislich veränderbar ist.

z.Zt. sind es ca. 17 Artikel - ich ändere net jeden Preis d.h. schreibe auch dann nix ins input feld er übernimmt beim Absenden allerdings die leeren zellen und löscht folgedessen die "alten" Preise!

Wie müsste so etwas aussehen? IF? while-Schleife?

Bin um jeden Tipp dankbar - wie es halt so is für nen anfänger

Danke für eure Hilfe
 

thexe

ein Albtraum

AW: MySQl-Daten per Formular updaten

schreib die "alten Preise" doch in die input-Felder herein (while-Schleife -> Anzeige von allen Artikeln und Preis dazu in einem Input-Text-Feld hinten drann)

Oder aber eine If-Abfrage, ob $_POST['neuer_Preis'] gesetzt ist und dann erst Updaten

MfG the-xe
 

redbull2906

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

Hi,

die preise ins inout feld setzten - auf die idee bin ich noch net gekommen. würde dann die abfrage ins value schreiben??

wie kann ich denn anhand von der id genau definieren welcher datensatz es ist?
 

redbull2906

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

gut so übergebe ich es an das verarbeitende script - wie sieht dann die update funktion aus?

"UPDATE preis WHERE id = $id"

zum Beispiel?
 

redbull2906

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

Hallo Leute,

hab jetzt versucht die aktuellen Preise in die Texfelder zu integrieren - irgendwie will das net

Kann mir jemand Sagen was ich falsch mache? Value ist doch richtig oder?


<?
$abfrage = "SELECT * FROM preis2 ORDER BY kategorie";
$ergebnis = mysql_query($abfrage);
$i = 0;
while ($row = mysql_fetch_array($ergebnis)){
if($i%2==0) {
$classname = "";
} else {
$classname = " class=\"alternate\"";
}
echo "<form action=\"aendern2.php\" method=\"POST\"><tr$classname><td>".$row['kategorie']."</td><td class=\"preis\">".$row['preis']."</td><td><input type=\"text\" name=\"neupreis\" value=\".row['preis'].\"></td><td>".$row['id']."</td></tr>\n";
$i++;
}
?>
 

michas

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

Also in deinem Quelltext lesen ich ein bisschen viel Kauderwelsch:
1. bei der dritten Variable row fehlt das $ zeichen row['preis']
2. in der Schleife machst Du viele Formulare (form-tags) auf, aber...
3. keins zu und
4. brauchst Du nur ein Formular außerhalb der Schleife, welches alle Form-felder enthält...
5. hast Du noch html-Fehler drin wie ein fehlendes Table-Tag...

Gruß
 
Zuletzt bearbeitet:

Top_Gun

Aktives Mitglied

AW: MySQl-Daten per Formular updaten

PHP:
<?php
$abfrage = "SELECT * FROM preis2 ORDER BY kategorie";
$ergebnis = mysql_query($abfrage);
$i = 0;
echo '<form action="aendern2.php" method="POST"><table>';

while ($row = mysql_fetch_array($ergebnis)){
if($i%2==0) {
$classname = '';
} else {
$classname = 'class="alternate"';
}
echo '<tr $classname><td>'.$row["kategorie"].'</td><td class="preis">'.$row["preis"].'</td><td><input type="text" name="neupreis" value="'.$row["preis"].'"></td><td>'.$row["id"].'</td></tr>\n';
$i++;
}

echo '</table></form>';
?>
Probier das mal...
 

redbull2906

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

@Top Gun

Fehler gefunden - wie blöd muss man sein :)

Wenn keine Preise in der DB stehen kann er wohl auch nix anzeigen, richtig?!?!

Sorry - so läufts jetzt zumindest mal mit dem anzeigen im Texfeld - muss jetzt noch des updaten probieren.

Schon mal vielen, vielen Dank für Eure/Deine Hilfe - man hats net grad leicht als anfänger gell
 

Top_Gun

Aktives Mitglied

AW: MySQl-Daten per Formular updaten

Ok, pass auf:

Du hast jetzt in deiner Tabelle deinen alten Preis, die ID und ein Inputfeld für den neuen Preis stehen. Wenn du jetzt auf absenden klickst, schickt er dir den Wert aus dem letzten Inputfeld zu. Warum?
Alle deine Inputfelder heißen gleich, so überschreibt jedes Feld das vorherige.

Du hast in der Tabelle zwar die ID stehen, die nützt dir da aber gar nichts, weil du die ja gar nicht mitschickst. Wie willst du dann wissen wo welcher Preis eingetragen werden muss?

Lösung für beide Probleme:
Du nimmst die ID aus der Tabelle erstmal raus. Danach bennenst du dein Inputfeld so:
Code:
[COLOR=#000000][COLOR=#dd0000]name="neupreis[[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]'[/COLOR][COLOR=#007700].[/COLOR][COLOR=#0000bb]$row[/COLOR][COLOR=#007700][[/COLOR][COLOR=#dd0000]"id"[/COLOR][COLOR=#007700]].[/COLOR][COLOR=#dd0000]'[/COLOR][/COLOR][COLOR=#000000][COLOR=#dd0000]]"[/COLOR][/COLOR]
Dadurch erzeugst du ein Array und hast gleichzeitig mit dem jeweiligen Preis die ID übergeben.

Damit sollte es dir einfacher fallen dein Update zu machen.
 

redbull2906

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

Danke schon mal für deine tatkräftige Unterstützung.

Eine Frage hab ich im Moment dann aber doch noch

wie würde dann mein Update aussehen?

In etwa so??


<?php
$newpreis = $_POST['neupreis'];
$newpreisid = $_POST[neupreis['.$row["id"].'];

$aendern = "UPDATE preis Set
preis = '$newpreis' WHERE id = '$newpreisid'";
$update = mysql_query($aendern);
?>

Sorry die evtl. viele fragerei, aber bin noch relativ neu auf dem Gebiet!

Danke schon mal für deine Hilfe
 

Top_Gun

Aktives Mitglied

AW: MySQl-Daten per Formular updaten

wie würde dann mein Update aussehen?

In etwa so??


<?php
$newpreis = $_POST['neupreis'];
$newpreisid = $_POST[neupreis['.$row["id"].'];

$aendern = "UPDATE preis Set
preis = '$newpreis' WHERE id = '$newpreisid'";
$update = mysql_query($aendern);
?>
Naja fast...
Die Variable $_POST['neupreis'] ist ein Array, das heißt es ist nicht ein einzelner Wert sondern mehrere. Um einen einzelnen Wert daraus zu bekommen müsstest du $_POST['neupreis']['id'] benutzen...
Und deine Seite kann im Moment gar nicht wissen, was $row["id"] ist und würde diese Variable ganz einfach leer lassen...
Weiterhin musst du für jeden Preis (sind ja mehrere) die Variablenzuweisung und das Update machen...

Du benötigst also erstmal eine Schleife die das ganze für jeden Preis macht. Und du musst wissen, welchen Wert du für $row["id"] einzusetzen hast. Dies solltest du aber vor der Schleife erfahren.
Du speicherst mit
Code:
$anzahl = count($_POST['neupreis');
die Elemente in deinem Array (die count-Funktion zählt die Elemente).

Nun weißt du die Maximalanzahl, dieser Wert stellt gleichzeitig deine höchste ID dar. 1 ist dagegen deine kleinste ID. Mit diesen Werten kannst du nun deine Schleife aufbauen:
Code:
for($a=1;$a<=$anzahl;$a++){
($a ist eine Hilfsvariable und wird später als ID eingesetzt)

In deiner Schleife musst du jetzt die Preis-Variable zuweisen und das Update durchführen:
Code:
$newpreis = $_POST[[COLOR=black]'neupreis'][$a];[/COLOR]
 
$aendern = "UPDATE preis Set
preis = '".$newpreis."' WHERE id = '".$a."'";
$update = mysql_query($aendern);
Jetzt noch die Schleife beenden, fertig.

Gesamter Code:
PHP:
$anzahl = count($_POST['neupreis');
for($a=1;$a<=$anzahl;$a++){
$newpreis = $_POST['neupreis'][$a];
  
 $aendern = "UPDATE preis Set
 preis = '".$newpreis."' WHERE id = '".$a."'";
 $update = mysql_query($aendern);
}
So und jetzt kommt das große aber...
(habe gerade an einer ähnlichen Funktion gebastelt und bei meinem ersten Post noch nicht zuende gedacht, sonst hätte ich es vorher erwähnt)
... wenn in deiner Tabelle eine Zeile gelöscht wurde, zB die Zeile mit ID 2, würde diese Update-Funktion, für die IDs 1, 3 und 4, die Zeilen 1, 2 und 3 updaten. Das geht so nicht und ist natürlich so nicht gewollt.

Um das zu lösen nehmen wir unsere vorhandenen Seiten und ändern sie ein wenig ab:
Code:
<?php
$abfrage = "SELECT * FROM preis2 ORDER BY kategorie";
$ergebnis = mysql_query($abfrage);
$i = 0;
echo '<form action="aendern2.php" method="POST"><table>';

while ($row = mysql_fetch_array($ergebnis)){
if($i%2==0) {
$classname = '';
} else {
$classname = 'class="alternate"';
}
echo '<tr $classname><td>'.$row["kategorie"].'</td><td class="preis">'.$row["preis"].'</td><td><input type="text" name="[COLOR=Red]neupreis['.$i.'][/COLOR]" value="'.$row["preis"].'">[COLOR=RoyalBlue]<input type="hidden" name="id['.$i.']" value="'.$row["id"].'">[/COLOR]</td></tr>\n';
$i++;
}

echo '</table></form>';
?>
  • Wir nehmen nun nicht mehr die ID als Index des Arrays sondern die Hilfsvariable $i
  • Dafür wird unsere ID über ein verstecktes Inputfeld übergeben
Code:
$anzahl = count($_POST['neupreis');
for($a=1;$a<=$anzahl;$a++){
$newpreis = $_POST[[COLOR=black]'neupreis'][$a];[/COLOR]
   [COLOR=SeaGreen]$newpreisid = $_POST[[/COLOR][COLOR=black][COLOR=SeaGreen]'id'][$a];[/COLOR]

[/COLOR]   $aendern = "UPDATE preis Set
  preis = '".$newpreis."' WHERE id = '".[COLOR=Magenta]$newpreisid.[/COLOR]"'";
  $update = mysql_query($aendern);
}
  • Die Hilfsvariable $a dient zwar weiterhin als Index des Arrays allerdings wird nun die ID übergeben, abgefragt und als Variable $newpreisid definiert
  • Diese Variable $newpreisid wird dann in dem SQL-String als richtige ID verwendet
 

redbull2906

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

Hi Top-Gun,

danke für die Bemühungen - werde dieses heute abend mal teste.

wenn ich mir des alles so durchlese merk ich das ich ganz schön weit am anfang bin - grad was arrays betrifft - irgendwie wills net so wirklich in mein kopf mit den arrays. aber denke mit der zeit wird des

also wie gesagt teste des ganz und schon mal vielen vielen dank für deine hilfeleistungen
 

redbull2906

Nicht mehr ganz neu hier

AW: MySQl-Daten per Formular updaten

Eine Frage hab ich noch Top-Gun

die Vari. $i - sollte ich da net noch was im ersten script definieren? kommts auch net zu problemen weil ich die $i für den Farbenwechsel der Spalten verwendet habe?
 

Top_Gun

Aktives Mitglied

AW: MySQl-Daten per Formular updaten

Eine Frage hab ich noch Top-Gun
Sind ja sogar zwei ;)

die Vari. $i - sollte ich da net noch was im ersten script definieren?
Tust du schon und zwar hier

kommts auch net zu problemen weil ich die $i für den Farbenwechsel der Spalten verwendet habe?
Nein. Du fragst ab ob $i eine gerade Zahl ist und vergibst daraufhin einen Klassennamen. Die Variable $i behält ihren Wert und somit kannst du ohne Probleme damit weiterarbeiten.

Code:
<?php
$abfrage = "SELECT * FROM preis2 ORDER BY kategorie";
$ergebnis = mysql_query($abfrage);
[COLOR=SeaGreen] $i = 0;[/COLOR]
echo '<form action="aendern2.php" method="POST"><table>';

while ($row = mysql_fetch_array($ergebnis)){
[COLOR=RoyalBlue] if($i%2==0)[/COLOR] {
[COLOR=Red] $classname = '';
} else {
$classname = 'class="alternate"';[/COLOR]
}
echo '<tr $classname><td>'.$row["kategorie"].'</td><td class="preis">'.$row["preis"].'</td><td><input type="text" [COLOR=Black]name="[/COLOR][COLOR=Black]neupreis['.$i.']" value="'.$row["preis"].'">[/COLOR][COLOR=Black]<input type="hidden" name="id['.$i.']" value="'.$row["id"].'"></td></tr>\n';[/COLOR]
$i++;
}

echo '</table></form>';
?>
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.621
Beiträge
1.538.378
Mitglieder
67.545
Neuestes Mitglied
helenkitina
Oben