[Erledigt] insert problem, was ist ich den falsch

Begonnen von lausbub, 20 April 2008, 14:19:54

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

lausbub

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


PHP Version: 5.2.11
MySql Version: 5.0.51a
Server-Version: Apache/2.2.8 (Linux/SUSE)
Pragma 1.12

JoergK

Hoi ;)

ZitatINSERT fügt neue Datensätze in eine vorhandene Tabelle ein.
Quelle: http://dev.mysql.com/doc/refman/5.1/de/insert.html

ZitatBei 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
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

lausbub

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:
PHP Version: 5.2.11
MySql Version: 5.0.51a
Server-Version: Apache/2.2.8 (Linux/SUSE)
Pragma 1.12

JoergK

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. ;)
Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

lausbub

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.

PHP Version: 5.2.11
MySql Version: 5.0.51a
Server-Version: Apache/2.2.8 (Linux/SUSE)
Pragma 1.12

JoergK

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.

Gruß,
Jörg


Nobody is perfect ... so don't call me Nobody

lausbub

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
PHP Version: 5.2.11
MySql Version: 5.0.51a
Server-Version: Apache/2.2.8 (Linux/SUSE)
Pragma 1.12

lausbub

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
PHP Version: 5.2.11
MySql Version: 5.0.51a
Server-Version: Apache/2.2.8 (Linux/SUSE)
Pragma 1.12