Zum Inhalt springen

Sql => Update


Herr_der_Ringe

Empfohlene Beiträge

Hallo. Ich habe ein Problem. Habe eine Datenbank, in der ich folgendes realisieren soll:

Durch das Klicken auf einen Button, sollen alle Einträge in der Spalte Testdatum auf 00.00.0000 gesetzt werden. Ich kann machen was ich will.. ich bekomme es net hin.

habe es so gemacht:

if(isset($_GET['action']))

{

$action=$_GET['action'];

if($action="nullen")

{

for($ii = 0; $ii < $anz_datensaetze ; $ii++)

{

$sql = "UPDATE Testfall SET Testdatum VALUES('00.00.0000')";

}

}

}

Bis zu dem '$sql = "Update...."' funktioniert es einwandfrei.. habe es getestet. habe $test erstellt, auf 0 gesetzt und anstelle von der Update-Anweisung durchgeführt. Der Zähler ($test++; ) hab ich mir dann über ein echo ausgeben lassen und es funkltioniert korrekt.

Also scheint wirklich nur das Update (warum auch immer) nicht zu funktionieren!

MfG

HdR

Link zu diesem Kommentar
Auf anderen Seiten teilen

  • Antworten 50
  • Erstellt
  • Letzte Antwort

Top-Benutzer in diesem Thema

So habe ich es gemacht.Wie du geschrieben hast.

Durch das konvertieren dachte ich, würde er dieses "Datumsformat" von mir einlesen können, da er es auch so drinne hat. allerdings grade mal geschaut, er hat es so im frontend angezeigt, aber in der db hat er es anders drinne-.-

dort ist der feldtyp datetime.

Link zu diesem Kommentar
Auf anderen Seiten teilen

if(isset($_GET['action']))

{

$action=$_GET['action'];

if($action="nullen")

{

for($ii = 0; $ii < $anz_datensaetze ; $ii++)

{

$sql = "UPDATE Testfall SET Testdatum ='0000-00-00 00:00:00'";

}

}

}

Wozu ist die Schleife da??


$sql = "UPDATE Testfall SET Testdatum ='0000-00-00 00:00:00'"; //Setzt alle Datensätze auf Null...
mysql_query($sql); //Extrem wichtig, fehlt bei Dir, ich hoffe die DB-Verbindung ist schon vorhanden...
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dann schick noch ein:


echo mysql_error();
[/PHP]

hinter dem mysql_query() hinterher...

Vielleicht gibt die Fehlermeldung ja Aufschluss darüber, was hier schief läuft...

Edit:

Dein Problem liegt ausserdem noch wo anders:

Der Vergleich zwischen $action und "nullen" funktioniert nicht...

Korrekt wäre:

