Bitte Hilfe mit PHP Code
Dan
- php
Guten Abend zusammen,
ich hab leider ein kleines Problem, und zwar habe ich einen Code für einen Import, allerdings klappt da was nicht gescheit. Ich will eine Farbe importieren aus einer Spalte einer XLS. Die Farben sind entweder einzeln (z.b. "Blue") oder gemischt (z.b. "Black/Blue" angegeben. Ich will aber nur die Farbe vor dem Slash impoortieren, deswegen habe ichfolgenden Code:
$slashposition= strpos($rows[$i][7],'/');
$farbe = ucfirst(substr($rows[$i][7],0,$slashposition));
Leider wird mir nun überhaupt keine einzelne Farbe importiert, nur die gemischten. Ich versteh aber nicht warum. Kann mir bitte wer helfen, den Code anzupassen, so dass auch die einzelnen Farben importiert werden?
Danke und viele Grüße
Dan
Hallo Dan,
Leider wird mir nun überhaupt keine einzelne Farbe importiert, nur die gemischten. Ich versteh aber nicht warum. Kann mir bitte wer helfen, den Code anzupassen, so dass auch die einzelnen Farben importiert werden?
Mach dir klar (bzw. wirf einen Blick in die Doku) was strpos() zurückgibt wenn das gesuchte Zeichen im String nicht enthalten ist und was substr() zurückgibt wenn dieser Wert als 3. Parameter übergeben wird - dann kannst du den Code selbst entsprechend anpassen.
Gruß,
Tobias
Hm ich habs jetz so probiert, das klappt aber auch nicht? Sollte doch aber oder?
$slashposition= strpos($rows[$i][7],'/');
$farbe2 =$rows[$i][7];
if (strpos($farbe2,'/')) {
$farbe = ucfirst(substr($rows[$i][7],0,$slashposition));
} else {
$farbe = ucfirst($rows[$i][7]);
}
Hallo,
Hm ich habs jetz so probiert
Probieren ist beim Programmieren immer ein ganz schlechter Ansatz. Dann besteht nämlich das Risiko, dass es irgendwann unverhofft "funktioniert", und man weiß nicht, warum.
$slashposition= strpos($rows[$i][7],'/');
$farbe2 =$rows[$i][7];
Okay, $slashposition ist nun entweder die Position des ersten '/' im String, oder false, wenn kein '/' im String vorkommt. Aber warum den Originalstring nochmal kopieren?
if (strpos($farbe2,'/')) {
Das hast du doch oben schon einmal berechnet - wozu ein zweites Mal?
$farbe = ucfirst(substr($rows[$i][7],0,$slashposition));
Nun bekommt $farbe einen neuen Wert zugewiesen, die erste Zuweisung weiter oben war also für'n A... Und warum ucfirst()? Du willst unbedingt den Anfangsbuchstaben groß schreiben? Würde ich bei einer Farbangabe nicht wollen.
} else {
$farbe = ucfirst($rows[$i][7]);
Dito.
So long,
Martin
Hallo Martin,
eine andere Möglichkeit habe ich leider nicht, der Programmierer ist nicht zu erreichen bis Montag und der Import muss bis morgen funktionieren, deswegen teste ich ohne Kenntnisse rum und hoffe auf Hilfe :(
Viele Grüße
Hallo Dan,
Neben dem was Martin bereits schrieb:
Hm ich habs jetz so probiert, das klappt aber auch nicht?
Kommt jetzt das dabei raus was du möchtest oder nicht? Wenn nein: definiere "klappt nicht".
if (strpos($farbe2,'/')) {
Der Fall mag bei dir nicht vorkommen, aber trotzdem solltest du auch zwischen den Rückgabewerten 0 und false unterscheiden ...
Gruß,
Tobias
Ganz andere Frage: explode() kennst du bereits?