php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2008

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 28.09.2007, 09:44  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard Array - defined und unset?

Hallo wieder einma...

Habe wiedereinmal ein Problem mit meinem PHP Formular...

Ich will ein Array Element löschen, falls ein anderes nicht ausgewählt ist. Blöderweise löscht er mir dieses Element auch, wenn das andere ausgewählt ist und ich versteh nich so ganz wieso.

Zur erläuterung kurz: Es geht um ein Formular, bei dem ein Feld zum ankreuzen ist und ich nebenan was reinschreiben kann. Wenn das Feld nicht angekreuzt ist (erstes Arrayelement) soll der Text, der möglicherweise noch drin ist (zweites Arrayelement) gelöscht werden!

Hier der Code:

PHP-Code:

                    print_r
($interessen);
        if (!
defined($interessen[3])) {
            unset(
$interessen[4]);
            }
                    
print_r($interessen);
    if    (
count($interessen)>0) {
            
$text .= "\n\nInteressiert sich für:\n";
                foreach (
$interessen as $interesse)
                {
                    
$text .= "-"$interesse ."\n";
                }
        } 

Dankeschön für die Hilfe

MFG Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 28.09.2007, 09:53  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

Ich würde vermuten, dass wenn [3] nicht gegeben ist, wird [4] zu [3]... Wenn es das letzte ist, dann würd ich das so lösen:

array durchzählen, wenn <4 das letzte löschen
drieling ist offline  
Alt 28.09.2007, 10:11  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Nee, [4] wird nicht zu [3].. glaub ich jedenfalls..
Wie meinst du das mit dem durchzählen und löschen?? Wie funktioniert das?

Mir ist gerade aufgefallen, dass ich [3] auch löschen müsste danach, da ich ja nicht will, dass beim Mail ausgegeben wird, was das Value des kreuzchens ist, sondern, dass angezeigt wird, was dann ja dort geschrieben wurde (also beim feld neben dem kreuzchen, wie oben beschrieben)..

Danke und entschuldige für die vielen verwirrenden Worte...

MFG Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 28.09.2007, 10:23  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

zeig doch mal eben das formular und das ganze script
drieling ist offline  
Alt 28.09.2007, 10:31  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Das ganze wäre einwenig gross, aber ich zeig dir ma das wichtigste:

