Antworten auf deine Fragen:
Neues Thema erstellen

Bestehende Tabelleninhalte (mySQL-DB) editieren ...

synth

Aktives Mitglied

Hallo Ihr Lieben,
wie der Titel schon sagt, ich möchte ein Feld einer Tabelle bearbeiten.

Ich habe jetzt folgendes:
Eine existierende Datenbank mit verschiedenen Feldern und einem boolschen Feld für eine Checkbox (Variable "warda") und diese soll im nachhinein, nachdem die Tabelle bereits gefüllt wurde editiert werden.

Ich tue aktuell folgendes:
Öffnen der DB, Auswahl der DB, Abfrage der DB ...
jetzt habe ich die Anzeige der DB in einer While-Schleife verpackt, sieht wie folgt aus:

PHP:
echo "<table border=\"1\"><tr><td>id</td><td>War da?</td><td>War da!</td><td></td></tr>"; //-->
while ($zeile = mysql_fetch_array( $db_ergebnis, MYSQL_ASSOC))
{
  echo "<tr>";
  echo "<form name=\"formular" . $zeile['id'] . "\" id=\"" . $zeile['id'] . "\" action=\"edittest_pay.php\" method=\"POST\">";
  echo "<td>". $zeile['id'] . "</td>";
  echo "<td>". $zeile['warda'] . "</td>";
  echo "<td><input type=\"checkbox\" name=\"warda\" value=\"" . $zeile['warda'] . "\"></td>";
  echo "<td><input type=\"submit\" name=\"submit\" value=\"Daten aktualisieren\"></form></td>";
  echo "</tr>";
}
echo "</table>";

Es erscheint jetzt hinter jeder Zeile ein Button zum aktualisieren der Daten ... und natürlich auch ein Clickfeld ...

jetzt kranke ich aber (fürs erste) an folgendem Punkt ... wenn das Feld "warda" schon gefüllt ist, zeigt er es mir nicht im Formular an ... der nächste Schritt ist dann, wie ich das auch Zeilengenau in der DB aktualisiert bekomme ... *haarerauf* ...

Ach ja ... ich suche mich zu Tode, aber alles was ich finde geht irgendwie weit weg von meiner Anwendung ...

THNX, LG Ralf aka synth
 

Ceicodad

Noch nicht viel geschrieben

Hallo synth,

wenn Du die Checkbox selektiert haben möchtest und warda ein bool ist, probier mal das in Deiner while schleife
PHP:
$checked = "";
if( $zeile['warda'] == 1) {
$checked = "checked";
}
echo '<input type="checkbox" name="warda" '. $checked. ' />';
 

synth

Aktives Mitglied

Danke Dir, habs parallel doch noch selber gefunden ... hatte letztenendes oben den falschen Ansatz.

Jetzt muss ich nur noch die einzelnen Felder in der DB aktualisiert bekommen ...
update mysql ... ok, nächstes Thema :)
 

synth

Aktives Mitglied

OK, Zeit für neuen Code ...
meine PHP, welche die Daten updaten soll habe ich jetzt im Formular eingetragen ...
der Inhalt der edit.php sieht jetzt wie folgt aus:
PHP:
<?php
$db = mysql_connect('localhost', 'dbname', 'pass');
mysql_select_db('dbname', $db);
$db_ergebnis = mysql_query('UPDATE anwesenheit Set warda = '1' WHERE id = $id');
if ( ! $db_ergebnis )
{
  die('Ungültige Abfrage: ' . mysql_error());
}
mysql_free_result( $db_ergebnis );
?>

Jetzt bekomme ich folgenden Fehler:
Parse error: syntax error, unexpected T_LNUMBER in /www/htdocs/user/folder/edit.php on line 5

Line 5 entspricht
PHP:
$db_ergebnis = mysql_query('UPDATE anwesenheit Set warda = '1' WHERE id = $id');

Garantiert liegt der Fehler bei der Angabe von "warda" ... aber ... ich steh aufm Schlauch.
Wenn ich in die DB schaue ist der Wert, welcher in der boolschen Variable hinterlegt ist "31" für "checked" und "00" für "unchecked".

THNX, LG Ralf aka synth
 
Zuletzt bearbeitet:

rafoldi

Aktives Mitglied

