Könnte mir bitte jemand weiter helfen. ich versteh das nicht
es geht um eine insert anweisung und eine update anweisung. die das ziel ist immer gleich also es soll in der spalte avatar gespeichert werden.
egal wie ich es umstelle und verändere es tut sich nix.
$_POST["eintragen"] ist value=1 $_POST["jahr"] und $_POST["avatar"] werden per post übergeben und enthalten 2008 und januar.jpg. es soll dann als ganze http.www.domain/modules/2008/januar.jpg adresse im smfForum unter _members eingetragen bzw update gemacht werden
<?php
// Verhindert den Direktaufrif der Datei
if (!defined("mxMainFileLoaded")) die ("You can't access this file directly...");
// Ermitteln des aktuellen Modulnamens
$module_name = basename(dirname(__file__));
// Aufruf der Sprachdatei des Moduls - nur benutzen, wenn es auch eine solche gibt
// Sofern die entsprechende Datei im Verzeichnis modules/MODUL_NAME/language existiert, wird die passende Datei zur eingestellten Sprache genommen
/* mxGetLangfile($module_name); */
// Konfigurationsdatei im Modulverzeichnis laden - nur benutzen, wenn es auch eine solche gibt
// Rechte Bloecke anzeigen: 1 = Ja, 0 = Nein
$index = 1;
// Variablen und somit dessen Werte aus pragmaMx und /oder dem Theme verwenden
// Datenbankprefix, z.B. mx12345
global $prefix, $user_prefix;
// Farben vom Theme
global $bgcolor1, $bgcolor2, $bgcolor3, $bgcolor4, $textcolor1, $textcolor2;
/* hier ist der prefix vom smf gespeicher $forum = $mxsmf['boardsubfolder']; */
include("modules/Forum/config.php");
$forum = $mxsmf['boardsubfolder'];
/* diese daten werden per $_POST["eintragen"]=1 uebergeben */
$modulejahr = $_POST["jahr"];
$monatsavatar = $_POST["avatar"];
/* usernamen ermitteln */
$userDaten = mxGetUserData();
$name = $userDaten['uname'];
/* den pfad zum avatar in einer variablen speichern, soll in spalte avatar einegtragen werden */
$domain = $_SERVER['HTTP_HOST'];
$avatarpfad = "http://".$domain."/modules/".$modulejahr."/".$monatsavatar."";
// Hier kann jetzt beliebiger Code hinein, der allerdings noch KEINE Ausgaben mittels echo, print etc. erzeugen darf !!
// Ab hier wird nun die Seite ausgegeben
include("header.php"); // Seitenkopf, linke Bloecke und Beginn der Mitte
OpenTable(); // Kann man, muß man aber nicht nutzen
/* Abfragen ob bereits ein Avatar gespeicher ist */
if (isset($_POST["eintragen"][0]))
{
/* Abfragen ob bereits ein Avatar gespeicher ist */
$qryalt = "SELECT avatar FROM ".$prefix."_".$forum."_members WHERE `memberName`='".$name."'";
$resultalt = sql_query($qryalt);
$altesavatar = mysql_fetch_row($resultalt);
/*pruefen ob ein avatar bereits eingetragen ist. update auf neues Avatar */
elseif (isset($altesavatar)){
/* Hier soll der code rein, wenn bereits ein avatar eingetragen ist, also update */
}
/* insert avatar */
else{
/* Hier der code, wenn noch kein Avatar eingetragen ist, also insert */
$sql_eintrag = "INSERT INTO ".$prefix."_".$forum."_members (avatar) VALUES ('".$avatarpfad."') WHERE `memberName`='".$name."'";
if(isset($_POST["eintragen"][0]))
mysql_query($sql_eintrag) or die(mysql_error());
}
}
CloseTable(); // Wenn OpenTable() benutzt wurde, MUSS das hier auch sein !!
// Rest der Seite ausgeben
include("footer.php"); // Mitte beenden, rechte Bloecke und Seitenfuß.
?>
Hoi ;)
ZitatINSERT fügt neue Datensätze in eine vorhandene Tabelle ein.
Quelle: http://dev.mysql.com/doc/refman/5.1/de/insert.htmlZitatBei der Ein-Tabellen-Syntax aktualisiert die UPDATE-Anweisung Spalten in vorhandenen Datensätzen in tbl_name mit neuen Werten.
Quelle: http://dev.mysql.com/doc/refman/5.1/de/update.html
hi jörgK
ja das weis ich ja, hab auch schon auf selfphp.de
geschaut und verstehe trotzdem nicht, warum mir bei der insert anweisung
keinen datensatz einfügt.
ich finde den fehler nicht :mad2:
Hoi ;)
Du willst doch mittels dieser Anweiung
$sql_eintrag = "INSERT INTO ".$prefix."_".$forum."_members (avatar) VALUES ('".$avatarpfad."') WHERE `memberName`='".$name."'";
in die Spalte "avatar" eines bestehenden Datensatz eines Users etwas einfügen, somit also einen bestehenden Datensatz ändern. Und das geht nunmal nur mit UPDATE. Des weiteren greift die genannte INSERT-Anweisung quasi ins Leere, da die Klausel "WHERE ..." bei einem neuen Datensatz natürlich nie zutreffen kann ... denn es existiert ja noch nix. ;)
ja aber am anfang ist die spalte leer also brauch ich doch erst insert
also mach ich erst eine abfrage ob es bereits einen wert in avatar gibt und lass es durch if prüfen entsprechend die insert anweisung und die update anweisung.
Hoi ;)
Mir scheint, da liegt immer noch ein Verständnisproblem vor ...
Zitat
ja aber am anfang ist die spalte leer also brauch ich doch erst insert
Nein, denn der Datensatz existiert je bereits (auch wenn eine oder mehrere Spalten leer sind) und Du möchtest den
Inhalt der Spalte "avatar"
ändern. Dementsprechend geht das nur mit UPDATE.
ok ich glaub mir geht ein licht auf.
Also auch wenn die spalte avatar bei einem user leer ist, muß nur eine update anweisung ausgeführt werden.
:gruebel:
danke dir, gleich mal ausprobieren.
gruß
thorsten
Nochmal besten Dank
klappt jetzt super hatte den vollen Denkfehler :mad2:
Dachte wenn die spalte leer ist muß insert ausgeführt werden. LooooL
jetzt passt alles vom feinsten. juhu
nochmal Danke @ JoergK :geil:
und ich denke dieses Thema kann geschlossen werden.
Danke euch
gruß
thorsten