Gibt es Platzhalter?

  • geschlossen

  • dAsTyLeR
  • 1410 Aufrufe 13 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Gibt es Platzhalter?

    Hey leute.. alles klar??

    ich habe ein kleines problem.. ich programmiere eine datenbank, und will über php auf die datenbank zugreifen.. nun habe ich z.B. die tabelle Mitglied in der datenbank.. mit: Select * From Mitglied bekomme ich die tabelle rausgelesen..

    ich habe in dieser tabelle ein paar "wahrheitseinträge(boolean)" allerdings mit Smallint programmiert sprich 0 = nein 1 = ja ;)

    wenn ich allerdings (ich habs ja in einer schleife abgefragt) den momentanen attributname abfrage, ob er eine zahl ist und mir ein ja zurück gibt, und ich erst dann frage ob der inhalt 1 für ja oder 0 für nein ist, dann ist z.B. die ID oder die Postleitzahl auch dabei, und dann steht nicht mehr 79761 (die plz) sondern nein oder ja.

    das habe ich folgendermaßen abgefangen:

    PHP-Quellcode

    1. $abfrage=$field->name != "M_ID" && $field->name !="M_Plz" && $field->name !="M_Eintrittsjahr" && $field->name !="M_Jahresbeitrag";
    2. if($abfrage)
    3. {
    4. if(is_numeric($row[$field->name])==1)
    5. {
    6. if($row[$field->name]==0)
    7. {
    8. echo "<td> Nein </td>\n";
    9. }
    10. else
    11. {
    12. echo "<td> Ja </td>\n";
    13. }
    14. }
    15. else
    16. {
    17. echo "<td>" . $row[$field->name] . "</td>\n";
    18. }
    19. }
    20. else
    21. {
    22. echo "<td>" . $row[$field->name] . "</td>\n";
    23. }
    Alles anzeigen


    Das hat dann auch soweit geklappt.. ID UND PLZ und so weiter hat er mir trotzdem als zahlen ausgegeben ;) nur mein prob ist, das wenn ich jetzt diesen script auf die tabelle Instrument anwenden mag oder anstatt SELECT * FOM Mitglied ich schreiben würde SELECT M_ID AS Mitgliedsnummer FROM .....
    dann würde er den vergleich mit M_ID machen, aber nicht mit Mitgliedsnummer oder mit I_ID (für Instrument ID).. unid somit die id auch als Ja oder Nein ausgeben... gibt es einen platzhalter wie z.B. bei MYSQL (z.B: %ID ---> würde dann alles ausgeben wo ID enthalten ist sprich M_ID oder I_ID oder lkajölkwj_ID ;) )

    wenn ja, wie kann ich des dann auch anwenden??

    mfg sTyLeR ;)

    PS: Ich hoffe ihr habt mich einigermaßen verstanden ;)
  • Hi,
    ich verstehe nicht, warum du das sooooooooooooooooooooo kompliziert machst .
    Da verwirrst du dich doch nach 3 Tagen selber damit ^^
    Also, wie wäre es denn damit:

    Quellcode

    1. if($abfrage AND $field->name!="M_ID" AND $row[$field->name] < 2) {
    2. if($row[$field->name]) echo "ja";
    3. else echo "nein";
    4. }
    5. else echo $row[$field->name];


    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Hollaa.. danke für deine antwort ;)

    So ähnlich hatt ichs auch am anfang ;) Nur leider berücksichtigt des ja nicht, ob ein Attribut ein Integer oder String ist oder sonst was, und der führt dann den vergleich immer durch und setzt dann dementsprechend selbst bei name und so den wert JA ein.

    Außerdem steht ja bei dir

    PHP-Quellcode

    1. if($row[$field->name])
    Da fehlt ja der vergleich.. denn $row[$field->name] ist ja nur der inhalt, und der muss ja mit etwas verglichen werden..

    Jedenfalls, mal angenommen der script von dir würde so funktionieren, bleibt meine frage immernoch offen :) Denn, Anstatt "M_ID" einzugeben, bräuchte ich so ne art platzhalter, das ich den script auch bei "I_ID" oder "IV_ID" oder "A_ID" oder sonst was anwenden kann... dies ist eigentlich mein anliegen ;)

    hoffe das mir da jemand helfen kann ;)

    mfg sTyLeR ;)

    PS: So wie ich es programmiert habe, ist das kürzeste was ich gefunden habe.. (vll. reicht ja mein wissen auch nicht aus, um eine einfachere variante wählen zu können, bin ja nicht so spezialisiert in diesem gebiet ;) )
  • Hi,
    also okay, habe nicht getestet, wie php reagiert, wenn man ein String vergleicht.
    Habe es mal abgeändert:

    Quellcode

    1. if($abfrage AND !preg_match('/^(.+)_ID$/',$fetch->name) AND $row[$fetch->name] < 2 AND is_numeric($row[$fetch->name])) {
    2. if($row[$fetch->name]) echo "ja";
    3. else echo "nein";
    4. }
    5. else echo $row[$fetch->name];


    Gruß
    Broken sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Hmm.. hier gibt er irgendwie garnix mehr aus :(

    ist-->

    PHP-Quellcode

    1. !preg_match('/^(.+)_ID$/',$fetch->name
    <-- der befehl für den platzhalter?? wenn ja, welcher ist er genau?? Vielleicht

    PHP-Quellcode

    1. !preg_match('/^(.+))
    ????????

    danke nochmal für deine hilfe ;)

    mfg sTyLeR ;)
  • Es wird gar nichts mehr ausgegeben?
    Setz mal error_reporting(E_ALL); an den Anfang, dort scheint was nicht in Ordnung zu sein.
    Habe das ja selbst probiert (jaha) und es hat geklappt ;)

    Scheint so, als hättest du das noch nicht gehabt: reguläre ausdrücke - Google Search
    Der Punkt ist der Platzhalter. Der steht für irgendein Zeichen. Das Plus sagt, dass mindestens eins, aber belibig viele mehr vorkommen müssen und dann halt "_ID"
    ^-steht für Anfang
    $-steht für Ende

    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Hi.. Also der fehler den er ausgibt ist folgender:

    Quellcode

    1. Notice: Undefined variable: fetch in C:\Programme\xampp\htdocs\test.php on line 49
    2. Notice: Trying to get property of non-object in C:\Programme\xampp\htdocs\test.php on line 49
    3. Notice: Undefined index: in C:\Programme\xampp\htdocs\test.php on line 49
    4. Notice: Undefined variable: fetch in C:\Programme\xampp\htdocs\test.php on line 44
    5. Notice: Trying to get property of non-object in C:\Programme\xampp\htdocs\test.php on line 44
    6. Notice: Undefined variable: fetch in C:\Programme\xampp\htdocs\test.php on line 44
    7. Notice: Trying to get property of non-object in C:\Programme\xampp\htdocs\test.php on line 44
    8. Notice: Undefined index: in C:\Programme\xampp\htdocs\test.php on line 44
    9. Notice: Undefined variable: fetch in C:\Programme\xampp\htdocs\test.php on line 44
    10. Notice: Trying to get property of non-object in C:\Programme\xampp\htdocs\test.php on line 44
    11. Notice: Undefined index: in C:\Programme\xampp\htdocs\test.php on line 44
    Alles anzeigen


    Den wiederholt er dan ein paar mal...


    Reguläre Ausdrücke... das ist das was ich gesucht habe ;) Vielen vielen dank ;)

    habe das nun in meinem Script eingebaut (in der variable für die if abfrage), und zwar folgendermapßen:

    PHP-Quellcode

    1. $abfrage=$field->name != preg_match('/^(.+)ID$/') && $field->name !=preg_match('/^(.+)Plz$/') && $field->name !=preg_match('/^(.+)Eintrittsjahr$/') && $field->name !=preg_match('/^(.+)Jahresbeitrag$/');


    ich nehme mal an das es stimmt?
    Allerdings gibt er mir folgenden fehler:

    Quellcode

    1. Warning: preg_match() expects at least 2 parameters, 1 given in C:\Programme\xampp\htdocs\7.Version04.12.07.php on line 38


    was hat das zu bedeuten??

    vielen dank.. mfg sTyLeR ;)

    PS: Jap, das hatte ich nicht gehabt ;) wie schon gesagt, so gut kenne ich mich nicht aus ;)
  • Oh ^^
    Ja klar, da hab ich falsch zurück geändert. Habe anstatt field, fetch geschrieben, sry. Das musst du noch ändern.

    Und warum so kompliziert, es gibt auch ein ODER bei den Regulären Asudrücken ;)
    Sprich

    Quellcode

    1. ^(.+)_(ID|Plz|Eintrittsjahr|Jahresbeitrag)$
    würde völlig ausreichen. preg_match verbraucht nämlich viele Resourcen. Da ist eine Abfrage besser.

    Hast du dir die preg_match Referenz angesehen? Sie gibt true oder false zurück und braucht mindestens 2 Parameter (wie in der Fehlermeldung zu lesen) Einmal das Suchmuster und einmal der String, der durchsucht werden soll.
    Sprich es müsst so lauten

    Quellcode

    1. $abfrage = preg_match('/^(.+)_(ID|Plz|Eintrittsjahr|Jahresbeitrag)$/',$field->name);


    Hoffe das hilft dir
    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • GGGGGGEEEEEEEEEEEEEIIIIIIIIIIIIILLLLLLLLLLLLLLLLLLLLLL

    Es hat funktioniert.... Vielen vielen vielen vielen dank ;) Hey echt fffeeettt meciii, hast was gut bei mir ;)

    hab des in meinem script eingebaut, und es funzt, habe auch deins geändert in field und hat auch gefunzt ;) was ich nur bei deinem nicht verstanden habe ist, das du in der if abfrage $row[$field->name] < 2 abgefragt hast, habs rausgenommen und des ging auch ;)

    egal.. danke danke danke ;)

    Nun meine aller letzte frage, und dann müsst ich glaub vorerst alles haben :)

    bei dem preg_match() kann man ja dann sagen [nach links min. 1 zeichen oder mehrere oder nach richts 1 zeichen oder mehrere, nach links nur genau 1 oder nur genau 2 oder nur genau n zeichen, nach rechts nur genau 1 oder nur genau 2 oder nur genau n zeichen] kennst du die befehle grad?? ansonsten google ich halt mal nach ;) und gibt es auch ein befehl der abfrägt [nach links/rechts KANN 1 zeichen oder mehrere sein]...??

    vielen vielen dank nochmal ;)

    werde dann mal ins bettchen gehen ;)

    mfg sTyLeR ;)
  • dAsTyLeR schrieb:


    hab des in meinem script eingebaut, und es funzt, habe auch deins geändert in field und hat auch gefunzt ;) was ich nur bei deinem nicht verstanden habe ist, das du in der if abfrage $row[$field->name] < 2 abgefragt hast, habs rausgenommen und des ging auch ;)

    Das ist dazu gut, dass wenn es eine Zahl ist diese kleiner 2 sein muss.

    dAsTyLeR schrieb:


    bei dem preg_match() kann man ja dann sagen [nach links min. 1 zeichen oder mehrere oder nach richts 1 zeichen oder mehrere, nach links nur genau 1 oder nur genau 2 oder nur genau n zeichen, nach rechts nur genau 1 oder nur genau 2 oder nur genau n zeichen] kennst du die befehle grad?? ansonsten google ich halt mal nach ;) und gibt es auch ein befehl der abfrägt [nach links/rechts KANN 1 zeichen oder mehrere sein]...??

    Hö? Nach links und nach rechts??? Was meinst du??

    dAsTyLeR schrieb:


    werde dann mal ins bettchen gehen ;)

    Schlaf gut : >


    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.
  • Hey.. also das mit dem: $row[$field->name] < 2 hab ich verstanden, ist logsich ;)

    mit dem links und recht meine ich z.B: Hamburg... es ist mb gegeben. und nach dem rest wird gesucht bzw. es steht was links und rechts.. also H A mb U R G... wenn jetzt amb gegeben wäre, könnte ich durch einen befehl sagen, das links davon genau nur 1 zeichen stehen kann in dem fall H?? oder nach rechts genau so... oder vielleicht, FC Hamburg... das Ham oder Hamburg gebgeben ist, und man nach links (links von dem gegebenen wort) 1 oder mehrere zeichen stehen können, aber auch die möglichkeit besteht, das nix davor steht??

    hoffe nun ists klarer was ich mein :)

    mfg sTyLeR ;)
  • Hmmm....
    Das mit dem könnte man besser eingrenzen indem man schreibt:

    Quellcode

    1. $row[$field->name] in array("1","0")

    Dann muss halt 1 oder 0 in dem row stehen.


    Aso... hier mal ne Hilfe:
    t? - das t muss 0 oder 1 mal vorkommen
    t* - das t kann so oft vorkommen, wie es will
    t+ - das t muss mindestens einmal vorkommen kann aber auch beliebig viel mal vorkommen
    t{x} - das t muss x mal vorkommen
    t{x,} - das t muss mindestens x mal vorkommen, kann aber auch öfters auftreten
    t{x,y} - das t muss miindestens x mal vorkommen und höchstens y mal

    Bsp "wenn jetzt amburg gegeben wäre, könnte ich durch einen befehl sagen, das links davon genau nur 1 zeichen stehen kann"

    Quellcode

    1. ^(.{1})amburg$


    Und jetzt kannst du das ja auf dein Beispiel anwenden.
    Hoffe das ist für dich jetzt klarer
    Gruß
    Broken Sword
    Auf dem Abstellgleis sah man ihn liegen,
    Auf dem Abstellgleis zwischen Schwelle und Gestein,
    Auf dem Abstellgleis im strömenden Regen,
    Auf dem Abstellgleis allein.