Meowsalot: Einträge speichern

Hallo,

ich stehe gerade total auf dem Schlauch. Folgende Formular habe ich

<?php foreach($ProjektleiterModule as $array){ ?>
	<div><?php echo htmlspecialchars($array['mpv_vorname'] . " " . $array['mpv_name']) ?></div>
	<?php 
		$date = date_create($mg_von);

		for($i=0; $i < $tage; $i++) { 

			if ($i == 0) {
				date_add($date, date_interval_create_from_date_string('0 day'));

			} else {
				date_add($date, date_interval_create_from_date_string('1 day'));	
			}
	?>

<div class="textfeld">
	<label for="ms2f_datum[<?php echo $i+1 ?>]">Datum</label>
	
	<input type="text" 
	 		name="ms2f_datum[<?php echo $i+1 ?>]" 
	 		id="ms2f_datum[<?php echo $i+1 ?>]" 
	 		value="<?php echo $i+1 ?>. Tag - <?php echo date_format($date, 'd.m.Y'); ?>" 
	 		readonly>
	
	<input type="hidden" 
		   name="ms2f_tag[<?php echo $i+1 ?>]" 
		   id="ms2f_tag[<?php echo $i+1 ?>]" 
		   value="<?php echo $i+1; ?>">
	
	<input type="hidden" 
		   name="ms2f_pid[<?php echo $i+1 ?>]" 
		   id="ms2f_pid[<?php echo $i+1 ?>]" 
		   value="<?php echo $array['mpv_code']; ?>">
</div>

<div class="textfeld abstand_2">
	
	<label for="ms2f_von[<?php echo $i+1 ?>]">Einsatzzeit</label>
	<input type="text" 
		   name="ms2f_von[<?php echo $i+1 ?>]" 
		   id="ms2f_von[<?php echo $i+1 ?>]" 
		   value=""> bis
	<input type="text" 
		   name="ms2f_bis[<?php echo $i+1 ?>]"
		   id="ms2f_bis[<?php echo $i+1 ?>]" 
		   value=""> Uhr
</div>

<?php } } ?>

Mein dazugehöriger PHP Code

$ms2f_pid  	= array();
$ms2f_tag  	= array();
$ms2f_datum = array();
$ms2f_von  	= array();
$ms2f_bis  	= array();


