[PHP] While() und variable Variablen (war: Globale Variablen??)

U

Unregistered

Gast
[PHP]Globale Variablen??

Hi ich bin PHP nOOb und bin zur Zeit dabei mein erstes Projekt zu machen. Leider hab ich jetzt ein prob (ist vermutlich einfach zu lösen für jemanden der php gut kann)
Aaaalso:

<?
$num=6;

$variable="
texttexttext Das ist text nr.$num";

while ($num>0)
{
$num--;

echo ($variable));
}

?>


ich hab das hier mal stark vereinfacht damit man das problem gleich sieht. Also es wird zwar jetzt 6 mal der Text ausgegeben aber ohne Variable...

Es *sollte* rauskommen:

texttexttext Das ist text nr.6
texttexttext Das ist text nr.5
texttexttext Das ist text nr.4
texttexttext Das ist text nr.3
texttexttext Das ist text nr.2
texttexttext Das ist text nr.1

aber es kommt raus:

texttexttext Das ist text nr.
texttexttext Das ist text nr.
texttexttext Das ist text nr.
texttexttext Das ist text nr.
texttexttext Das ist text nr.
texttexttext Das ist text nr.


Muß ich $num irgendwie global machen? Oder wie geht das?
Ich hab schon versucht: global $num; und dann den wert zugewiesen aber das ging nicht...

Bitte helft einen nOOb in Php :)

DANKE!
 
ups vergessen:

PHP:
<? 
$num=6; 

$variable=" 
texttexttext Das ist text nr.$num"; 

while ($num>0) 
{ 
$num--; 

echo ($variable)); 
} 

?>
 
PHP:
<?
$num=6;

while($num > 0)
 {
  $num--;
  $variable="texttexttext Das ist text nr. $num  <br>\n";

  echo "$variable";

 }

?>


so sollte dein script diese ausgabe bringen:

texttexttext Das ist text nr. 5
texttexttext Das ist text nr. 4
texttexttext Das ist text nr. 3
texttexttext Das ist text nr. 2
texttexttext Das ist text nr. 1
texttexttext Das ist text nr. 0

ich hoffe ich konnte dir helfen.

Smigo
 
<?
$num=6;

while ($num > 0)
{
$num-- ;
echo 'texttexttext Das ist text nr. '.$num.'<br>';
}

?>
so könnte man es auch machen, wenn du dir geschreibe ersparen möchtest.

ist dir überlassen wie du es am liebsten magst.

Smigo
 
Original erstellt von Smigo
<?
$num=6;

while ($num > 0)
{
$num-- ;
echo 'texttexttext Das ist text nr. '.$num.'<br>';
}

?>
so könnte man es auch machen, wenn du dir geschreibe ersparen möchtest.

ist dir überlassen wie du es am liebsten magst.

Smigo

ja, aber so bringts mir nichts weil die variable die ich hier einfach als texttexttext gemacht hab von nem formularfeld eingelesen wird :)

Hm ich hab nochmal ein neues Problem...

Ok hier mein problem

PHP:
<? 
$but=2; 
$name0="blabla"; 
$name1="balbal"; 
$name2="tamtaram"; while ($but>0) 
	{ 
	$but--; 
	variable="<texttexttext name=\"$name$but\" >"; 
	echo  nl2br(htmlspecialchars($variable)); 
	} ?>

Ich hab das ganze stark vereinfacht damit man das Problem gleich sieht... ich will das ganze jetzt so machen das dann rauskommt:
<texttexttext name="blabla" >
<texttexttext name="balbal" >
<texttexttext name="tamtaram" >

aber leider kommt im moment nur das raus:

<texttexttext name="2" >
<texttexttext name="1" >
<texttexttext name="0" >

ich weiß auch das das daran liegt das ich die variablen falsch zusammengesetzt hab, aber wie macht mans richtig??? Bitte hilfe :) Danke
 
