Datenbankspalte leeren

Alice

Erfahrenes Mitglied
Hallo. :)

Ich würde gerne eine Datenbankspalte leeren.

Erklärung:
Im Filesystem wird eine Grafik gespeichert und in der Datenbank ein Code gespeichert.

Mit einem PHP-Code (und einer delete.php) kann die Grafik gelöscht werden aber der Code ist ja noch in der Datenbank und diesen möchte ich aus der Datenbankspalte leeren.

Nur wie mache ich das?

Ich möchte den SQL-Befehl in die delete.php einbauen.

PHP:
  <?php
  $update = mysql_query("UPDATE userfields Set field2 = 'NULL' WHERE userid = '4'");
  ?>

Mein Problem ist jetzt das ich nicht genau weiss was dieser Code macht. Ich möchte ja nicht alle Profilfelder (field2) leeren sondern nur die von einzelnen Usern.

Bei der Datenbank handelt es sich um eine vBulletin-Datenbank.

Die Tabelle heisst "userfield" und die Spalte heisst "field2". In der Tabelle "userfield" gibt es auch die Spalte "userid".

Wie kann ich es nun anstellen dass das richtige "field2" geleert wird? Wie muss der SQL-Befehl aussehen?

Vielen Dank im Vorraus. :)
 
Zuletzt bearbeitet:
Mit " WHERE id = '4' " hast du doch schon das was du willst. Es wird nur beim User mit der ID 4 das Feld "geleert".

Wenn du dir noch nicht sicher bist was bei den einzelnen Anweisungen passiert kannst du dir doch auch einfach eine Kopie der Datenbank machen (zumindest wenn du noch lokal auf dem PC arbeitest).
Dort kannst du dann testen und wenn was schief geht ist es nicht schlimm.

Gruß Thomas
 
Soweit ich weiss gibt man auch bei MySQL Null nicht als String an also ohne Hochkomma
PHP:
  <?php
  $update = mysql_query("UPDATE userfields Set field2 = NULL WHERE userid = '4'");
  ?>

Grüsse Alex
 
Ich habe jetzt mal ein Datenbank-Update gemacht und probiere das jetzt aus.

Wie wird der SQL-Befehl denn ausgeführt? Ich glaube ich habe irgendwo gelesen das der SQL-Befehl durch das WHERE automatisch ausgeführt wird. Stimmt das?
 
WHERE gibt nur die Bedingungen an die erfüllt sein müssen.

Ausgeführt wird die SQL-Anweisung durch mysql_query, du kannst es auch so schreiben:

PHP:
mysql_query("UPDATE userfields SET fiedl2 = NULL WHERE userid = '4'");

also ohne das du es an eine Variable übergibst.
 
Achso. Gut zu wissen. Danke!

Die UserID muss ich bereits im PHP-Skript auslesen und an die delete.php übergeben.

Die UserID steht durch einen SQL-Befehl bereits zur Verfügung.

PHP:
   $bl5000 = "SELECT * FROM userfield as parent 
              LEFT JOIN (
                        SELECT * FROM user
                        )as child 
              ON (parent.userid = child.userid)";

Wie kann ich die UserID am besten an die delete.php übergeben?

Kann ich das irgendwie an meinen "Lösch-Link" anhängen?

Löschfunktion im PHP-Skript
PHP:
echo "<td align=left><a style=\"color:blue;\" href=\"./delete.php?img=../Avatare/Avatar-".$row['field2'].".png\">Löschen</a></td>";

Delete.php
PHP:
<?php
if( isset($_GET["img"]) ){
if(file_exists($_GET["img"])) {
unlink($_GET["img"]);
}
}

mysql_query("UPDATE userfields SET fiedl2 = NULL WHERE userid = '$userid'");
  
header("Location: http://www.meine-seite.de/admin/avatare.php");
exit;
?>
 
Der "Löschlink" in etwas gekürzter Form:

PHP:
delete.php?img=0815&userid=4

jeder weitere Parameter wird duch das &-Zeichen angehängt.
 
Das verstehe ich jetzt nicht so ganz.

Der Löschlink sieht aktuell so aus:

PHP:
$deleteA = "./delete.php?img=";
$deleteB = "../Avatare/Avatar-";

// Hier steckt der wichtige Code für die Grafik drin.
// Beispiel: www,meine-seite,de/Avatare/Avatar-bl5000.png
//$row['field16'] 

echo "<td align=left><a style=\"color:blue;\" href=\"".$deleteA.deleteB.$row['field16'].".png\">Löschen</a></td>";

Wäre es evtl. so richtig?

PHP:
echo "<td align=left><a style=\"color:blue;\" href=\"".$deleteA.deleteB.$row['field16'].".png".&$deleteA."\">Löschen</a></td>";
 
Sieht ein bisschen komisch aus wie du das aus den einzelnen Variablen zusammenbaust.

PHP:
$deleteA = "./delete.php?img="; 
$deleteB = "../Avatare/Avatar-"; 

// Hier steckt der wichtige Code für die Grafik drin. 
// Beispiel: www,meine-seite,de/Avatare/Avatar-bl5000.png 
//$row['field16']  

echo "<td align=left><a style=\"color:blue;\" href=\"".$deleteA.deleteB.$row['field16'].".png\">Löschen</a></td>";

//ergibt dann
//echo "<td align=left><a style=\"color:blue;\" href=\"./delete.php?img=../Avatare/Avatar-bl5000 .".png\">Löschen</a></td>";

Wenn du jetzt noch die UserID dranhängn willst, musst du es noch so erweitern:

PHP:
echo "<td align=left><a style=\"color:blue;\" href=\"".$deleteA.deleteB.$row['field16'].".png&userid=" .$userid ."\">Löschen</a></td>";

Du hast gewollt oder auch nicht oben den Dateinamen in [ B ] und [ /B ] gepackt. Wenn das Absicht war ist das sicher ein Fehler, denn so einen Namen gibt es wohl nicht.
 
Ja ich baue mir meinen Variablen öfter so zusammen. Ich habe meistens eine ganze Reihe von Variablen direkt untereinander. Das hilft mir z.B. die URLs usw. anzupassen. Praktisch eine Art "Config".

Das "[ B ] und [ /B ]" war zwar absicht aber ich dachte der BB-Code würde den Text hervorheben. :D

Ich probiere deinen Code direkt mal aus und gebe dann bescheid. :)
 

Neue Beiträge

Zurück