for($i = 0; $i <= $tage; $i++){

	$ms2f_mid 			= $veranstaltung;
	$ms2f_pid 			= $_POST['ms2f_pid'];
	$ms2f_tag 			= $_POST['ms2f_tag'];
	$ms2f_datum 		= "";
	$ms2f_von 			= $_POST['ms2f_von'];
	$ms2f_bis 			= $_POST['ms2f_bis'];
					
	if ($stmt = $mysqli->prepare("INSERT INTO  feedbackbogen_einsatzzeiten (ms2f_mid, ms2f_pid, ms2f_tag, ms2f_datum, ms2f_von, ms2f_bis)  
								  VALUES (?, ?, ?, ?, ?, ?)")) { 

		$ms2f_mid			= $ms2f_mid;
		$ms2f_pid			= $ms2f_pid[$i];
		$ms2f_tag			= $ms2f_tag[$i];
		$ms2f_datum 		= $ms2f_datum[$i];
		$ms2f_von 			= $ms2f_von[$i];
		$ms2f_bis 			= $ms2f_bis[$i];
							
		$stmt->bind_param("ssssss", $ms2f_mid, $ms2f_pid, $ms2f_tag, $ms2f_datum, $ms2f_von, $ms2f_bis);
		$stmt->execute();
	} else {
	    echo $mysqli -> error;
	}	 
} 	

Mein Problem ist, wenn ich die Einträge speichere, habe ich immer nur die letzten drei, die ersten werden entweder nicht beachtet oder überschrieben.

Hier noch ein Screen von meiner MySQL Datenbank wie die Werte ankommen, hier könnt ihr genau sehen der erste User wird nicht beachtet. Die 89523208f3f6d1e0adfed53f28d868eb gehört dem Test-User 2

Was mache ich falsch?

Bis bald!
Meowsalot (Bernd)

  1. Hallo Meowsalot,

    deine Schleifen laufen in Abhängigkeit von $tage. Wo wird $tage definiert?

    MfG, at

    1. Hallo at,

      hier

      $startDate = new DateTime($mg_von);
      $endDate = new DateTime($mg_bis);
      $diff = $startDate->diff($endDate);
      $tage = $diff->days+1;
      

      Bis bald! Meowsalot (Bernd)

  2. Moin,

    sorge dafür, daß all Deine inputfelder innerhalb eines <form> liegen und eindeutige Namen haben, Dann werden die auch alle übertragen.

    MfG

    1. Hallo pl,

      meine Inputfelder liegen innerhalb von einem <form> und haben doch eindeutige Namen, wie du in meinem ersten Posting sehen kannst.

      Bis bald!
      Meowsalot (Bernd)

      1. hi,

        meine Inputfelder liegen innerhalb von einem <form> und haben doch eindeutige Namen, wie du in meinem ersten Posting sehen kannst.

        Nein. Erstens gibt es da gar kein <form>-Element und zweitens ist überhaupt nicht zu sehen, ob die Namen eindeutig sind.

        MfG

        1. Hallo pl,

          Nein. Erstens gibt es da gar kein <form>-Element

          das stimmt, weil ich nur den relevanten Code genommen habe. Ein <form>-Element ist natürlich da.

          und zweitens ist überhaupt nicht zu sehen, ob die Namen eindeutig sind.

          Nein?

          <input type="hidden" 
          		   name="ms2f_tag[<?php echo $i+1 ?>]" 
          		   id="ms2f_tag[<?php echo $i+1 ?>]" 
          		   value="<?php echo $i+1; ?>">
          	
          	<input type="hidden" 
          		   name="ms2f_pid[<?php echo $i+1 ?>]" 
          		   id="ms2f_pid[<?php echo $i+1 ?>]" 
          		   value="<?php echo $array['mpv_code']; ?>">
          

          Kann aber auch sein, wir reden aneinander vorbei.

          Bis bald!
          Meowsalot (Bernd)

          1. hi,

            Kann aber auch sein, wir reden aneinander vorbei.

            Ne ganz bestimmt nicht. Was ist denn an $i eindeutig? Ich sehe das nicht und wenn Du Deinen Fehler mit fremder Hilfe finden willst, ist eine solche Diskussion hier völlig unangebracht!

            Tipp: Bringe mehr Struktur in Deine Inputfelder.

            MfG

            1. Hallo pl,

              Kann aber auch sein, wir reden aneinander vorbei.

              Ne ganz bestimmt nicht. Was ist denn an $i eindeutig? Ich sehe das nicht und wenn Du Deinen Fehler mit fremder Hilfe finden willst, ist eine solche Diskussion hier völlig unangebracht!

              Es muss schon erlaubt sein nachzufragen, wenn man eine Antwort nicht versteht.

              Bis demnächst
              Matthias

              --
              Rosen sind rot.
            2. hi Bernd,

              Tipp: Bringe mehr Struktur in Deine Inputfelder.

              Du hast zwar nicht noch einmal nachgefragt wie ich das meine, aber ich erklärs Dir trotzdem. Erfasst werden sollen für mehrere Personen jeweils 3 Tage wobei es für jeden Tag eine von und eine bis Uhrzeit gibt.

              Damit ergibt sich eine ganz bestimmte Struktur für Dein Datenmodell, was Du mal aufmalen solltest. Mit der Annahme, daß jede Person anhand einer ID eindeutig ist, könnte die Struktur so aussehen:

              zeiten = {
                  1: [{date,von,bis},{date,von,bis},{date,von,bis}],
                  2: [{date,von,bis},{date,von,bis},{date,von,bis}]
              }; 
              

              Wobei 1, 2 die ID zur Person ist. Für die Date-Objekte habe ich hier nur die Schlüssel notiert, im Detail könnte das so aussehen:

              {date: '2018-01-01', von: '01:01', bis: '02:01'}
              

              Und jetzt kommts: Ein solches Modell ist erweiterbar! D.h., es können Personen hinzukommen und zur Person können Zeiten hinzukommen.

              Wenn die Daten modelliert sind, ist dann auch klar wie sie erfasst und verarbeitet werden. Du bekommst sozusagen einen einheitlichen Prozess.

              Ich schreib Dir das hier, weil ich selbst einmal eine Zeiterfassung programmiert habe, dafür hatte ich einen Tag Zeit, stand also enorm unter Zeitdruck. Meine diesbezügliche Erfahrung gebe ich hiermit also gerne weiter.

              Es steht Dir natürlich frei, das zu ignorieren.

              MfG

              1. Hallo pl,

                Es steht Dir natürlich frei, das zu ignorieren.

                Mit dem Hintern einreißen, was man mühevoll mit den Händen aufbaut.

                Bis demnächst
                Matthias

                --
                Rosen sind rot.
  3. Tach!

    Mein Problem ist, wenn ich die Einträge speichere, habe ich immer nur die letzten drei, die ersten werden entweder nicht beachtet oder überschrieben. [...] Was mache ich falsch?

    Du debuggst vermutlich nicht (richtig). Zum einen solltest du in den Entwicklertools des Browsers nachschauen, wie der Request aussieht, vor allem der Request-Body. Auf der Serverseite solltest du dir eine Kontrollausgabe von $_POST erstellen, mit var_dump() oder auch mit print_r(). An diesen beiden Dingen solltest du erkennen, dass der Client zwar alles mitschickt, PHP aber nur einen Datensatz erkennen mag. Und wenn du genauer hinschaust, kannst du sehen, dass du keine Unterscheidung zwischen den Nutzern hast. Die Eingabefeldnamen unterscheiden sich nur bezüglich des Datums. Bei gleichen Feldnamen gewinnt das letztere den Platz in $_POST/$_GET.

    Erzeuge eindeutige Feldnamen, zum Beispiel indem du schachtelst und mehrere []-Klammernpaare angibst, à la data[userid][fieldname][day]. Damit bekommst du auch eindeutig auswertbare und vollständige Daten in $_POST.

    dedlfix.

    1. Hallo dedlfix,

      Erzeuge eindeutige Feldnamen, zum Beispiel indem du schachtelst und mehrere []-Klammernpaare angibst, à la data[userid][fieldname][day]. Damit bekommst du auch eindeutig auswertbare und vollständige Daten in $_POST.

      du meinst so?

      <?php foreach($ProjektleiterModule as $array){ ?>
      	<div><?php echo htmlspecialchars($array['mpv_vorname'] . " " . $array['mpv_name']) ?></div>
      	<?php 
      		$date = date_create($mg_von);
      
      		for($i=0; $i < $tage; $i++) { 
      
      			if ($i == 0) {
      				date_add($date, date_interval_create_from_date_string('0 day'));
      
      			} else {
      				date_add($date, date_interval_create_from_date_string('1 day'));	
      			}
      	?>
      
      <div class="textfeld">
      	<label for="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]">Datum</label>
      	
      	<input type="text" 
      	 		name="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
      	 		id="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
      	 		value="<?php echo $i+1 ?>. Tag - <?php echo date_format($date, 'd.m.Y'); ?>" 
      	 		readonly>
      	
      	<input type="hidden" 
      		   name="ms2f_tag[<?php echo $i+1 ?>]" 
      		   id="ms2f_tag[<?php echo $i+1 ?>]" 
      		   value="<?php echo $i+1; ?>">
      	
      	<input type="hidden" 
      		   name="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
      		   id="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
      		   value="<?php echo $array['mpv_code']; ?>">
      </div>
      
      <div class="textfeld abstand_2">
      	
      	<label for="ms2f_von[<?php echo $i+1 ?>]">Einsatzzeit</label>
      	<input type="text" 
      		   name="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
      		   id="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
      		   value=""> bis
      	<input type="text" 
      		   name="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]"
      		   id="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
      		   value=""> Uhr
      </div>
      
      <?php } } ?>
      

      Wenn ja, dann frage ich mich, wie frage ich hier die ersten [] ab?

      $ms2f_pid  	= array();
      $ms2f_tag  	= array();
      $ms2f_datum = array();
      $ms2f_von  	= array();
      $ms2f_bis  	= array();
      
      
      for($i = 0; $i <= $tage; $i++){
      
      	$ms2f_mid 			= $veranstaltung;
      	$ms2f_pid 			= $_POST['ms2f_pid'];
      	$ms2f_tag 			= $_POST['ms2f_tag'];
      	$ms2f_datum 		= "";
      	$ms2f_von 			= $_POST['ms2f_von'];
      	$ms2f_bis 			= $_POST['ms2f_bis'];
      					
      	if ($stmt = $mysqli->prepare("INSERT INTO  feedbackbogen_einsatzzeiten (ms2f_mid, ms2f_pid, ms2f_tag, ms2f_datum, ms2f_von, ms2f_bis)  
      								  VALUES (?, ?, ?, ?, ?, ?)")) { 
      
      		$ms2f_mid			= $ms2f_mid;
      		$ms2f_pid			= $ms2f_pid[$i];
      		$ms2f_tag			= $ms2f_tag[$i];
      		$ms2f_datum 		= $ms2f_datum[$i];
      		$ms2f_von 			= $ms2f_von[$i];
      		$ms2f_bis 			= $ms2f_bis[$i];
      							
      		$stmt->bind_param("ssssss", $ms2f_mid, $ms2f_pid, $ms2f_tag, $ms2f_datum, $ms2f_von, $ms2f_bis);
      		$stmt->execute();
      	} else {
      	    echo $mysqli -> error;
      	}	 
      }
      

      Bis bald!
      Meowsalot (Bernd)

      1. Hallo,

        ich glaube, ich habe es:

        for($i = 0; $i <= $tage; $i++){
        
        			foreach ($_POST['ms2f_pid'] as $nr => $inhalt) {
        
        				$ms2f_mid 			= $veranstaltung;
        				$ms2f_pid 			= $_POST['ms2f_pid'];
        				$ms2f_tag 			= $_POST['ms2f_tag'];
        				$ms2f_datum 		= "";
        				$ms2f_von 			= $_POST['ms2f_von'];
        				$ms2f_bis 			= $_POST['ms2f_bis'];
        					
        				if ($stmt = $mysqli->prepare("INSERT INTO  feedbackbogen_einsatzzeiten (ms2f_mid, ms2f_pid, ms2f_tag, ms2f_datum, ms2f_von, ms2f_bis)  
        											VALUES (?, ?, ?, ?, ?, ?)"))
        				{ 
        
        				$ms2f_mid			= $ms2f_mid;
        				$ms2f_pid			= $ms2f_pid[$nr][$i];
        				$ms2f_tag			= $ms2f_tag[$nr][$i];
        				$ms2f_datum 		= $ms2f_datum[$nr][$i];
        				$ms2f_von 			= $ms2f_von[$nr][$i];
        				$ms2f_bis 			= $ms2f_bis[$nr][$i];
        							
        				$stmt->bind_param("ssssss", $ms2f_mid, $ms2f_pid, $ms2f_tag, $ms2f_datum, $ms2f_von, $ms2f_bis);
        				$stmt->execute();
        				} else {
        	        echo $mysqli -> error;
        	      }}	 
        		}  	
        

        Bis bald!
        Meowsalot (Bernd)

  4. Hi,

    Mein Problem ist, wenn ich die Einträge speichere, habe ich immer nur die letzten drei, die ersten werden entweder nicht beachtet oder überschrieben.

    Hast Du wirklich nur ein form? Oder ein Form pro User? (ist aus Deinem Code nicht ersichtlich, da kein <form> zu sehen ist)

    cu,
    Andreas a/k/a MudGuard

    1. Hallo MudGuard,

      ich habe nur ein <form> für das gesamte Dokument.

      Bis bald!
      Meowsalot (Bernd)

      1. Hi,

        ich habe nur ein <form> für das gesamte Dokument.

        aber Du hast zwei geschachtelte Schleifen (User und Tage), verwendest für die Namen der input-Elemente aber nur die Tage - damit sind sie natürlich nicht eindeutig.

        cu,
        Andreas a/k/a MudGuard

        1. Hallo MudGuard,

          aber Du hast zwei geschachtelte Schleifen (User und Tage), verwendest für die Namen der input-Elemente aber nur die Tage - damit sind sie natürlich nicht eindeutig.

          dieses habe ich jetzt geändert

          <div class="textfeld">
          	<label for="ms2f_datum[<?php echo $i+1 ?>]">Datum</label>
          		          
          	<input type="text" 
          		name="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		id="ms2f_datum[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		value="<?php echo $i+1 ?>. Tag - <?php echo date_format($date, 'd.m.Y'); ?>" 
          		readonly>
          		          
          	<input type="hidden" 
          		name="ms2f_tag[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		id="ms2f_tag[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		value="<?php echo $i+1; ?>">
          		          
          	<input type="hidden" 
          		name="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		id="ms2f_pid[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		value="<?php echo $array['mpv_code']; ?>">
          </div>
          
          <div class="textfeld abstand_2">
          	<label for="ms2f_von[<?php echo $i+1 ?>]">Einsatzzeit</label>
          		          
          	<input type="text" 
          		name="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		id="ms2f_von[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		value=""> bis
          
          	<input type="text" 
          		name="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		id="ms2f_bis[<?php echo $array['mpv_code']; ?>][<?php echo $i+1 ?>]" 
          		value=""> Uhr
          </div>
          

          Dadurch habe ich jetzt doch eindeutige Felder?

          Bis bald!
          Meowsalot (Bernd)

          1. Hallo Meowsalot,

            Dadurch habe ich jetzt doch eindeutige Felder?

            Fast. Ein paar IDs hast Du übersehen.

            Und dein Code ist anmerkwürdig.

            1. Verschiebe den date_add an's Ende der Schleife. Dann brauchst Du nicht $i==0 abzufragen.
            2. Verwende die Alternative Syntax für Kontrollstrukturen wenn Du PHP und HTML mischst. Sonst weiß man beim } nicht wohin er gehört.
            3. Verwende zum Einsteuern von Daten <?= ?> statt <?php echo ?>. Technisch passiert das gleiche, aber das ständige php echo ist wie ein dumpfes Hintergrundrauschen.
            4. Du benutzt ständig $i+1 und verwendest $i für nichts anderes. Lass doch die Schleife ab 1 laufen und nenne die Variable $tag, dann ist es klarer. Die Endebedingung muss dann natürlich mit <= statt < gebildet werden.
            5. Hidden Input braucht keine ID, da reicht der name. Es sei denn du willst JavaScript dran rummachen und es per ID suchen.
            6. Ein hidden input für PID und Tag brauchst Du nicht. Beide stecken im Array-Index der Post-Variablen drin. Wenn Du die geposteten Daten mit foreach($msf_datum as $pid => $datum_tage) verarbeitest, und $datum_tage ebenso, hast Du alle Indexe die Du brauchst.
            7. Wenn man etwas in einer Schleife ca 10 mal berechnet, lohnt die Ablage in einer Variablen. Dann ist der Code zum Erzeugen des HTML übersichtlicher und wenn sich die Berechnung ändert, muss man nicht 10 Stellen ändern.
            8. Dein erstes div (class="textfeld") möchte vermutlich in das andere div(class="textfeld_abstand") hinein und dort ein h2 oder h3 sein. Das div wäre dann passenderweise lieber eine section. Alternativ könnte das div ein fieldset sein und die Überschrift ein legend Element, das führt dann aber zu einer anderen Darstellung.

            Ach ja. Dein bis-Feld ist unbeschriftet; das "bis" Bröckchen möchte ein label sein. Eventuell passt dein CSS dann nicht mehr ganz, darum habe ich eine Klasse "intervall" hinzugefügt.

            	<?php 
            		$date = date_create($mg_von);
            
                for($tag=0; $tag <= $tage; $tag++):
                  $rowId = "[{$array['mpv_code']}][$tag]";
            	?>
            
            <section class="textfeld">
              <h2>
                <label for="ms2f_datum<?= $rowId ?>">Datum</label>
            		<input type="text"
            	 		name="ms2f_datum<?= $rowId ?>" id="ms2f_datum<?= $rowId ?>" 
            	 		value="<?= $tag ?>. Tag - <?= date_format($date, 'd.m.Y'); ?>"
                  readonly>
              </h2>
            
            	<label for="ms2f_von<?= $rowId ?>">Einsatzzeit</label>
            	<input type="text" 
            		   name="ms2f_von<?= $rowId ?>" id="ms2f_von<?= $rowId ?>" 
            		   value="">
              <label class="intervall" for="ms2f_bis<?= $rowId ?>">bis</label>
            	<input type="text" 
            		   name="ms2f_bis<?= $rowId ?>" id="ms2f_bis<?= $rowId ?>" 
            		   value=""> Uhr
            </section>
            
            <?php 
                    date_add($date, date_interval_create_from_date_string('1 day'));	
               endfor;
            }  // Wofür auch immer Du die zweite Klammer brauchtest...
             ?>
            

            Das finale ?> solltest Du nur schreiben, wenn danach noch HTML kommt. Wenn eine PHP Datei mit PHP-Code endet, lässt man das ?> weg.

            Rolf

            --
            sumpsi - posui - clusi
            1. Hallo Rolf,

              Das finale ?> solltest Du nur schreiben, wenn danach noch HTML kommt. Wenn eine PHP Datei mit PHP-Code endet, lässt man das ?> weg.

              Das verwirrt mich. Und nur um zu sehen, ob ich das richtig verstehe, jede PHP Datei(ohne HTML) sollte den End-Tag weglassen? Warum und wo steht so was?

              Gruss
              Henry

              1. Tach!

                Das finale ?> solltest Du nur schreiben, wenn danach noch HTML kommt. Wenn eine PHP Datei mit PHP-Code endet, lässt man das ?> weg.

                Das verwirrt mich. Und nur um zu sehen, ob ich das richtig verstehe, jede PHP Datei(ohne HTML) sollte den End-Tag weglassen? Warum und wo steht so was?

                Warum soll man am Dateiende noch auf das Schließen von PHP bestehen? Ende ist Ende. Wenn man das PHP nicht schließt, kann sich dahinter auch nichts mehr schmuggeln, das meistens unsichtbar ist, aber dennoch Ausgabe darstellt. Solcher Whitespace stört, wenn man noch Sessions zu öffnen gedenkt oder andere header-sendende Fuktionen aufrufen möchte.

                Und es steht im PHP-Handbuch, erstes Kapitel der Sprachreferenz.

                dedlfix.

                1. Hallo dedlfix,

                  Warum soll man am Dateiende noch auf das Schließen von PHP bestehen? Ende ist Ende. Wenn man das PHP nicht schließt, kann sich dahinter auch nichts mehr schmuggeln, das meistens unsichtbar ist, aber dennoch Ausgabe darstellt. Solcher Whitespace stört, wenn man noch Sessions zu öffnen gedenkt oder andere header-sendende Fuktionen aufrufen möchte.

                  Und es steht im PHP-Handbuch, erstes Kapitel der Sprachreferenz.

                  Danke für den Link, noch nie gehört. Aber offen gesagt, empfinde ich das als eine Art schmutziger Hack. Whitespace und resultierende Headerproblematiken sollte man immer im Auge haben, da begrüße ich sogar eine Fehlermeldung, damit ich weiß, was da los ist und daraus lernen kann. Aber gerade die klare Auszeichnung/Struktur öffnen/schließen liebe ich so an PHP. Das man dies anders handhaben sollte… Für mich so ein wenig wie, lass alle Schränke Schubladen zu Hause offen stehen(hat sogar den Vorteil du kommst schneller ran), sieht aber scheiße aus.

                  Gruss
                  Henry

                  1. Tach!

                    Aber offen gesagt, empfinde ich das als eine Art schmutziger Hack. Whitespace und resultierende Headerproblematiken sollte man immer im Auge haben, da begrüße ich sogar eine Fehlermeldung, damit ich weiß, was da los ist und daraus lernen kann.

                    Ja, wenns denn was wichtiges wäre. Aber lediglich Whitespace in einer Datei, in der HTML-Code üblicherweise nicht vorgesehen ist?

                    Für mich so ein wenig wie, lass alle Schränke Schubladen zu Hause offen stehen(hat sogar den Vorteil du kommst schneller ran), sieht aber scheiße aus.

                    Warum auch nicht, wenn der Automatismus sie selbständig schließt? Es ist ja nicht so wie in deinem geklammerten Teil, dass sie offen bleiben.

                    dedlfix.

                    1. Hallo dedlfix,

                      Warum auch nicht, wenn der Automatismus sie selbständig schließt? Es ist ja nicht so wie in deinem geklammerten Teil, dass sie offen bleiben.

                      Stimmt ja, Punkt für dich. 😉 Mag und bleibe aber trotzdem bei EndTag. (Gefühlte Kontrolle und Symmetrie).

                      Gruss
                      Henry

                  2. Hallo,

                    Für mich so ein wenig wie, lass alle Schränke Schubladen zu Hause offen stehen(hat sogar den Vorteil du kommst schneller ran), sieht aber scheiße aus.

                    Eher so wie bei den modernen Küchenschubladen: kleinen Schubs geben reicht, dass sie ganz sanft automatisch zugehen…

                    Gruß
                    Kalk

                  3. @@Henry

                    Aber offen gesagt, empfinde ich das als eine Art schmutziger Hack.

                    Ich nicht.

                    Prinzipiell gibt es (bei vernünftiger™ Architektur) zwei Arten von PHP-Dateien: solche, die Programmlogik beinhalten und kein HTML ausgeben, und solche, die HTML ausgeben und ggfs. etwas Ausgabelogik beinhalten.

                    Erstere beginnen mit <?php und enden mit} oder ; (plus Whitespace).

                    In letzteren sollte nicht HTML in PHP geschachtelt werden (d.h. nicht Markup mit echo generiert werden), sondern PHP-Ausgaben der Daten sollten in HTML geschachtelt werden. In diesen gibt es natürlich ?>.

                    LLAP 🖖

                    --
                    „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
          2. hi Bernd,

            laß das $i doch einfach weg. Mit feldname[] legt PHP da selbst einen Index rein. Von 0 beginnend.

            MfG

            1. Hallo pl,

              da hast Du natürlich recht.

              Rolf

              --
              sumpsi - posui - clusi