So geht's:
PHP:
<? 
$but=2; 
$name0="blabla"; 
$name1="balbal"; 
$name2="tamtaram";
while ($but>=0) { 
    $variable="<texttexttext name=\"${'name'.$but}\" >\n"; 
    echo nl2br(htmlspecialchars($variable));
    $but--;
}
?>
Bitte nicht als Anprangerung verstehen, aber da du ja auch aus deinen Fehlern lernen willst, schreibe ich sie hier mal auf:
  1. Du hast geschrieben while($but>0), der Ausgangswert für $but ist 2. Daher wirddie Schleife einmal mit dem Wert 1 und einmal mit dem Wert 2 für $but durchlaufen, es wird aber nie den Wert 0 haben! Daher: while ($but>=0)
  2. Bei deiner Variante werden einfach die beiden Variablen $name und $but hintereinander ausgegeben, aber nicht wie von dir beabsichtigt zusammengesetzt. Genaugenommen gibt es die Variable $name zudem gar nicht, du willst ja den String 'name' vor die Nummer setzen und aus dieser Aneinanderreihung soll sich dann die Variable ergeben.
    Schau dir mal das Kapitel "Variable Variablen" in der PHP Docu an. Eingeleitet wird die Variable wie immer durch ein Dollarzeichen. Da der Name der Variablen jedoch erst noch zusammengesetzt werden soll, musst du geschweifte Klammern benutzen und darin den Namen der Variablen aus dem String 'name' und der Variablen $but zusammensetzen.
  3. Was willst du mit der Funktion nl2br() bewirken? Der Text in der Variablen enthält gar keine Newline-Zeichen, sprich keine \n, die nl2br() durch das entsprechende HTML-Tag ersetzen könnte. Du musst an den String also noch ein \n anhängen, das dann ersetzt wird oder direkt...
    Code:
    <br>
    ...verwenden! :)
 
Hey danke ihr seid die größten hier im Forum :)
Ich hab Computerbase schon seit nem Jahr als Startsite, ich glaub jetzt registrier ich mich mal schön langsam hier im Forum =)

ok nun zu dem was du anprangerst:

1.die while schleife brauch ich weil in dem echten skript (das hier ist nur vereinfacht) die variable ned fest ist sondern eine beliebig hohe zahl sein kann

2. Danke das ist sehr hilfreich und da schau ich mal nach :)

3. Die Funktion brauch ich weil statt Text normalerweise code drin ist der über mehrere Zeilen geht.

Also vielen vielen dank nochmal :)
 
Original erstellt von Unregistered
Hey danke ihr seid die größten hier im Forum :)
Ich hab Computerbase schon seit nem Jahr als Startsite, ich glaub jetzt registrier ich mich mal schön langsam hier im Forum =)
Freut mich zu hören! :D
1.die while schleife brauch ich weil in dem echten skript (das hier ist nur vereinfacht) die variable ned fest ist sondern eine beliebig hohe zahl sein kann
Ja, aber es ging mir darum, dass bei deiner Version die While-Schleife nur zweimal anstatt wie anscheinend beabsichtigt dreimal durchlaufen wird!
  • 1. Durchlauf: $but ist 2 > 0 OK!
  • 2. Durchlauf: $but ist 1 > 0 OK!
  • 3. Durchlauf: $but ist 0 > 0 Nicht OK!
Beim dritten Durchlauf ist die Bedingung der While-Schleife nicht mehr erfüllt. Daher als Vergleichsoperator ">=" anstatt ">" verwenden. Das war es, worauf ich hinaus wollte... :)

Mit einem Array kannst du die ganze Sache eigentlich viel einfacher haben:
PHP:
$array[0] = "Ich";
$array[1] = "Du";
$array[2] = "Er/Sie/Es";
// Und so weiter...

foreach( $array as $value ) {
    echo $value."<br>";
}
Das würde nacheinander jeden Wert des Arrays ausgeben und du hast zudem noch die Möglichkeit, mit den diversen Array-Funktionen die Werte zu sortieren und viele andere Dinge zu machen...
 
hm der fall 0 ist aber genau richtig so für mich =)



Ist mein erstes PHP projekt und ich bin mal gespannt wie sichs entwickeln wird =)

Thx nochmal :)
 
Zuletzt bearbeitet:
Zurück
Oben