Anzeige

Stringfunktion in While-Schleife

Stringfunktion in While-Schleife | PSD-Tutorials.de

Erstellt von odomanie, 06.11.2011.

  1. odomanie

    odomanie Noch nicht viel geschrieben

    Dabei seit:
    20.10.2011
    Beiträge:
    26
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    Hallo :)

    ich möchte gern eine datenbank auslesen und dabei vor den ersten wert mit dem buchstaben "T" den Text "Test:" einfügen. Nachfolgend erstmal der code mit einer while-schleife:

    PHP:
    1. <?php
    2.  
    3. $mysqlhost="domain.com"; // MySQL-Host angeben
    4.  
    5. $mysqluser="testuser"; // MySQL-User angeben
    6.  
    7. $mysqlpwd="testpw"; // Passwort angeben
    8.  
    9. $mysqldb="testdb"; // Gewuenschte Datenbank angeben
    10.  
    11.  
    12.  
    13. $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");
    14.  
    15. mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
    16.  
    17. $sql = "SELECT spalte1, spalte2, spalte3, spalte4, spalte5 FROM tabelle ORDER BY spalte3 ASC";
    18.  
    19.  
    20.  
    21.  
    22. $tabelle1_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");
    23.  
    24. ?>
    25.  
    26.  
    27. <?php
    28.  
    29.          while ($adr = mysql_fetch_array($tabelle1_query)){
    30.  
    31. ?>
    32.  
    33. <h1><?=$adr['spalte3']?></h1>
    34. <h2><?=$adr['spalte1']?></h2>
    35. <?=$adr['spalte2']?>
    36. <?=$adr['spalte4']?>
    37. <?=$adr['spalte5']?>
    38.  
    39. <?php
    40.  
    41.          }
    42.  
    43. ?>


    So und nun würde mein ansatz sein, in den obigen code eine stringfunktion einzubauen, sodass der Inhalt von spalte3 des aktuellen Datensatzes während der Ausgabe der Daten geprüft wird und wenn er mit "T" beginnt vor die ausgabe des ersten datensatzes mit "T" das wort "Test" geschrieben wird.

    nun die frage wie ich die passende stringfunktion einbaue, hat jemand eine idee?

    gruß,
    odo
     
    #1      
  2. Horst-Karsten

    Horst-Karsten Spicker

    12
    Dabei seit:
    17.04.2009
    Beiträge:
    521
    Geschlecht:
    männlich
    Ort:
    "Großraum" Hamburg
    Software:
    Adobe Palette
    Kameratyp:
    Canon EOS
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    suche nach substr

    Hier ist so einiges falsch, das solltest Du noch einmal überprüfen.
     
    #2      
  3. odomanie

    odomanie Noch nicht viel geschrieben

    Dabei seit:
    20.10.2011
    Beiträge:
    26
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Danke für die schnelle antwort :)

    Was ist hier falsch? habe den code getestet und er funktioniert. wo ist deiner meinung nach der fehler?


    und zu substr: hier würde ich nun folgenden code verwenden

    PHP:
    1.  
    2.  
    3. $string = $adr['spalte3']
    4. $string[strlen($string)-1];
    5.  
    6.  

    soweit richtig?
     
    Zuletzt bearbeitet: 06.11.2011
    #3      
  4. Horst-Karsten

    Horst-Karsten Spicker

    12
    Dabei seit:
    17.04.2009
    Beiträge:
    521
    Geschlecht:
    männlich
    Ort:
    "Großraum" Hamburg
    Software:
    Adobe Palette
    Kameratyp:
    Canon EOS
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Ich war bisher immer der Meinung, das "echo" eine Ausgabe erzeugt.
     
    #4      
  5. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Ist hässlich, aber erlaubt.

    Zum Problem: Du kannst auf einen einzelnen Buchstaben eines Strings mit einem Index zugreifen. Dein
    PHP:
    1. $string[strlen($string)-1];
    löst sich (für bspw. $string="hello") zu
    PHP:
    1. $string[strlen("hello")-1];
    PHP:
    1. $string[5-1];
    PHP:
    1. $string[4];
    auf, was wiederum den 5ten (Index beginnt bei 0) Buchstaben ausgibt ("o"). Du brauchst also $string[0] für den ersten Buchstaben.


    Duddle
     
    #5      
  6. odomanie

    odomanie Noch nicht viel geschrieben

    Dabei seit:
    20.10.2011
    Beiträge:
    26
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Macht es den Code langsamer oder fehleranfälliger?

    Und der Stringcode lautet also:

    PHP:
    1. $string = $adr['spalte3']
    2. $string[0];
    Wie kann ich nun in die while-schleife diesen code einbauen? mein ansatz wäre:

    PHP:
    1. <?php
    2.  
    3.          while ($adr = mysql_fetch_array($tabelle1_query)){
    4.  
    5. ?>
    6.  
    7.  
    8.  
    9. <?php
    10.  
    11.        $string = $adr['spalte3']
    12.  
    13.  
    14.             if (substr($string[0])== T) {
    15.            
    16.             echo "Test: ";
    17.            }
    18.  
    19.     else {
    20.  
    21.        echo "";  }
    22. ?>
    23.  
    24.  
    25.  
    26.  
    27. <h1><?=$adr['spalte3']?></h1>
    28. <h2><?=$adr['spalte1']?></h2>
    29. <?=$adr['spalte2']?>
    30. <?=$adr['spalte4']?>
    31. <?=$adr['spalte5']?>
    32.  
    33. <?php
    34.  
    35.          }
    36.  
    37. ?>
     
    Zuletzt bearbeitet: 06.11.2011
    #6      
  7. Zampano_

    Zampano_ Nicht mehr ganz neu hier

    Dabei seit:
    05.10.2010
    Beiträge:
    158
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Wenn du "spalte3" nicht weiter brauchst, würd ich das gar nicht erst in eine neue Variable schreiben.
    Ausserdem solltest du dir unter php.net mal die substr-Funktion anschauen ;)

    richtig wäre:
    if (substr($adr['spalte3'],0,1) == "T") {
    tu was du nicht lassen kannst.... ;-);
    }
     
    #7      
  8. odomanie

    odomanie Noch nicht viel geschrieben

    Dabei seit:
    20.10.2011
    Beiträge:
    26
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    So lautet der Code bis jetzt:

    PHP:
    1. <?php
    2.          while ($adr = mysql_fetch_array($tabelle1_query)){
    3. ?>
    4.  
    5. <?php
    6.        $string = $adr['spalte3']
    7.          if (substr($adr['spalte3'],0,1) == "T") {
    8.             echo "Test: ";
    9.            }
    10.     else {
    11.        echo "";  }
    12. ?>
    13.  
    14. <h1><?=$adr['spalte3']?></h1>
    15. <h2><?=$adr['spalte1']?></h2>
    16. <?=$adr['spalte2']?>
    17. <?=$adr['spalte4']?>
    18. <?=$adr['spalte5']?>
    19.  
    20. <?php
    21.  
    22.          }
    23.  
    24. ?>
    25.  

    mit der fehlermeldung
    Hm. Was mache ich falsch?

    Gruß,
    Odo
     
    #8      
  9. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Fehlendes Semikolon.



    Duddle
     
    #9      
  10. odomanie

    odomanie Noch nicht viel geschrieben

    Dabei seit:
    20.10.2011
    Beiträge:
    26
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Danke :D


    hier noch der funktionierende code:
    PHP:
    1. <?php
    2.          while ($adr = mysql_fetch_array($tabelle1_query)){
    3. ?>
    4.  
    5. <?php
    6.        $string = $adr['spalte3'];
    7.          if (substr($adr['spalte3'],0,1) == "T") {
    8.             echo "Test: ";
    9.            }
    10.     else {
    11.        echo "";  }
    12. ?>
    13.  
    14. <h1><?=$adr['spalte3']?></h1>
    15. <h2><?=$adr['spalte1']?></h2>
    16. <?=$adr['spalte2']?>
    17. <?=$adr['spalte4']?>
    18. <?=$adr['spalte5']?>
    19.  
    20. <?php
    21.  
    22.          }
    23.  
    24. ?>

    Nun wird aber bei jedem eintrag mit dem Buchstaben "T" der Text "Test" ausgegeben. Was muss ich abändern, damit der Text "Test" nur vor dem ersten eintrag mit "T" positioniert wird?

    Test

    Testeintrag1

    Testeintrag2

    etc.



    Gruß,
    odo
     
    #10      
  11. Horst-Karsten

    Horst-Karsten Spicker

    12
    Dabei seit:
    17.04.2009
    Beiträge:
    521
    Geschlecht:
    männlich
    Ort:
    "Großraum" Hamburg
    Software:
    Adobe Palette
    Kameratyp:
    Canon EOS
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Stichwort: Zähler ++ und dann auf entsprechenden Zählstand prüfen mit if
     
    #11      
  12. odomanie

    odomanie Noch nicht viel geschrieben

    Dabei seit:
    20.10.2011
    Beiträge:
    26
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Hm. Ich versuche mich rein zu denken. also ich brauch so etwas hier für die while-schleife:

    PHP:
    1. for ($i=0; $i<(count(substr($adr['spalte3'],0,1))); $i++) {
    leider bekomme ich nur fehlermeldungen, weil ich es an die falsche stelle setze und der code wahrscheinlich auch nicht ganz richtig ist.

    kann mir jemand weiterhelfen?


    gruß,
    odo
     
    #12      
  13. Duddle

    Duddle Posting-Frequenz: 14µHz

    Dabei seit:
    03.02.2006
    Beiträge:
    3.864
    Geschlecht:
    männlich
    Ort:
    Dresden
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Formuliere die Funktionalität:
    "Ich will, dass bei jedem Schleifendurchlauf geprüft wird, ob die Variable mit T beginnt. Falls ja, soll Test ausgegeben werden. Das will ich mir merken. Wenn ich schon vorher Test ausgegeben habe, will ich es nicht erneut ausgeben."

    Dann setze jeden Teil in Code um
    "Ich will, dass bei jedem Schleifendurchlauf"
    PHP:
    1.  
    2. while($foobar) {
    3. }
    4.  
    "geprüft wird, ob die Variable mit T beginnt."

    PHP:
    1.  
    2. while($foobar) {
    3.   if($variable[0] == "T") {
    4.   }
    5. }
    6.  
    "Falls ja, soll Test ausgegeben werden."
    PHP:
    1.  
    2. while($foobar) {
    3.   if($variable[0] == "T") {
    4.     echo "Test";
    5.   }
    6. }
    7.  
    "Das will ich mir merken"
    PHP:
    1.  
    2. while($foobar) {
    3.   if($variable[0] == "T") {
    4.     echo "Test";
    5.     $testWurdeAusgegeben = TRUE;
    6.   }
    7. }
    8.  
    "Wenn ich schon vorher Test ausgegeben habe, will ich es nicht erneut ausgeben."
    PHP:
    1.  
    2. while($foobar) {
    3.   if($variable[0] == "T" && $testWurdeAusgegeben != TRUE) {
    4.     echo "Test";
    5.     $testWurdeAusgegeben = TRUE;
    6.   }
    7. }
    8.  
    Das kann man hübscher und erweiterbarer schreiben, aber es soll zeigen wie simpel und straightforward PHP sein kann.


    Duddle
     
    Zuletzt bearbeitet: 06.11.2011
    #13      
  14. odomanie

    odomanie Noch nicht viel geschrieben

    Dabei seit:
    20.10.2011
    Beiträge:
    26
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Du bist der Beste! Habs verstanden! Macht Spass, wenns klappt :)


    was könnte ich statt "T" schreiben um auch einträge mit zahlen (0-9) mit ein zu beziehen? ist schwieriger oder?


    gruß,
    odo
     
    #14      
  15. Zampano_

    Zampano_ Nicht mehr ganz neu hier

    Dabei seit:
    05.10.2010
    Beiträge:
    158
    Geschlecht:
    männlich
    Stringfunktion in While-Schleife
    AW: Stringfunktion in While-Schleife

    Wo sollen die Zahlen denn stehen? Nur am Anfang, oder gilt auch mittendrin?

    Wenn du's ganz korrekt machen möchtest, ist preg_match() deine Funktion. Ist aber zu Beginn nicht ganz einfach...
     
    #15      
x
×
×