pragmaMx Support Forum

pragmaMx => Coder und Bastlerecke => Thema gestartet von: lausbub in 20 April 2008, 14:19:54

Titel: [Erledigt] insert problem, was ist ich den falsch
Beitrag von: lausbub in 20 April 2008, 14:19:54
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ß.
?>


Titel: Re: insert problem, was ist ich den falsch
Beitrag von: JoergK in 20 April 2008, 14:38:59
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
Titel: Re: insert problem, was ist ich den falsch
Beitrag von: lausbub in 20 April 2008, 14:47:55
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:
Titel: Re: insert problem, was ist ich den falsch
Beitrag von: JoergK in 20 April 2008, 16:53:06
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. ;)
Titel: Re: insert problem, was ist ich den falsch
Beitrag von: lausbub in 20 April 2008, 17:37:04
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.

Titel: Re: insert problem, was ist ich den falsch
Beitrag von: JoergK in 20 April 2008, 20:12:46
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.

Titel: Re: insert problem, was ist ich den falsch
Beitrag von: lausbub in 20 April 2008, 20:23:09
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
Titel: Re: insert problem, was ist ich den falsch
Beitrag von: lausbub in 22 April 2008, 14:23:21
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