Antworten auf deine Fragen:
Neues Thema erstellen

Stringfunktion in While-Schleife

odomanie

Noch nicht viel geschrieben

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:
<?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

         }

?>



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
 

odomanie

Noch nicht viel geschrieben

AW: Stringfunktion in While-Schleife

Hier ist so einiges falsch, das solltest Du noch einmal überprüfen.

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:
$string = $adr['spalte3']
$string[strlen($string)-1];


soweit richtig?
 
Zuletzt bearbeitet:

Duddle

Posting-Frequenz: 14µHz

AW: Stringfunktion in While-Schleife

http://www.php.net/manual/en/function.echo.php schrieb:
echo() also has a shortcut syntax, where you can immediately follow the opening tag with an equals sign. This short syntax only works with the short_open_tag configuration setting enabled.
PHP:
I have <?=$foo?> foo.

Ist hässlich, aber erlaubt.

Zum Problem: Du kannst auf einen einzelnen Buchstaben eines Strings mit einem Index zugreifen. Dein
PHP:
$string[strlen($string)-1];
löst sich (für bspw. $string="hello") zu
PHP:
$string[strlen("hello")-1];
PHP:
$string[5-1];
PHP:
$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
 

odomanie

Noch nicht viel geschrieben

AW: Stringfunktion in While-Schleife

Ist hässlich, aber erlaubt.

Macht es den Code langsamer oder fehleranfälliger?

Und der Stringcode lautet also:

PHP:
$string = $adr['spalte3']
$string[0];

Wie kann ich nun in die while-schleife diesen code einbauen? mein ansatz wäre:

PHP:
<?php 

         while ($adr = mysql_fetch_array($tabelle1_query)){ 

?> 



<?php

       $string = $adr['spalte3']


            if (substr($string[0])== T) {
           
            echo "Test: ";
           }

    else {

       echo "";  }
?>




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

<?php 

         } 

?>
 
Zuletzt bearbeitet:

Zampano_

Nicht mehr ganz neu hier

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

odomanie

Noch nicht viel geschrieben

AW: Stringfunktion in While-Schleife

So lautet der Code bis jetzt:

PHP:
<?php
         while ($adr = mysql_fetch_array($tabelle1_query)){
?>

<?php
       $string = $adr['spalte3']
         if (substr($adr['spalte3'],0,1) == "T") {
            echo "Test: ";
           }
    else {
       echo "";  }
?>

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

<?php

         }

?>


mit der fehlermeldung
Parse error: syntax error, unexpected T_IF in /www/htdocs/ ... /runtime.php(42) : eval()’d code on line 539

Hm. Was mache ich falsch?

Gruß,
Odo
 

odomanie

Noch nicht viel geschrieben

AW: Stringfunktion in While-Schleife

Fehlendes Semikolon.

Danke :D


hier noch der funktionierende code:
PHP:
<?php
         while ($adr = mysql_fetch_array($tabelle1_query)){
?>

<?php
       $string = $adr['spalte3'];
         if (substr($adr['spalte3'],0,1) == "T") {
            echo "Test: ";
           }
    else {
       echo "";  }
?>

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

<?php

         }

?>


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
 

odomanie

Noch nicht viel geschrieben

AW: Stringfunktion in While-Schleife

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

PHP:
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
 

Duddle

Posting-Frequenz: 14µHz

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:
while($foobar) {
}
"geprüft wird, ob die Variable mit T beginnt."

PHP:
while($foobar) {
  if($variable[0] == "T") {
  }
}

"Falls ja, soll Test ausgegeben werden."
PHP:
while($foobar) {
  if($variable[0] == "T") {
    echo "Test";
  }
}

"Das will ich mir merken"
PHP:
while($foobar) {
  if($variable[0] == "T") {
    echo "Test";
    $testWurdeAusgegeben = TRUE;
  }
}

"Wenn ich schon vorher Test ausgegeben habe, will ich es nicht erneut ausgeben."
PHP:
while($foobar) {
  if($variable[0] == "T" && $testWurdeAusgegeben != TRUE) {
    echo "Test";
    $testWurdeAusgegeben = TRUE;
  }
}

Das kann man hübscher und erweiterbarer schreiben, aber es soll zeigen wie simpel und straightforward PHP sein kann.


Duddle
 
Zuletzt bearbeitet:

odomanie

Noch nicht viel geschrieben

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
 

Zampano_

Nicht mehr ganz neu hier

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...
 
Bilder bitte hier hochladen und danach über das Bild-Icon (Direktlink vorher kopieren) platzieren.
Antworten auf deine Fragen:
Neues Thema erstellen

Willkommen auf PSD-Tutorials.de

In unseren Foren vernetzt du dich mit anderen Personen, um dich rund um die Themen Fotografie, Grafik, Gestaltung, Bildbearbeitung und 3D auszutauschen. Außerdem schalten wir für dich regelmäßig kostenlose Inhalte frei. Liebe Grüße senden dir die PSD-Gründer Stefan und Matthias Petri aus Waren an der Müritz. Hier erfährst du mehr über uns.

Stefan und Matthias Petri von PSD-Tutorials.de

Nächster neuer Gratisinhalt

03
Stunden
:
:
25
Minuten
:
:
19
Sekunden

Neueste Themen & Antworten

Flatrate für Tutorials, Assets, Vorlagen

Zurzeit aktive Besucher

Statistik des Forums

Themen
118.616
Beiträge
1.538.358
Mitglieder
67.536
Neuestes Mitglied
QuestionMark
Oben