Update oder Insert, falls neue Sätze hinzu gekommen sind.
oder gleich den Befehl MERGE nutzen, sollte es auch auf MYSQL geben.
Merge
Führt Einfüge-, Update- oder Löschvorgänge in einer Zieltabelle anhand der Ergebnisse eines Joins mit einer Quelltabelle aus. Sie können z. B. zwei Tabellen synchronisieren, indem Sie Zeilen in einer Tabelle anhand von Unterschieden, die in der anderen Tabelle gefunden wurden, einfügen, aktualisieren oder löschen.
 

synth

Aktives Mitglied

Also ich brauch wirklich nur UPDATE ... es soll hier wirklich nur das eine Feld in der Tabelle verändert werden, je Zeile.
Ich hab einige Erfahrung mit VBA in MSAccess ... auch in Verbindung mit mySQL ... da ist das alles irgendwie einfacher :)
Bin wieder einen Schritt weiter ... bekomme die $id jetzt nicht übergeben ... *haarerauf*

UPDATE:
Okay, neue Fehlermeldung ...
Ungültige Abfrage: Unknown column '$id' in 'where clause'
...
die edit.php sieht nun wie folgt aus:
PHP:
<?php
$db = mysql_connect('localhost', 'dbname', 'pass');
mysql_select_db('dbname', $db);
$checkbox = '$_POST[wardacheckbox]';
$db_ergebnis = mysql_query('UPDATE anwesenheit Set warda = $checkbox WHERE id = $id');
if ( ! $db_ergebnis )
{
  die('Ungültige Abfrage: ' . mysql_error());
}
mysql_free_result( $db_ergebnis );
?>

in der edit.php habe ich die Checkbox selbstverständlich angepasst, hat den Namen "wardacheckbox" bekommen.
 
Zuletzt bearbeitet:

Ceicodad

Noch nicht viel geschrieben

Probier mal bei mysql mit Anführungszeichen " anstatt '
PHP:
mysql_query("UPDATE anwesenheit Set warda = $checkbox WHERE id = $id");
 

synth

Aktives Mitglied

Ok ...
also folgendes hat sich verändert ... ich übergebe die ID ... funzt auch ... nach den Anführungszeichen bekomme ich eine SQL-Fehlermeldung ...

Ungültige Abfrage: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '[wardacheckbox] WHERE id = 31' at line 1

Jetzt steig ich aus ...

Er übergibt die ID (kann man hier durch die id = 31 gut sehen ...
 

Ceicodad

Noch nicht viel geschrieben

Änder mal die Zeile
PHP:
$checkbox = '$_POST[wardacheckbox]';
in
PHP:
$checkbox = $_POST['wardacheckbox'];

Ich denke mal das nämlich Deine Variable checkbox leer ist.
Am besten einfach mal den SQL query ausgeben lassen..
 

synth

Aktives Mitglied

Ungültige Abfrage: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on WHERE id = 33' at line 1

Bei den Feldern, die ich versucht habe zu updaten, habe ich die Checkbox gesetzt ... gehe also im Moment von aus, dass sie nicht null ist ...
 
Zuletzt bearbeitet:

synth

Aktives Mitglied

Örx ... ok hab mir die Checkbox-Variable mal ausgeben lassen ...
PHP:
echo "Checkbox: " . $checkbox . "<br>";
echo "ID  : " . $idofdb . "<br>";
Ausgabe:
Checkbox: on
ID : 31
Ungültige Abfrage: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'on WHERE id = 31' at line 1

$idofdb ist die aus dem formular übergeben ID der jeweiligen Zeile.
 

Ceicodad

Noch nicht viel geschrieben

Dann ändere mal Dein Mysql befehl wie folgt ab
PHP:
 mysql_query("UPDATE anwesenheit Set warda = '$checkbox' WHERE id = $id");
 

synth

Aktives Mitglied

Sorry, ich bin jetzt wirklich ausgestiegen ... ich versteh gerade nur noch BHF ...
Checkbox: on
ID : 30

Warning: mysql_free_result() expects parameter 1 to be resource, boolean given in /www/htdocs/user/folder/edit.php on line 17

Zeile 17 wäre ...
PHP:
mysql_free_result( $db_ergebnis );
 

synth

Aktives Mitglied

Erledigt ... habs anders gelöst ... ist eh für die Anwendung egal, ob da ne 1 in hex: 31 oder nen o in hex f6 steht ... DANKE!!!
 
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

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.612
Beiträge
1.538.343
Mitglieder
67.524
Neuestes Mitglied
BSKGA
Oben