ereg_replace oder was?

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • ereg_replace oder was?

    Ich habe folgendes Problem, ich will von Checkboxen den Wert in eine Variable schreiben, dass funktioniert auch.
    Aber angenommen die ersten 4 Werte sind leer, dann gibt es ja Leerschläge, diese ersetze ich durch ein Komma, wenn es 2 Kommas nacheinander hat, ersetze ich die wieder durch 1 Komma.
    Wenn nun aber die ersten 4 Werte leer sind, dann wird mir vor den 5 Wert ein Komma gemacht, welches ich nicht möchte. Aber Zwischen dem 5 und 6 Wert sollte es schon ein Komma haben.
    Das selbe, wenn z.B. Wert 4 und 5 einen Inhalt haben, wie muss es gemacht werden, dass nach dem 5 Wert kein Komma erscheint, also nach dem letzten Wert?

    PHP-Code:
    $os_sel "$os_dos $os_9x $os_me $os_nt $os_2000 $os_xp";
        
    $os_sel ereg_replace("  ",",",$os_sel);
        
    $os_sel ereg_replace(",,",",",$os_sel); 
    Ich hoffe, ihr wisst Rat?!?

  • #2
    wenn ich mich nciht irre, kannst du das so machen

    PHP-Code:
    $os_sel str_replace " +"" "$os_sel ); 
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Danke, habe es so ausprobiert, funktioniert auch, das am Anfang und am Ende nun keine Kommas mehr sind, aber wenn nun z.B. 4 und 5 und 6 ausgewählt sind, dann erscheinen zwischen den Werten auch keine Kommas mehr...
      Jedoch funktioniert es, wenn 1, 3 und 5 ausgewählt sind...

      Weisst du da auch noch eine Lösung?

      Kommentar


      • #4
        verwirrt bin.

        der code vom mir ersetzt alle leerzeichen ( 1 und mehr ) immer durch nur ein leerzeichen.

        deine beiden zeilen mit ereg_replace() im beispiel kannst du vergessen...
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          Ah, ok, ich habe auch die 2 Zeilen von mir noch drin gelassen... werde diese mal löschen und noch testen ---> gebe Feedback.

          Kommentar


          • #6
            So habe es getestet, wenn ich nur deine Zeile nimm, so macht er zwischen Jedes Wort einen Leerschlag und kein Komma...

            Funktioniert also nicht...

            Kommentar


            • #7
              ja. aber er macht nicht mehr mehr als ein leerzeichen nacheinander.

              wenn du ein komma haben willst, schreibe es doch rein ...

              PHP-Code:
              $os_sel str_replace " +"","$os_sel ); 
              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


              Kommentar


              • #8
                Nein, auch wenn ich dort ein Komma hinein mache, er macht mir kein Komma in die Datenbank.... :-(

                Kommentar


                • #9
                  was machst du denn? das muss funktionieren. geht ja schliesslich auch bei mir .....

                  poste mal ein stück deines codes. sodass man erkennen kann, was abgeht.
                  INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                  Kommentar


                  • #10
                    Also die überprüfung wäre ja so:

                    PHP-Code:
                        $os_sel "$os_dos $os_9x $os_me $os_nt $os_2000 $os_xp";
                        
                    $os_sel str_replace " +"",",$os_sel ); 
                    Für die Variablen kannst du den Wert nach dem $os_ xx nehmen, also die xx oder xxxx.

                    Das ganze speichere ich mit anderen Daten in eine MySQL Datenbank (MySQL bin ich totaler anfänger) und lese es dann wieder aus... die Ausgabe, wenn ich z.B. 9x,NT,2000 gewählt habe:
                    9x NT 2000

                    Kommentar


                    • #11
                      d.h. du speicherst alles in eine zelle in der DB. richtig?

                      die werte sind nur durch leerzeichen getrennt?

                      warum machst du nicht für jeden deiner VARs eine eigene spalte?
                      INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                      Kommentar


                      • #12
                        Also kurz als Hinweis, ich habe jetzt noch ein echo $os_sel; eingebaut,
                        so funktioniert auch nicht...

                        Weil es nicht wirklich sinvoll ist, alles Werte in eine eigene Spalte zu schreiben, aus dem Grund, wenn mal ein neues OS kommt, dann kann ich nicht nur schnell das Script ändern, muss auch noch eine neue Spalte machen usw...

                        Du musst dir das so vorstellen, das gibt ein Script mit welchem ich die Downloads managen kann, also Programm uploaden, Namen, Beschreibung usw. geben ich will ja auch noch angeben, für welches OS. das mach ich mit Checkboxen....

                        Kommentar


                        • #13
                          ok. verstehe. das kann man aber viel schöner uns besser machen, als wie du es versuchst.

                          mache eine tabelle, in der nur die verschieden OS's stehen. diese tab hat logischerweise eine spalte ID und eine spalte OS.

                          über die id kannst du das system ansprechen.

                          in deiner datei-tabelle nimmst du die bisherige spalte raus.

                          nun kannst du über eine 1:n zwischentabelle auf die OS's verweisen. kommt ein neues OS hinzu, trägst du es NUR in die referenztabelle ein.

                          hast du das prinzip soweit verstanden?

                          wenn ja, poste doch einfach mal deine bisherige tabellenstruktur.
                          INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                          Kommentar


                          • #14
                            Also das mit der zweiten Tabelle, ist mir klar, aber wie verbinde ich das? Mach ich das dann nicht erst bei der PHP Ausgabe?

                            Also, ich habe die Tabelle bis jetzt mal so:

                            id | tinyint(4)
                            area | varchar(255) //Das ist in welchen Bereich das Programm bei der Abfrage später kommt
                            name | varchar(255)
                            language | varchar(255)
                            os | varchar(255) //Das ist eben das Problem Kind...
                            description | text
                            downloadlink | varchar(255) //Dies ist der Link wo sich das Programm befinden

                            Das Script wie viel mal das PGM heruntergeladen wurde, habe ich schon, das funktioniert auch, aber das werde ich später miteinander verbinden... Das soll nur mal so für den Online zugriff (Programme online hinzüfügen) sein. Das Upload Script habe ich auch schon geschrieben, das muss ich nachher auch noch verbinden... aber erst, wenn das mal richtig funktioniert...

                            Kommentar


                            • #15
                              so. hier schon mal die tabellen....

                              ich werde dir jetzt auch ein paar DEMO querys machen.

                              warte einfach ab....

                              Code:
                              ##### HIER SIND DEINE OS's DRIN
                              #
                              # Table structure for table `OperatingSystems`
                              #
                              
                              CREATE TABLE OperatingSystems (
                                OsId int(11) NOT NULL auto_increment,
                                OsName varchar(50) NOT NULL default '',
                                PRIMARY KEY  (OsId),
                                UNIQUE KEY OsName (OsName)
                              ) TYPE=MyISAM;
                              # --------------------------------------------------------
                              
                              ##### HIER SIND DEINE PROGRAMME DRIN
                              #
                              # Table structure for table `Programme`
                              #
                              
                              CREATE TABLE Programme (
                                ProgrammId int(11) NOT NULL auto_increment,
                                Area varchar(50) default NULL,
                                Name varchar(50) NOT NULL default '',
                                Language varchar(50) default NULL,
                                Description text,
                                DLLink varchar(255) default NULL,
                                PRIMARY KEY  (ProgrammId),
                                UNIQUE KEY Name (Name)
                              ) TYPE=MyISAM;
                              # --------------------------------------------------------
                              
                              ##### DAS IST DIE VERBINDUNGSTABELLE BEIDER TABELLEN
                              #
                              # Table structure for table `Programme_OperatinSystems`
                              #
                              
                              CREATE TABLE Programme_OperatinSystems (
                                ProgrammId int(11) NOT NULL default '0',
                                OsId int(11) NOT NULL default '0',
                                UNIQUE KEY Programme_OperatinSystems (ProgrammId,OsId),
                                KEY ProgrammId (ProgrammId),
                                KEY OsId (OsId)
                              ) TYPE=MyISAM;
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Kommentar

                              Lädt...
                              X