Komma nur einfügen wenn noch weitere werte.

Hallo,
Ich habe ein Probelm und zwar will in über ein Formular mehrere Werte in eine Tabllen-Spalter der MYSQL einfügen, das funktionier auch gut, nur will ich es nun so machen dass die Komma's nur kommen wenn mehrere Werte vorhanden sind, wie kann ich das realisieren ?

(ich hoffe ihr versteht was ich meine.)

hier mein jetziger Code:
PHP:
$eintrag = "INSERT INTO turnier
		(name, tname, vdatum, adatum, plakat, regeln, dressur, springen, military, western, kutsche, schauen, distanz, sonstige, hunde)
		VALUES ('$name', '$tname', '$vdatum', '$adatum', '$plakat', '$regeln', '$de, $da, $dl, $dm, $ds', '$se, $sa, $sl, $sm, $ss', '$me, $ma, $ml, $mm, $ms', '$wt, $wp, $wr, $wb, $wc, $wh, $ww, $ws', '$k1, $k2, $k4, $k6, $k8')";
 
PHP:
'$de, $da, $dl, $dm, $ds', '$se, $sa, $sl, $sm, $ss', '$me, $ma, $ml, $mm, $ms', '$wt, $wp, $wr, $wb, $wc, $wh, $ww, $ws', '$k1, $k2, $k4, $k6, $k8'

weil bei denen variablen muss nicht immer im Formular ein Wert angegeben und wenn man dann zB nur $de & $ds einen Wert gibt wird es so in der db gespeichert:

$de, , , ,$ds & das da halt jetzt nur ein Komma gespeichert wird.
 
Sammele die Werte zuerst in einem Array. Dieses kannst du dann nach vorhandenen Werten filtern und die übrig gebliebenen Elemente miteinander verketten:
PHP:
$d_unfiltered = array($de, $da, $dl, $dm, $ds);
$d_filtered = array_filter($d_unfiltered, create_function('$val', 'return $val !== "";'));
$query = 'INSERT INTO … '.implode(', ', array_map('mysql_real_escape_string', $d_filtered)).' … ';
 
Ist es so richtig ?`Weil so bekomme ich immer wieder nur die Meldung der 'error_eintrag.htm'-Datei raus. Und wann ich dann das Feld dressur mit dem Wert für dieses Feld rausnehmen geht es.

PHP:
// Werte im Array sammelen um nachher zu filtern.
// Dressur
$dressur_un = array($de, $da, $dl, $dm, $ds);
$dressur = array_filter($dressur_un, create_function('$val', 'return $val !== "";'));

// Daten werden  in Tabelle eingetragen
$eintrag = "INSERT INTO turnier
		(name, tname, vdatum, adatum, plakat, regeln, dressur)
		VALUES ('$name', '$tname', '$vdatum', '$adatum', '$plakat', '$regeln', '.implode(', ', array_map('mysql_real_escape_string', $dressur)).' )";

    $eintragen = mysql_query($eintrag);
    
                  if($eintragen) {
                   include("Templates/good_eintrag.htm");
                } else {
                    include("Templates/error_eintrag.htm");
                }
 
Statt
PHP:
$eintrag = "INSERT INTO turnier
        (name, tname, vdatum, adatum, plakat, regeln, dressur)
        VALUES ('$name', '$tname', '$vdatum', '$adatum', '$plakat', '$regeln', '.implode(', ', array_map('mysql_real_escape_string', $dressur)).' )";
das hier, dann sollte es funktionieren:
PHP:
$eintrag = "INSERT INTO turnier
        (name, tname, vdatum, adatum, plakat, regeln, dressur)
        VALUES ('$name', '$tname', '$vdatum', '$adatum', '$plakat', '$regeln', '" . implode(', ', array_map('mysql_real_escape_string', $dressur)). "')";
 
kann mir immer noch niemand mit dem problem helfen dass 'E, , L, , S' anstatt 'E,L,S' eingetragen wird?

PHP:
// Werte im Array sammelen um nachher zu filtern.
// Dressur
$dressur_un = array($de, $da, $dl, $dm, $ds);
$dressur = array_filter($dressur_un, create_function('$val', 'return $val !== "";')); 

// Daten werden  in Tabelle eingetragen
$eintrag = "INSERT INTO turnier
        (name, tid, hofname, page, tname, vtag, vmonat, vjahr, adatum, plakat, regeln, dressur, springen, military, western, kutsche, schauen, distanz, rennen, sonstige, dsonstige, hunde)
        VALUES ('$name', '$tid', '$hofname', '$page', '$tname', '$vtag', '$vmonat', '$vjahr', '$adatum', '$plakat', '$regeln', '" . implode(', ', array_map('mysql_real_escape_string', $dressur)). "', '$se$sa$sl$sm$ss', '$me$ma$ml$mm$ms', '$wt$wp$wr$wb$wc$wh$ww$ws', '$k1$k2$k4$k6$k8', '$shh$shw$shs$shf$shj$shr', '$defr$dkdr$dmdr$dldr$dmtr', '$rf$rh$rg$rt$rt1$rp', '$shk$ssp$srs', '$ssonstige', '$hs$ha$hd')";
 
Zurück