Dan: Bitte Hilfe mit PHP Code

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

  1. 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

    1. 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]);  
      }  
        
      
      
      1. 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

        --
        Okay, Alkohol ist keine Antwort.
        Aber manchmal vergisst man beim Trinken wenigstens die Frage.
        Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
        1. 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

      2. 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

  2. Ganz andere Frage: explode() kennst du bereits?