[PHP]
if ($action == "nullen") {

Link zu diesem Kommentar
Auf anderen Seiten teilen

<html>

<head>

<title>Tabelle anzeigen</title>

</head>

<body>

<?php

error_reporting(E_ALL);

function datum_konverter($d)

{

$jahr = substr($d,0,4);

$monat = substr($d,5,2);

$tag = substr($d,8,2);

$datum_formatiert=$tag.".".$monat.".".$jahr;

return $datum_formatiert;

}

$HOST = "172.18.194.11";

$USERID = "christianlaubach";

$PW = "cl";

$db_handle = mysql_connect($HOST,$USERID,$PW) or die("Die Datenbank ist momentan nicht erreichbar");

$sql = "SELECT * FROM Testfall ORDER BY Auto_Testfall_ID";

$datenbank = "ppsfr_spielwiese";

mysql_select_db($datenbank,$db_handle);

$ergebnis = mysql_query($sql);

$anz_datensaetze = mysql_num_rows($ergebnis);

$anz_ablauf = 0;

$anz_getestet = 0;

$test = 0;

/*********************************** Deklaration von 'was' **************************************/ // <= Scheint nix zu bringen, 'was' ist in Zeile 54 undefiniert. Da ich nicht weiss,

// <= wie man 'was' und 'suche' in einer 'REQUEST_METHOD' definieren kann,wollte ich

// <= es aufteilen.

// <= Das Formular 'was' findet ihr etwa bei Zeile 180!

if ($_SERVER['REQUEST_METHOD'] == "GET")

{

if (isset($_GET['was']))

{

$was = $_GET['was'];

}

}

/******************************* Filter nach Spalten und Werte **********************************/ // <= Wenn ich hier festlege in welcher Spalte er suchen soll, funktioniert es. Nur das

// <= Auswählen der Spalte funktioniert nicht, bzw. in 'was' wird nichts reingeschrieben.

// <= Ich hatte diese Filterfunktion zw. Zeile 23-27, als es funktionierte (mit festgelegter Spalte).

// <= Hab es nur der Übersichtlichkeit halber erstmal hierhin gesetzt.

// <= Also, in 'filter' wird was reingeschrieben, in 'was' nicht.

if ($_SERVER['REQUEST_METHOD'] == "POST")

{

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

{

$filter = $_POST['suche'];

$was = $_POST['was'];

$sql = "SELECT * FROM Testfall WHERE '$was' LIKE '$filter%'

ORDER BY Auto_Testfall_ID";

}

}

else

{

$sql = "SELECT * FROM Testfall ORDER BY Auto_Testfall_ID";

}

/*************************** Testdatum durch Button auf NULL setzen *****************************/ // <= Hier soll durch betätigen eines Buttons, alle Testdatum in der Tabelle auf '00.00.0000'

// <= gesetzt werden. Woran es liegt, dass es nicht funktioniert, weiss ich nicht.

// <= Findet ihr etwa bei Zeile 200.

/************************** Berechnung der Anzahl der Items im Ablauf ***************************/

for($ii = 0 ; $ii < $anz_datensaetze ; $ii++)

{

$Auswertung_in_Ablauf = mysql_result($ergebnis, $ii, "Auswertung_in_Ablauf");

if($Auswertung_in_Ablauf == 1)

{

$anz_ablauf++;

}

}

/******************* Berechnung der Anzahl der Items die nicht im Ablauf sind *******************/

$anz_n_ablauf = $anz_datensaetze-$anz_ablauf;

/***************************** Berechnung manuell getesteten Items ******************************/

for($ii = 0 ; $ii < $anz_datensaetze ; $ii++)

{

$Auswertung_getestet = mysql_result($ergebnis, $ii, "Auswertung_getestet");

if($Auswertung_getestet == 1)

{

$anz_getestet++;

}

}

/*********************** Berechnung der noch manuell zu testenden Items *************************/

$anz_n_getestet = $anz_datensaetze-$anz_ablauf-$anz_getestet;

/**************************************************************************************************

******************** Beginn der Anzeige *********************

**************************************************************************************************/

echo "<head>

<title>

PPFSR_Spielwiese

</title>

<style type='text/css'>

.headline12

{

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 11px;

font-style: normal;

font-width: normal;

font-variant: normal;

color: #FFFFFF;

}

</style>

<style type='text/css'>

.normalMasken

{

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 10px;

font-style: normal; line-height: normal;

font-width: normal;

text-decoration: none;

color: #000000;

}

</style>

</head>

<body bgcolor= '#c0d1d2' text='#000000' link='#000000'>";

/**************************************************************************************************

******************** Tabellenkopf anzeigen *********************

**************************************************************************************************/

echo "

<center class='tab_head'>

<table width='650' border='0' align='middel' cellpadding='1' cellspacing='1' bgcolor='#666666'>

<tr bgcolor='#000000'>

<td align='center'>

<a href='daten_hinzufuegen.php'>

<img src=' hinzufuegen.jpg ' border='0'>

</a>

</td>

<td align='center'>

<a href='Filter_auswahl.php'>

<img src=' filtern.jpg ' border='0'>

</a>

</td>

<td colspan='13' height='38' class='headline12' align='center'>

<b>Anzahl Items gesamt: $anz_datensaetze</b></br>

<b>Anzahl Items im Ablauf: $anz_ablauf</b></br>

<b>Anzahl Items nicht im Ablauf: $anz_n_ablauf</b></br>

<b>Anzahl Items manuell getestet: $anz_getestet</b></br>

<b>Anzahl Items noch manuell zu testen: $anz_n_getestet</b>

</td>

</tr>

<tr bgcolor='#333333'>

<td colspan='15' heigth='20' class='headline12' align='center'>

<form name=mf' action='{$_SERVER['PHP_SELF]}' method='GET'>

Suche in: 

<select name='was' style='width: 125px'>"; // <= Hier ist das Forumlar zur Spaltenauswahl.

echo"<option selected value='0'>Bitte wählen</option>

<option value='$Auswertung_Items'>Auswertung Items</option>

<option value='$Auswertung_getestet'>Auswertung getestet</option>

<option value='$Auswertung_in_Ablauf'>Auswertung in Abläufen</option>

<option value='$Nr'>Nr</option>

<option value='$Auto_Testfall_ID'>Auto_Testfall_ID</option>

<option value='$GV_Funktion_ID'>GV_Funktion_ID</option>

<option value='$Funktionsbeschreibung'>Funktionsbeschreibung</option>

<option value='$Testdatum'>Testdatum</option>

<option value='$Beschreibung'>Beschreibung</option>

<option value='$Vorraussetzung'>Vorraussetzung</option>

<option value='$Sollergebnis'>Sollergebnis</option>

<option value='$Verweis'>Verweis</option>

<option value='$Reihenfolge'>Reihenfolge</option>";

echo"</select>  nach: <input type='text' name='suche' class='normalMasken'>

 

<input type='submit' name='test_suche' value='Suchen'>

</form>";

// <= Hier ist das Formular zum Zurücksetzen der Testdatum.

echo"<form name='null' method='post' action='Testdatenbank2.php?action=nullen'>

<input name='null' type='submit' value='Testdatum auf Null setzen'>

</form>

</td>

</tr>

<tr bgcolor='#333333' class='headline12'align='middle'>

<td height='23' width='200'>

L

</td>

<td height='23' width='200'>

Ä

</td>

<td height='23' width='200' align='center'>

Auswertung Items

</td>

<td height='23' width='200' align='center'>

Auswertung getestet

</td>

<td height='23' width='200' align='center'>

Auswertung in Abläufen

</td>

<td height='23' width='200' align='center'>

Nr

</td>

<td height='23' width='200' align='center'>

Auto_Testfall_ID

</td>

<td height='23' width='200' align='center'>

GV_Funktion_ID

</td>

<td height='23' width='200' align='center'>

Funktionsbeschreibung

</td>

<td height='23' width='200' align='center'>

Testdatum

</td>

<td height='23' width='200' align='center'>

Beschreibung

</td>

<td height='23' width='300' align='center'>

Vorraussetzung

</td>

<td height='23' width='200' align='center'>

Sollergebnis

</td>

<td height='23' width='200' align='center'>

Verweis

</td>

<td height='23' width='200' align='center'>

Reihenfolge

</td>

</tr>";

Link zu diesem Kommentar
Auf anderen Seiten teilen

for($ii = 0 ; $ii < $anz_datensaetze ; $ii++)

{

$Auswertung_Items = mysql_result($ergebnis, $ii, "Auswertung_Items");

$Auswertung_getestet = mysql_result($ergebnis, $ii, "Auswertung_getestet");

$Auswertung_in_Ablauf = mysql_result($ergebnis, $ii, "Auswertung_in_Ablauf");

$Nr = mysql_result($ergebnis, $ii, "Nr");

$Auto_Testfall_ID = mysql_result($ergebnis, $ii, "Auto_Testfall_ID");

$GV_Funktion_ID = mysql_result($ergebnis, $ii, "GV_Funktion_ID");

$Funktionsbeschreibung = mysql_result($ergebnis, $ii, "Funktionsbeschreibung");

$Testdatum = datum_konverter(mysql_result($ergebnis, $ii, "Testdatum"));

$Beschreibung = mysql_result($ergebnis, $ii, "Beschreibung");

$Vorraussetzung = mysql_result($ergebnis, $ii, "Vorraussetzung");

$Sollergebnis = mysql_result($ergebnis, $ii, "Sollergebnis");

$Verweis = mysql_result($ergebnis, $ii, "Verweis");

$Reihenfolge = mysql_result($ergebnis, $ii, "Reihenfolge");

if($Auswertung_in_Ablauf == 1)

{

$anz_ablauf++;

}

/**************************************************************************************************

******************* Anzeigen der Tabellenzeilen *******************

**************************************************************************************************/

if ($ii%2)

{

$zeilen_farbe="#A3CAC5";

}

else

{

$zeilen_farbe="#8A93AF";

}

echo "<tr class='normalMasken' bgcolor='$zeilen_farbe'>

<td height='18' align='center'>

<a href = 'daten_loeschen_best.php?test_id=$Auto_Testfall_ID'>

<img src='loesch_symbol.jpg' border='0'>

</a>

</td>

<td height='18'>

<center>

<a href = 'daten_aendern.php?test_id=$Auto_Testfall_ID'>

<img src='aendern_symbol.jpg' border='0'>

</a>

</center>

</td>

<td height='18' align='center'>

$Auswertung_Items

</td>

<td height='18' align='center'>

$Auswertung_getestet

</td>

<td height='18' align='center'>

$Auswertung_in_Ablauf

</td>

<td height='18' align='center'>

$Nr

</td>

<td height='18' align='center'>

$Auto_Testfall_ID

</td>

<td height='18' align='center'>

$GV_Funktion_ID

</td>

<td height='18' align='left'>

$Funktionsbeschreibung

</td>

<td height='18' align='left' align='center'>

$Testdatum

</td>

<td height='18' align='left'>

$Beschreibung

</td><td height='18' align='left'>

$Vorraussetzung

</td>

<td height='18' align='left' width='500'>

$Sollergebnis

</td><td height='18' align='left'>

$Verweis

</td>

<td height='18' align='center'>

$Reihenfolge

</td>

</tr>";

}

if(isset($_GET['action']))

{

$action=$_GET['action'];

if($action == "nullen")

{

$sql = "UPDATE Testfall SET $Testdatum ='0000-00-00 00:00:00'";

}

} echo mysql_error();

echo "<tr bgcolor='#c0d1d2' height='35>

<td colspan='8' class='normalMasken' valign='center'>

Legende:

<img src='aendern_symbol.jpg'> = Ändern /

<img src='loesch_symbol.jpg' border='0'> = Löschen

</td>

</tr>";

echo "</table></center></body></html>";

mysql_close($db_handle);

?>

</body>

</html>

Link zu diesem Kommentar
Auf anderen Seiten teilen

Bei Gelegenheit:

Habe da noch ein kleines Problem, und zwar ist es so, dass ich im Frontend filtern will, und auswählen will, in welcher spalte gefiltert werden soll.

ich markiere oben das relevante rot. es ist so, dass 'was' übergeben wird, aber in 'was' wird nichts reingeschrieben. weiss nicht, wie ich das machen kann, bzw. was die beste lösung ist..

Link zu diesem Kommentar
Auf anderen Seiten teilen

Ehm...

Du musst das mysql_query() für JEDES Statement aufrufen...

Nicht nur einmalig am Anfang, um die Ergebniszeilen einzulesen...


if (!empty($_GET['action']) && $_GET['action'] == "nullen) {
$sql = "UPDATE Testfall SET $Testdatum ='0000-00-00 00:00:00'";
if (!mysql_query($sql)) {
die("MySQL-Fehler:".mysql_error());
}
}
[/PHP]

Link zu diesem Kommentar
Auf anderen Seiten teilen

Tschaka. Es funktioniert.. mit einem kleinen Schönheitsfehler-.-

das ist der code:

if (!empty($_GET['action']) && $_GET['action'] == "nullen")

{

$sql = "UPDATE Testfall SET Testdatum ='0000-00-00 00:00:00'";

if (!mysql_query($sql))

{

die("MySQL-Fehler:".mysql_error());

}

}

und die anzeige lautet: 00.00.2000

lol

Link zu diesem Kommentar
Auf anderen Seiten teilen

Wie steht es denn in der Datenbank?

Kommt die 2000 da auch irgendwo drin vor?

$sql = "SELECT * FROM Testfall WHERE '$was' LIKE '$filter%'

ORDER BY Auto_Testfall_ID;"


$sql = "SELECT *,DATE_FORMAT(datumsfeld,'%d.%m.%Y') as fmtDatum FROM Testfall WHERE '$was' LIKE '$filter%'";

Dann kannst Du danach auf den Wert fmtDatum zugreifen, der bereits seitens MySQL schon konvertiert wurde... Zu der anderen Frage: Übergebe doch als Values im Select einfach die Namen der Spalten, und füge der WHERE-Clause dynamisch hinzu: $sql .= " AND ".mysql_escape_string($spaltennameAusSelectFeld)." LIKE '".mysql_escape_string($textAusInputFeld)."'"; Edit:

<form name='mf' action='{$_SERVER['PHP_SELF']}' method='GET'>

Suche in: 

<select name='was' style='width: 125px'>"; // <= Hier ist das Forumlar zur Spaltenauswahl.

echo"<option selected value='0'>Bitte wählen</option>

<option value='Auswertung_Items'>Auswertung Items</option>

<option value='Auswertung_getestet'>Auswertung getestet</option>

<option value='Auswertung_in_Ablauf'>Auswertung in Abläufen</option>

<option value='Nr'>Nr</option>

<option value='Auto_Testfall_ID'>Auto_Testfall_ID</option>

<option value='GV_Funktion_ID'>GV_Funktion_ID</option>

<option value='Funktionsbeschreibung'>Funktionsbeschreibung</option>

<option value='Testdatum'>Testdatum</option>

<option value='Beschreibung'>Beschreibung</option>

<option value='Vorraussetzung'>Vorraussetzung</option>

<option value='Sollergebnis'>Sollergebnis</option>

<option value='Verweis'>Verweis</option>

<option value='Reihenfolge'>Reihenfolge</option>";

echo"</select>  nach: <input type='text' name='suche' class='normalMasken'>

 

<input type='submit' name='test_suche' value='Suchen'>

</form>";


$_GET['was'] und $_GET['test_suche'] beinhalten dann das, was Du brauchst...

(Zur Info: Ich habe die Dollar-Zeichen entfernt, weil Du hier die Spaltennamen als String übergeben sollst )

[/code]

Und ich sehe gerade, dass Du das mit der dynamischen WHERE-Clause schon halbwegs hast...

Edit2:

Und unter dem Aspekt der Sicherheit würde ich die übergebenen Werte der Select-Box innerhalb des Scripts nochmal einzeln validieren...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Also, Datum funktioniert, danke!!

zum Filter:

$sql .= "SELECT * FROM Testfall WHERE '.mysql_escape_string($was). LIKE .mysql_escape_string($filter%).'";

FEHLER =>MySQL-Fehler:You have an error in your SQL syntax near 'FROM Testfall WHERE '.mysql_escape_string(Funktionsbeschreibung). LIKE .mysql_es' at line 1

$sql = "SELECT $was FROM Testfall WHERE $was LIKE '$filter%'";

Geht nicht, er filtert nicht, obwohl in was und filter die korrekten werte drinne stehen.

Wenn ich die " ' " vor und nach dem filter wegnehme, heisst es: Undefined column a (obwohl das der wert in der spalte ist, nachdem gesucht wird und nicht der spaltenname!)

$was= Spalte (Ich gebe immer die Spalte Funktionsbeschreibung ein)

$filter= Suchkriterium (Ich suche nach Einträge in der Spalte die mit a beginnen)

Hier nochmal die Funktion:

if ($_SERVER['REQUEST_METHOD'] == "GET")

{

if (isset($_GET['suche']))

{

$filter = $_GET['suche'];

$was = $_GET['was'];

$sql = "SELECT $was FROM Testfall WHERE $was LIKE '$filter%'";

if (!mysql_query($sql))

{

die("MySQL-Fehler:".mysql_error());

}

}

}

else

{

echo "Geht net";

}

<= Bis zur SQL-Anweisung, funktioniert jetzt alles, wie gesagt, die Variablen haben auch die korrekten Werte. Nur die SQL-Anweisung scheint net zu funzen.. Obwohl sie meines Erachtens nach müsste..

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