Birte W.: while-schleifen-formatierung

Guten Abend!

ich möchte bei der ausgabe einer datenbank (code unten) prüfen, ob spalte3 einen eintrag mit den anfangsbuchstaben "tes" hat und wenn ja, dann soll ein <br> vor den ersten eintrag mit "tes" eingefügt werden. bloß wie mache ich dies am besten?

eure birte :)

<?php  
  
$mysqlhost="domain.com"; // MySQL-Host angeben  
  
$mysqluser="testuser"; // MySQL-User angeben  
  
$mysqlpwd="testpw"; // Passwort angeben  
  
$mysqldb="testdb"; // Gewuenschte Datenbank angeben  
  
  
  
$connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");  
  
mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");  
  
$sql = "SELECT spalte1, spalte2, spalte3, spalte4, spalte5 FROM tabelle ORDER BY spalte3 ASC";  
  
  
  
  
$tabelle1_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");  
  
?>  
  
  
<?php  
  
         while ($adr = mysql_fetch_array($tabelle1_query)){  
  
?>  
  
<h1><?=$adr['spalte3']?></h1>  
<h2><?=$adr['spalte1']?></h2>  
<?=$adr['spalte2']?>  
<?=$adr['spalte4']?>  
<?=$adr['spalte5']?>  
  
<?php  
  
         }  
  
?>  
  

  1. Hi,

    ich möchte bei der ausgabe einer datenbank (code unten) prüfen, ob spalte3 einen eintrag mit den anfangsbuchstaben "tes" hat und wenn ja, dann soll ein <br> vor den ersten eintrag mit "tes" eingefügt werden. bloß wie mache ich dies am besten?

    Wie sieht dein Versuch/Ansatz aus?

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Wie sieht dein Versuch/Ansatz aus?

      Ich würde folgendes gern in meinen bereits geposteten code integrieren. nur leider weiß ich nicht wie man diesen code hier in die while-schleife integriert. Daher meine Bitte um Hilfe.

      <?php $Ergebnis = mysql_query("SELECT COUNT(*) FROM tabelle1 WHERE spalte3 LIKE 'tes%'");  
        
        
            $row1 = mysql_fetch_row($Ergebnis);  
        
            if ($row1[0] == 0) {  
          echo "";  
          }  
        
          else {  
        
             echo "<br>";  }  
      ?>
      

      birte :)

      1. Hi,

        Ich würde folgendes gern in meinen bereits geposteten code integrieren.

        Das dürfte vermutlich weniger sinnvoll sein.

        <?php $Ergebnis = mysql_query("SELECT COUNT(*) FROM tabelle1 WHERE spalte3 LIKE 'tes%'");

        Damit würdest du ja nur noch die Datensätze erhalten, in denen der Wert von spalte3* mit "tes" anfängt. Da du im vorher gezeigten Code aber alle Datensätze ausliest, ohne diese Einschränkung vorzunehmen, glaube ich nicht dass es wirklich das ist, was du willst.

        Deshalb mache die Prüfung, ob der Inhalt von spalte3 des aktuellen Datensatzes mit "tes" beginnt, besser mit PHP während der Ausgabe der Daten. Wenn du keine Idee hast, wie – dann schau dir bitte das Kapitel über Stringfunktionen im Handbuch an.

        * Die Spaltennamen sind hoffentlich nur für’s Beispiel vereinfacht? In der Realität ergibt eine Tabelle mit „durchnummerierten“ Spaltennamen seltenst einen Sinn.

        MfG ChrisB

        --
        RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
        1. Deshalb mache die Prüfung, ob der Inhalt von spalte3 des aktuellen Datensatzes mit "tes" beginnt, besser mit PHP während der Ausgabe der Daten. Wenn du keine Idee hast, wie – dann schau dir bitte das Kapitel über Stringfunktionen im Handbuch an.

          Ich habe nun folgenden Code:

          <?php  
          function beginsWith($str, $sub) {  
              return (strncmp($str, $sub, strlen($sub)) == 0);  
          }  
          ?>
          

          Wäre das der richtige Ansatz?

          * Die Spaltennamen sind hoffentlich nur für’s Beispiel vereinfacht? In der Realität ergibt eine Tabelle mit „durchnummerierten“ Spaltennamen seltenst einen Sinn.

          Die Bezeichnung sind nur für den Testfall. Aber danke für den Hinweis!

          1. while($foobar) {  
              if($variable[0] == "T" && $testWurdeAusgegeben != TRUE) {  
                echo "Test";  
                $testWurdeAusgegeben = TRUE;  
              }  
            } 
            

            Wie kann ich statt nach T, nach den Ziffern 0-9 suchen?

            Birte

            1. Hi,

              if($variable[0] == "T" && $testWurdeAusgegeben != TRUE) {

              Wie kann ich statt nach T, nach den Ziffern 0-9 suchen?

              Bspw. in dem du schaust, ob das Zeichen größer-gleich "0" und kleiner-gleich "9" ist …

              MfG ChrisB

              --
              RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
              1. Bspw. in dem du schaust, ob das Zeichen größer-gleich "0" und kleiner-gleich "9" ist …

                wäre es so richtig/optimal?

                if($string[0] <= "9" AND $string[0] >= "0" && $ZahlWurdeAusgegeben != True) {

                danke für die hilfe!

  2. Hi!

    Das eigentliche Problem ist ja geklärt.

    $connection=mysql_connect($mysqlhost, $mysqluser, $mysqlpwd) or die ("Verbindungsversuch fehlgeschlagen");
    mysql_select_db($mysqldb, $connection) or die("Konnte die Datenbank nicht waehlen.");
    $tabelle1_query = mysql_query($sql) or die("Anfrage nicht erfolgreich");

    Ist das Test-Code zum Erforschen des Prinzips oder befinden sich die "or die()"-Konstrukte auch im produktiven Code? Wenn ja bei letzterem, dann ist das wenig sinnvoll. Besucher können mit den Fehlermeldungen nichts anfangen. Sie tragen keine Schuld am Aussetzer des DBMS und sind dann die falschen Adressaten. Ein Administrator hingegen bekommt keine Meldung, wenn sich nicht grad jemand beschwert statt zur Konkurrenz zu laufen. Das Sterbenlassen des Scripts hinterlässt auch keinen guten Eindruck, nur eine kaputte Ausgabe.

    <h1><?=$adr['spalte3']?></h1>
    <h2><?=$adr['spalte1']?></h2>
    <?=$adr['spalte2']?>
    <?=$adr['spalte4']?>
    <?=$adr['spalte5']?>

    Der Kontextwechsel wird auch immer gern und mit teilweise gravierenden Folgen missachtet.

    Lo!