PHP-Code:

  
unset($errors);
  if(!isset(
$_SESSION['captcha'])) $errors[] = 'Session error';
  if (
$email == "" or !preg_match("/^[^@]+@.+\.\D{2,5}$/"$email)) $errors[] = "die E-Mail-Adresse wurde nicht angegeben oder sieht nicht richtig aus";
  if (
$name == ""$errors[] = "es wurde kein Name eingegeben";
  if (
$vorname == ""$errors[] = "es wurde kein Vorname eingegeben";
  if ((
$interessen[4] == "") && !($interessen[3] == "")) $errors[] = "Sie haben keine zusätzlichen Interessen angegeben";  // --> Geht iwi nich mehr so ganz??
  
if ($text == ""$errors[] = "es wurde keine Nachricht eingegeben";
  if (
$_FILES['probe']['size'] > $max_attach_size$errors[] = "Attachment zu groß (".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - Maximalgröße: ".number_format($max_attach_size/1000,0,",","")." KB";
  if(
$_POST['captcha_word'] != $_SESSION['captcha']) $errors[] = 'Sicherheitscode ist falsch';


  if (empty(
$errors))
   {
    
$text stripslashes($text);
    
$subject stripslashes($subject);
      
$text "Folgende Nachricht wurde über das Kontaktforumular versendet:\n\n".$text;
    if (
$name != ""$mail_name $name; else $mail_name "unbekannt";
    if (
$vorname != ""$text "Name: ".$name." ".$vorname."\n\n".$text;
    if (
$anrede != ""$text "Anrede: ".$anrede."\n\n".$text;
    if (
$subject != ""$mail_subject $subject; else $mail_subject "kein Betreff";
    if (
$email != ""$mail_email $email; else $mail_email "email@unknown.xyz";
    if (
$telefon != ""$text "Telefon: ".$telefon."\n\n".$text;
    if (
$firma != ""$text "Firma: ".$firma."\n\n".$text;
    if (
$strasse != ""$text "Strasse: ".$strasse."\n\n".$text;
    if (
$postfach != ""$text "Postfach: ".$postfach."\n\n".$text;
    if (
$plz_ort != ""$text "PLZ / Ort: ".$plz_ort."\n\n".$text;


                    
print_r($interessen);
        if (!
defined($interessen[3])) {
            unset(
$interessen[4]);
            }
            unset(
$interessen[3]);
                    
print_r($interessen);
                    
    if    (
count($interessen)>0) {
            
$text .= "\n\nInteressiert sich für:\n";
                foreach (
$interessen as $interesse)
                {
                    
$text .= "-"$interesse ."\n";
                }
        } 
Formular:

Code:
<form method="post" action="<?php echo basename($_SERVER["PHP_SELF"]); ?>" enctype="multipart/form-data"><div>
  <p>Ich interessiere mich für:</p>
  <p><input type="checkbox" name="interessen[0]" value="mitgliedschaft">Mitgliedschaft</p>
  <p><input type="checkbox" name="interessen[1]" value="sponsor">Teilnahme als Sponsor</p>
  <p><input type="checkbox" name="interessen[2]" value="bannerwerbung">Bannerwerbung</p>
  <p><input type="checkbox" name="interessen[3]" value="diverses">&nbsp;<input type="text" name="interessen[4]" value="Andere Interessen" size="35"></p>
  <br />
  <p>Meine/unsere Adresse lautet:<br />
  <span style="font-size:10px">* sind Pflichtfelder und m&uuml;ssen ausgef&uuml;llt werden!</span></p>
  
  <p>Anrede:<br /><select name="anrede" size="1" tabindex="2"><option value="herr">Herr</option><option value="frau">Frau</option></select></p>
  <p>Name: *<br /><input type="text" name="name" value="<?php if (isset($name)) echo htmlentities(stripslashes($name)); else echo ""; ?>" size="35" /></p>
  <p>Vorname: *<br /><input type="text" name="vorname" value="<?php if (isset($vorname)) echo htmlentities(stripslashes($vorname)); else echo ""; ?>" size="35" /></p>
 .........Mehr unnötiger Code..........
  <p>E-Mail: *<br /><input type="text" name="email" value="<?php if (isset($email)) echo htmlentities(stripslashes($email)); else echo ""; ?>" size="35" /></p>
  <p>Telefon:<br /><input type="text" name="telefon" value="<?php if (isset($telefon)) echo htmlentities(stripslashes($telefon)); else echo ""; ?>" size="35" /></p>
  <p>Betreff:<br /><input type="text" name="subject" value="<?php if (isset($subject)) echo htmlentities(stripslashes($subject)); else echo ""; ?>" size="35" /></p>
  <p>Nachricht:<br /><textarea name="text" cols="44" rows="6"><?php if (isset($text)) echo htmlentities(stripslashes($text)); else echo ""; ?></textarea></p>
  <p>Attachment:<br /><input type="file" name="probe" value="<?php if (isset($_POST['probe'])) echo htmlentities(stripslashes($_POST['probe'])); else echo ""; ?>" size="20"/><br /><span style="font-size:10px;">Bitte höchstens 1000kb Bilder hochladen!</span></p>
  <p>Sicherheitscode<br /><img border="1" class="captcha" src="formmail_img/image.php" >&nbsp;&nbsp;&raquo;&nbsp;<input class="captcha" type="text" name="captcha_word" value="" size="10" /></p>
  <br>
  <p><input type="submit" name="form_submitted" value="Absenden" /> <input  type="checkbox" name="copy" value="true" /> Kopie an Absender</p>
  </div></form>
Thx, for help
Gruss Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 28.09.2007, 10:45  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

Und nun zum Verständnis: Wenn "diverses" ausgewählt ist, soll das Textfeld mitgesendet werden, wenn nicht, dann nicht?
drieling ist offline  
Alt 28.09.2007, 10:48  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Nicht ganz: Wenn diverses ausgewählt ist, soll das Textfeld gesendet, diverses selbst aber gelöscht werden, wenn es nicht ausgewählt ist, soll das Textfeld nicht gesendet (also aus dem Array gelöscht) werden!

Danke ^^
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 28.09.2007, 10:57  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

so mal eben drin rumgewurschtelt... - ungetestet aber so könnte es auf die schnelle funktionieren, ist aber nicht schön gelöst...

script
PHP-Code:
  unset($errors);
  if(!isset(
$_SESSION['captcha'])) $errors[] = 'Session error';
  if (
$email == "" or !preg_match("/^[^@]+@.+\.\D{2,5}$/"$email)) $errors[] = "die E-Mail-Adresse wurde nicht angegeben oder sieht nicht richtig aus";
  if (
$name == ""$errors[] = "es wurde kein Name eingegeben";
  if (
$vorname == ""$errors[] = "es wurde kein Vorname eingegeben";
  
#if (($interessen[4] == "") && ($interessen[3] != "")) $errors[] = "Sie haben keine zusätzlichen Interessen angegeben";  // --> Geht iwi nich mehr so ganz??
  
if ($text == ""$errors[] = "es wurde keine Nachricht eingegeben";
  if (
$_FILES['probe']['size'] > $max_attach_size$errors[] = "Attachment zu groß (".number_format($_FILES['probe']['size']/1000,0,",","")." KB) - Maximalgröße: ".number_format($max_attach_size/1000,0,",","")." KB";
  if(
$_POST['captcha_word'] != $_SESSION['captcha']) $errors[] = 'Sicherheitscode ist falsch';


  if (empty(
$errors))
   {
    
$text stripslashes($text);
    
$subject stripslashes($subject);
      
$text "Folgende Nachricht wurde über das Kontaktforumular versendet:\n\n".$text;
    if (
$name != ""$mail_name $name; else $mail_name "unbekannt";
    if (
$vorname != ""$text "Name: ".$name." ".$vorname."\n\n".$text;
    if (
$anrede != ""$text "Anrede: ".$anrede."\n\n".$text;
    if (
$subject != ""$mail_subject $subject; else $mail_subject "kein Betreff";
    if (
$email != ""$mail_email $email; else $mail_email "email@unknown.xyz";
    if (
$telefon != ""$text "Telefon: ".$telefon."\n\n".$text;
    if (
$firma != ""$text "Firma: ".$firma."\n\n".$text;
    if (
$strasse != ""$text "Strasse: ".$strasse."\n\n".$text;
    if (
$postfach != ""$text "Postfach: ".$postfach."\n\n".$text;
    if (
$plz_ort != ""$text "PLZ / Ort: ".$plz_ort."\n\n".$text;


                   
/* print_r($interessen);
    if (!defined($interessen[3])) {
            unset($interessen[4]);
            }
            unset($interessen[3]);
                    print_r($interessen);
                    */
                    
    
if    (count($interessen)>0) {
            
$text .= "\n\nInteressiert sich für:\n";
                foreach (
$interessen as $interesse)
                {
                   if ((
$interesse != "") or ($interesse != "Andere Interessen"){ $text .= "-"$interesse ."\n"; }
                }
        } 
drieling ist offline  
Alt 28.09.2007, 11:04  
Erfahrener Benutzer
 
Benutzerbild von Toby
 
Registriert seit: 26.09.2007
Beiträge: 117
PHP-Kenntnisse:
Anfänger
Toby befindet sich auf einem aufstrebenden Ast
Toby eine Nachricht über MSN schicken
Standard

Okay, jetzt mal ohne, dass ichs ausprobiert..
das würde zwar höchstwahrscheinlich funktionieren, jedoch nur wenn der Text genau "Andere Interessen" ist.
Und wenn das ja nich zutrifft, also Wenn der Text anders ist, dann machts ja das andere gar nicht mehr, also das da:

PHP-Code:
$text .= "-"$interesse ."\n"; } 
Gibts nich noch eine andere etwas geschicktere lösung??
Wäre dir sehr dankbar..

Trotzdem ma danke,

Gruss Toby
__________________
hofoa.ch
----------------------------
Toby ist offline  
Alt 28.09.2007, 11:09  
Erfahrener Benutzer
 
Registriert seit: 08.08.2007
Beiträge: 549
PHP-Kenntnisse:
Fortgeschritten
drieling befindet sich auf einem aufstrebenden Ast
drieling eine Nachricht über ICQ schicken
Standard

wieso machst du nicht einfach ein textfeld, nennst das z.b. andere und lässt das ausgeben, wenn es ausgefüllt ist, das wäre das einfachste und schnellst...
drieling ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Turnierbaum aus array erstellen kingflo PHP-Fortgeschrittene 11 30.07.2008 11:32
Soapfault: Undefined Property Argi PHP-Fortgeschrittene 0 28.07.2008 11:17
Kategoriedaten rekursiv in Array bringen Schiedsrichter PHP Tipps 2008 2 10.12.2007 15:43
ARRAY: alle möglichen Kombinationen Tentacle PHP Tipps 2006 13 12.05.2006 00:18
Übersicht aus mehrdimensionalem Array erzeugen Crypi PHP-Fortgeschrittene 0 30.01.2006 13:44
Array auslesen andrew22 PHP Tipps 2006 3 21.01.2006 23:06
Array Formatierung PHP Tipps 2006 3 17.01.2006 19:12
Menü mit Unterpunkten supertramp Beitragsarchiv 7 18.10.2005 22:40
Problem beim vergleichen von 2 Arrays PHP Tipps 2005-2 1 06.10.2005 14:25
(schnellere) Funktion zum Zusammenfassen von CSS PHP-Fortgeschrittene 21 08.08.2005 16:47
Sortieren von Arrays mit mehr als 2 Dimensionen (Teil 2) Buhmann PHP-Fortgeschrittene 4 12.07.2005 14:03
Array wie auslesen? PHP Tipps 2005 7 07.03.2005 11:43
[Erledigt] Mehrdimensionales Array in eindimensionales Array umwandeln PHP-Fortgeschrittene 3 03.01.2005 22:31
Abfrage mit id aus anderer Tabelle suter PHP Tipps 2004-2 15 16.12.2004 14:25

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
formmail_img/image.php

Alle Zeitangaben in WEZ +2. Es ist jetzt 18:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum