php-resource




Archiv verlassen und diese Seite im Standarddesign anzeigen :
zu gestern [userbild]


 
mukraker
11-02-2003, 20:07 
 
Habe folgendest probleme und versuche es schon den ganzen tag in grif zu bekommen.
Man nen script um die daten der user zu editieren und ein anderes bildhochzuladen.

•userdaten editieren funzt !!
• bildupload funzt

nur was ich möchte:
• wenn der user kein neues bild uploaded (nur z.b.tel.) ändert soll der rest bleiben wie er ist
•wenn der user nen neues bild uploaded soll der das alte löschen und das neue wieder nach vorname_nachname.jpg speichern (oder einfach das andere überschreiben
•wenn der user nen neues bild uploadet und nen anderen name, nachname oder beides ändert, soll der das neue bild nach neuem namen benennen, und das alte löschen. damit ich keine toten bilder aufm server habe


mein ausführendes scipt sieht dazu so aus:

<?php
error_reporting(E_ALL);
include("config.inc.php");
include("datenbank.inc.php");
//post daten
$first_name = $_POST['first_name_old'];
$last_name = $_POST['last_name_old'];
$first_name_new = $_POST['first_name_new'];
$last_name_new = $_POST['last_name_new'];
$spitzname = $_POST['spitzname'];
$email_address = $_POST['email_address'];
$birthday = $_POST['birthday'];
$phone = $_POST['phone'];
$mobile = $_POST['mobile'];
$abi1 = $_POST['abi1'];
$abi2 = $_POST['abi2'];
$literatur[] = $_POST['literatur[]'];
$info = $_POST['info'];
$bildname = $HTTP_POST_FILES['bilddir']['tmp_name'];
$street = $_POST['street'];
$plz = $_POST['plz'];
//falls keine gruppe ausgewählt ist
if(is_array($literatur)){
$literatur = join(",",$literatur);
}else {
$literatur = "hat kein Literatur belegt";
}
//db updaten
echo $first_name."----".$last_name."<br>";
echo $bildname;
$abfrage = "update $lampen_user set last_name='$last_name_new',
first_name='$first_name_new',
spitzname='$spitzname',
email_address='$email_address' ,
street='$street' ,
plz='$plz' ,
town='$town' ,
birthday='$birthday' ,
phone='$phone' ,
mobile='$mobile' ,
abi1='$abi1' ,
abi2='$abi2' ,
literatur='$literatur' ,
info='$info' ,
literatur='$literatur',
bilddir='$bilddir'
where last_name='$last_name' and first_name='$first_name'";
$result = mysql_query($abfrage, $conn);
if (!$result)
echo mysql_error();
if (!empty($result) )
//1a
{
if ($bildname !=="" or $bildname !=="none" )
//2a
{
if ($first_name !== $first_name_new || $last_name != $first_name_new)
//3a
{
echo "altes bild wird gelöscht - da der first/last_name geändert wurde <br>";
$bild = $first_name."_".$last_name.".jpg";
$file = "../../images/schuler/".$bild;
if (is_file($file))
//4a
{
echo "<img src=\"../../images/schuler/$bild\" width=\"120\" height=\"160\"><br>";
unlink ( "../../images/schuler/".$bild);
move_uploaded_file($bildname, $userbild.$first_name_new."_".$last_name_new.".jpg");
echo "neuesbild wurde hochgeladen - da der first/last_name geändert wurde<br>";
echo $schulererfolgreich;
//4z------------
}
//3z ---------------
}
//2z--------------
}
else
//5a
{
move_uploaded_file($bildname, $userbild.$first_name."_".$last_name.".jpg");
echo "neuesbild wurde hochgeladen - aber der name wurde nicht geändert<br>";
echo $schulererfolgreich;
//5z-----------------
}
//1z-------------
}
?>


leider funzt das mit dem bild nicht so richtig
-parse error z.B.
• wenn ich kein bild auswähle
• eigendlich ganz oft *g* schaut selbst!

auch zu finden unter:
http://www.wnmedia.de/lampenfieber/admin/admin/admin.php?action=schulerverwalten

 
Abraxax
11-02-2003, 20:17 
 
prüfe mal ab, ob in $bildname nach einem update ohne bild was drin ist.

da dürfe bei keinem bild auch nichts oder NULL drin stehen.
danach kannst du prüfen und dein script anpassen.

 
mukraker
11-02-2003, 20:21 
 
mhm er gibt
"none" aus <--


if ($bildname !=="" or $bildname !=="none" )

gehts nicht ander ?


ist das nicht auch empty ?

 
Abraxax
11-02-2003, 20:57 
 
wenn dann schon so.


if ($bildname !="" or $bildname !="none" ) { .... }

syntax beachten :teach:

 
wahsaga
11-02-2003, 22:00 
 
Original geschrieben von mukraker
?wenn der user nen neues bild uploadet und nen anderen name, nachname oder beides ändert, soll der das neue bild nach neuem namen benennen, und das alte löschen.
warum soll der user vor- und nachname ändern können?

nickname ja vielleicht noch, obwohl das auch unüblich ist, da weiss man ja nachher kaum mehr wer jetzt wer ist.

sowas muss man idR nicht ändern können.

 
mukraker
11-02-2003, 22:05 
 
1. ich weiß das das codebeispiell anders muss
2. k das nicht fürn user ! nur ich als admin kann was ändenr!!
wird ne art adressen sammlung und falls ich mich mal vertippe kann ichs
so schnell ändern!



also ? wer kann helfen?

 
TobiaZ
11-02-2003, 22:11 
 
was willst du denn jetzt noch wissen? Also nur konkrete Fragen, ohne viel Code...

 
mukraker
11-02-2003, 22:12 
 
was an meinem code falsch ist!!
was sont!

schau dir oben den link an und versuch nen user zu editiern + oder ohne bildupload


z.B. wenn ich einfach nur z.B. die straße änder:

Warning: Unlink failed (No such file or directory) in /mnt/ls1/11/392/00000003/htdocs/lampenfieber/admin/admin/schuleraendern1.inc.php on line 60

 
wahsaga
11-02-2003, 22:30 
 
na und, noch viel sprechender als Warning: Unlink failed (No such file or directory) geht's doch wohl nicht!

du hast versucht, eine datei zu löschen, die es gar nicht gibt.

 
mukraker
11-02-2003, 22:34 
 
achne!
das versuche ich zu umgehen

$bild = $first_name."_".$last_name.".jpg";
$file = "../../images/schuler/".$bild
if (is_file($file)
{
echo "<img src=\"../../images/schuler/$bild\" width=\"120\" height=\"160\"><br>";
unlink ( "../../images/schuler/".$bild);



leider bekomme ich da nen parse,

wie muss ich das genau mit is_file () machen ? ich kannte es nur so!

 
mrhappiness
11-02-2003, 22:37 
 
betrachte er sein code-fragment
zähle er die zahl der öffnenden klammern
merke er sie sich
zähle er die zahl der schließenden klammern
multipliziere er die beiden werte
teile er durch die zahl der öffnenden klammern
ziehe er die zahl der öffnenden klammern ab
ist der wert kleiner 0 fehlt der betrag des wertes an schließenden klammern
ist der wert größer 0 fehlt der betrag des wertes an öffnenden klammern
ist der wert ungleich 0: fehler korrigieren

ergänze er das fehlende semikolon

 
TobiaZ
11-02-2003, 22:39 
 
@happy: SO viel mühe?

 
mukraker
11-02-2003, 22:41 
 
scheiße man kann ich denn nicht zählen ?!

 
mrhappiness
11-02-2003, 22:41 
 
Original geschrieben von TobiaZ
@happy: SO viel mühe? so bin ich halt:
edel, hilfreich und gut

 
martin_de
11-02-2003, 22:42 
 
da wir heute den tag des sauber geschrieben php codes haben... :D

der php modus wird mit <?php eingeleitet nicht mit <? . das kann sonst schnell zu imkompatibilitätsproblemen mit anderen scriptsprachen führen.

in der zeile nach dem einleitenden <?php wird immer das error_reporting() angegeben.

z.b.:
error_reporting(E_ALL);

auf php.net müssten alle nutzbaren parameter aufgelistet sein. im zweifelsfall stehen sie aber auch in der php.ini - da wo man die standardangebe dafür setzen kann.
du solltest das mal in dein script setzen. das wird dich dann wohl erstmal mit warnungen und hinweisen überfluten deren ursache du auf den grund gehen solltest.

dein:

$first_name = $_POST['first_name_old'];
$last_name = $_POST['last_name_old'];
$first_name_new = $_POST['first_name_new'];


ist ein problem. wenn da eines der felder nicht ausgefüllt wurde, dann macht php sich lautstark bemerkbar. das wirst du sehen, wenn du das error_reporting() reingesetzt hast.

wenn dus sauber machen willst, dann schreib sowas wie:


$first_name = (isset($_POST['first_name_old'])) ? $_POST['first_name_old'] : "";
$last_name = (isset($_POST['last_name_old'])) ? $_POST['last_name_old'] : "";
$first_name_new = (isset($_POST['first_name_new'])) ? $_POST['first_name_new'] : "";


falls du mit dieser syntax nicht vertraut bist, das ist jeweils die kurzform für


if (isset($_POST['irgendwas'])) {
$bla = $_POST['irgendwas'];
} else {
$bla = "";
}

 
mukraker
11-02-2003, 22:46 
 
ahh hab die klammer gefunden! DOH

if (is_file($file))


aber imme rnoch parser in der zeile

 
mrhappiness
11-02-2003, 22:50 
 
Original geschrieben von mrhappiness

betrachte er sein code-fragment
zähle er die zahl der öffnenden klammern
merke er sie sich
zähle er die zahl der schließenden klammern
multipliziere er die beiden werte
teile er durch die zahl der öffnenden klammern
ziehe er die zahl der öffnenden klammern ab
ist der wert kleiner 0 fehlt der betrag des wertes an schließenden klammern
ist der wert größer 0 fehlt der betrag des wertes an öffnenden klammern
ist der wert ungleich 0: fehler korrigieren

ergänze er das fehlende semikolon


Kleiner Tipp: Es ging mir speziell darum:
$file = "../../images/schuler/".$bild
if (is_file($file)
//4a
{Original geschrieben von mukraker
wenn ich mir die klammer anschaue! passt es doch ?!??wenn's passt, kannstdu entweder nich rechnen, oder du hast noc irgendwo eine öffnende klammer vergessen, die es dann insgesamt wieder ausgleicht :)

 
mukraker
11-02-2003, 22:56 
 
hättest du oben in code geschaut hättest du gesehen das es schon längst drin ist.


nun aber!:
Warning: Undefined variable: literatur in /mnt/ls1/11/392/00000003/htdocs/lampenfieber/admin/admin/schuleraendern1.inc.php on line 23

 
mrhappiness
11-02-2003, 23:02 
 
is ja auch mies, einfach so nen beitrag zu editieren und dann zu motzen

was deinen parse--fehler angeht: sicher, dass es "literatur" gibt?

probier mal$literatur = $_POST['literatur'];

 
wahsaga
12-02-2003, 00:53 
 
Original geschrieben von martin_de
der php modus wird mit <?php eingeleitet nicht mit <? . das kann sonst schnell zu imkompatibilitätsproblemen mit anderen scriptsprachen führen.
in wie fern denn?

solange man seine .php-seiten nicht noch durch andere script-parser jagt, sehe ich da keine probleme.

 
Abraxax
12-02-2003, 01:41 
 
Original geschrieben von wahsaga
solange man seine .php-seiten nicht noch durch andere script-parser jagt, sehe ich da keine probleme.

@martin_de
das sehe ich genau so ... ;)

btw.
ich verwende aber auch <?php. ich finds einfach sauberer und schöner :D
aber im prinzip ist es tatsächlich egal, wenn kein anderer script.parser was damit macht.

 
mukraker
12-02-2003, 22:08 
 
http://www.php-resource.de/forum/showthread.php?s=&threadid=16263
<--
hatte deswegen gestern um hilfe gebeten,
eure antworten waren:
-habs nciht verstanden
-was wilste machen etc.

war echt schwer zu erklären, ich habs aver soebend fertig gestellen

Problem waren die vieln versch, möglichkeiten.
DA das Kundenbild nach $forname."_".$nachname.".jpg" gespeichert wird



<?php
//error_reporting(E_ALL);
include("config.inc.php");
include("datenbank.inc.php");
//post daten
$first_name = $_POST['first_name_old'];
$last_name = $_POST['last_name_old'];
$first_name_new = $_POST['first_name_new'];
$last_name_new = $_POST['last_name_new'];
$spitzname = $_POST['spitzname'];
$email_address = $_POST['email_address'];
$birthday = $_POST['birthday'];
$phone = $_POST['phone'];
$mobile = $_POST['mobile'];
$abi1 = $_POST['abi1'];
$abi2 = $_POST['abi2'];
$literatur[] = $_POST['literatur[]'];
$info = $_POST['info'];
$bildname = $HTTP_POST_FILES['bilddir']['tmp_name'];
$street = $_POST['street'];
$plz = $_POST['plz'];
//falls keine gruppe ausgewählt ist
if(is_array($literatur)){
$literatur = join(",",$literatur);
}else {
$literatur = "hat kein Literatur belegt";
}
//db updaten
$abfrage = "update $lampen_user set last_name='$last_name_new',
first_name='$first_name_new',
spitzname='$spitzname',
email_address='$email_address' ,
street='$street' ,
plz='$plz' ,
town='$town' ,
birthday='$birthday' ,
phone='$phone' ,
mobile='$mobile' ,
abi1='$abi1' ,
abi2='$abi2' ,
literatur='$literatur' ,
info='$info' ,
literatur='$literatur',
bilddir='$bilddir'
where last_name='$last_name' and first_name='$first_name'";
$result = mysql_query($abfrage, $conn);
//bildvars
$bild = $first_name."_".$last_name.".jpg";
$file = "../../images/schuler/".$bild;
// wenn daten eingetragen
if ( $result != "")
{
echo "daten sind geändert worden <br><br>";
//wenn aber nur der name geändert wurd
if ( ($first_name != $first_name_new) or ($last_name != $last_name_new) )
{
echo "ein neuer name wurde gewählt <br><br>";
$bild = $first_name."_".$last_name.".jpg";
$file = "../../images/schuler/".$bild;
//wenn alter bild existiert diess löschen u neues hochladen
if ( is_file($file) )
{
echo "eine altes bild existiert und wurde nun mit neuem namen umbennant<br><br>";
rename ( $file,$first_name_new."_".$last_name_new.".jpg" );
}
//wenn kein altes bild
else
{
echo "es gab kein altes bild <br><br>";
}
}
//wenn neues bild <---- aber incl name oder ohne name
if ( $bildname == "" or $bildname != "none")
{
echo "ein neues bild wrde gewählt<br><br>";
//wenn neue namen u bild
if ( ($first_name != $first_name_new) or ($last_name != $last_name_new) )
{
echo "ein neuer name wurde gewählt und einer neues bild<br><br>";
//wenn alter bild existiert diess löschen u neues hochladen
if ( is_file($file) )
{
echo "eine altes bild existiert und wurde nun mit einem neuem überschrieben<br><br>";
unlink ( $file );
move_uploaded_file($bildname, $userbild.$first_name_new."_".$last_name_new.".jpg");
}
//wenn kein alten bild existiert neues hochladen
else
{
echo "es gab kein altes bild ein neues bild wurde mit neuem name hochgeladen<br><br>";
move_uploaded_file($bildname, $userbild.$first_name_new."_".$last_name_new.".jpg");
}
}
else
{
echo "es wurde nur ein nures bild hochgeladen<br><br>";
move_uploaded_file($bildname, $userbild.$first_name_new."_".$last_name_new.".jpg");
}
}
//wenn keine neuen namen u bild
else
{
echo "es wurde nur das normal update ausgeführt<br><br>";
//move_uploaded_file($bildname, $userbild.$first_name."_".$last_name.".jpg");
}
}
//wenn update fehlschlägt
else
{
echo "update fehlgeschlagen<br><br>";
echo mysql_error();
}
//var ausgabe
echo '$result='.$result."<br><br>";
echo '$first_name='.$first_name."<br><br>";
echo '$first_name_new='.$first_name_new."<br><br>";
echo '$last_name='.$last_name."<br><br>";
echo '$last_name_new='.$last_name_new."<br><br>";
echo '$bildname='.$bildname."<br><br>";
echo '$bild='.$bild."<br><br>";
echo '$file='.$file."<br><br>";
echo '$userbild='.$userbild."<br><br>";

?>



ich weiß ist evtl etwas kompliziert aber es funzt!!
// die vielen echo und so sind drin damit ich weiß was das alles noch ist *g*

script zu finden unter:
http://www.wn-media.de/lampenfieber/admin/admin/admin.php?action=schulerverwalten

 
TobiaZ
12-02-2003, 22:10 
 
Und warum dafür ein neuer beitrag?
Ich führ mal zusammen!

*ZUSAMMENFÜHR*


Alle Zeitangaben in WEZ +2. Es ist jetzt 17:04 Uhr.