# if abfrage innerhalb echo



## AHelfer (9. April 2008)

Guten Tag alle zusammen
Da ich mal wieder ein völliger Blackout habe und ned mehr weiterkomme, ned weiss ob das nicht möglich ist oder ob ich einen Fehler mache frage ich mal wieder hier nach.


also eigentlich ganz einfach.
Ich will blos eine if Abfrage innerhalb eines echo Befehls hinkriegen welcher durch ein vorhergehender if befehl auslöst wurde.

Beispiel:
Zuerst wird getestet ob der Wert eines von 2 sachen ist.. und wenn ja welches genau gesetzt wurde (die Anzahl verschiedene Werte kann auch mehr als 2 sein)

Hier mal mein kleiner beispielcode
welcher nicht funktioniert und den Fehler:
_"Parse error: syntax error, unexpected T_IF in /home/httpd/vhosts/seite.com/httpdocs/back/iftest.php on line 19"_
ausgibt.



```
<?php
$test ='test1';
?>

<html>
<body>
<table>
<tr>
<td> TEST </td>
</tr>
<tr>
<td>
	<?php
		if ($test=='test1' or $test=='test2')
		{echo '
		<tr>
		<td>'
		.
		if ($test=='test1') {echo 'test1 <br />';} else {echo 'nicht test1 <br />';}
		if ($test=='test2') {echo 'test2 <br />';} else {echo 'nicht test2 <br />';}
		.
		'</td>
		</tr>
		';}
	?>
</td>
</tr>
</table>
</bod>
</html>
```

also.. wie gesagt ich sitze hier mit einem völligen Blackout.. bin froh um jeden kleinen hinweiss oder der druchsage dass das ned möglich ist.


----------



## Chaosengel_Gabriel (9. April 2008)

Ganz einfach:

```
echo (if-Abfrage) ? Wenn true : Sonst ;
```
Wenn es sowohl bei then und else nur die Textausgabe sein soll, dann wie folgt:

```
echo ($a=='x') ? 'Ist gleich' : 'Is nich gleich';
```

Alles klar!? 

[EDIT]

Ich hab da mit den gleichen Ideen und Versuchen dran gesessen, wie du sie in deinem Skript oben hast ^^
Bis mir hier jemand gesagt hat, wie es geht *rofl*


----------



## Loomis (9. April 2008)

Nicht getestet, sollte aber funkionieren.

```
<?php
        if ($test=='test1' or $test=='test2') {
          echo '<tr><td>';
          
            if ($test=='test1') {
              echo 'test1 <br />';
              } else {
                  echo 'nicht test1 <br />';
                  }
                  
            if ($test=='test2') {
              echo 'test2 <br />';
              } else {
                  echo 'nicht test2 <br />';
                  }
            
          echo '</td></tr>';
          }
    ?>
```
Keine Ahnung was du da mit den ganzen Punkten versuchst


----------



## Dario Linsky (9. April 2008)

Hi,

andere Alternative (ungetestet):

```
<?php
if ($test=='test1' or $test=='test2') {
?>
<tr>
  <td>
  <?php
    if ($test=='test1') {
      echo 'test1 <br />';
    } else {
      echo 'nicht test1 <br />';
    }

    if ($test=='test2') {
      echo 'test2 <br />';
    } else {
      echo 'nicht test2 <br />';
    }
  ?>
  </td>
</tr>
<?php 
}
?>
```

Grüße, D.

Edit: Zu langsam...


----------



## Chaosengel_Gabriel (9. April 2008)

D. das dürfte so nicht ganz hinhauen...
Würde es eher so machen:

```
if ($test=='test1' or $test=='test2') {
?>
<tr>
  <td>
  <?php
    echo ($test=='test1') ? 'test1 <br />' : 'nicht test1 <br />';
    echo  ($test=='test2') ? 'test2 <br />' : 'nicht test2 <br />';
  ?>
  </td>
</tr>
<?php 
}
```


----------



## Loomis (9. April 2008)

Wie man das schreibt ist ja dann eine Sache des eigenen Programmierstil's, ich mag solche Kurzschreibweisen z.B. garnicht.


----------



## Dario Linsky (9. April 2008)

Hi Gabriel,

das müsste meines Wissens nach schon funktionieren - aber ich bin ja was PHP angeht, nicht unbedingt ein Experte und lasse mich gerne eines besseren belehren. 

Allerdings bin ich (wie Loomes) auch kein großer Freund dieser Kurzschreibweise und benutze sie nur, wenn es wirklich Sinn macht. Und das macht eine Ausgabefunktion meiner Meinung nach nur unübersichtlich... Ist allerdings Geschmackssache. Praktisch dürfte dein Code aber genau den gleichen Effekt haben, wie der meinige. 

Grüße, D.


----------



## Chaosengel_Gabriel (9. April 2008)

Ich kann auch net genau sagen, obs geht oda ncih...
Benutz immer die Kurze schreibweise...

Haste recht Loomes, liegt im eigenen Ermessen, aber bei 600 Zeilen Code in einer File macht sich die Byte Ersparnis der kurzen Version bemerkbar ^^


----------



## Dario Linsky (9. April 2008)

Hi,



> aber bei 600 Zeilen Code in einer File macht sich die Byte Ersparnis der kurzen Version bemerkbar


da hast du Recht. Du könntest aber zusätzlich noch 600 bis 1000 Byte sparen, wenn du alles in eine Zeile schreibst und die Einrückung weg lässt. Whitespaces, Kommentare und Zeilenumbrüche nehmen nur unnötig Platz weg und Lesbarkeit wird eh überschätzt. Der User kriegt den Code ja eh nicht zu sehen. 

*scnr*, D.

P.S.: Sorry fürs Offtopic.


----------



## Chaosengel_Gabriel (9. April 2008)

*rofl*
Ja da hast recht ^^
Sollte man aber im eigenen Interesse erst machen, wenn der Code fertig ist und man nichts mehr daran ändern muss, sonst wirds echt übel xD

[EDIT]

Mein HTML Output is schon schlimm genug so linear xD
Das meiste wird per PHP geechot und da is mir dat zu umständlich imma \n und so einzusetzen^^
Zum Glück erleichtert der DOM-Inspektor vom FireFox das lesen des OutPut ^^


----------



## Sinjin (30. April 2008)

Hallo,

ich dachte das könnte hier gut reinpassen:

ich möchte eine if-Variable in den echo Befehl einsetzen:


```
<?php
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
   echo "$row->Name<br /><br />
         $row->Nachricht<br />
		 <br /><br />
	 ";

   }
?>
```

eingefügt werden soll:


```
<?php
  if($_SESSION['user_id'] == "19")
    {
    echo "<a href=\"delete_pinnwand.php\id=19\">Eintrag löschen</a>";
    }
  ?>
```

Wie kann ich das bewerkstelligen bzw. ist es überhaupt möglich?

MfG,
Sinjin.


----------



## Loomis (30. April 2008)

Du kannst soviele if einbauen wie du magst:

```
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
        echo "$row->Name<br /><br />
                $row->Nachricht<br />
                <br /><br />";
        if($_SESSION['user_id'] == "19")
        {
            echo "<a href=\"delete_pinnwand.php\id=19\">Eintrag löschen</a>";
        }

   }
```


----------



## Sinjin (30. April 2008)

Nun muss ich aber auch iwie die ID des Eintrags mit $row->Id anzeigen lassen können. Bis jetzt steht überall nur "19"


----------



## Loomis (30. April 2008)

Das schöne ist ja, du kannst beliebig viele echo's und if's einbauen.
Zum Beispiel:

```
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
        echo $row->Name;

        if($_SESSION['user_id'] == "19")
        {
            echo ' [ <a href="delete_pinnwand.php?id=19">Eintrag löschen</a> ]';
        }

        echo '<br /><br />"' .$row->Nachricht. '"<br /><br />';
   }
```

Würde dann sowas in der Art ergeben:

```
Max Mustermann [ Eintrag löschen ]

"Hier steht dann eine Nachricht, oder was auch
immer in dem Datenbankfeld drin steht."
```


----------



## Sinjin (30. April 2008)

Vielen, vielen Dank! 

Nur eine Sache noch:

Wenn ich nun das "19" aus Zeile 8 durch $row->Id ersetze kommt leider nur 
	
	
	



```
iwas.php?id=
```
.  Wenn das auch noch irgdnwie klappt wäre ich wirklich überfroh! 

MfG


----------



## Loomis (30. April 2008)

Wenn $row->Id einen Wert hat, funktioniert das:

```
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
        echo $row->Name;

        if($_SESSION['user_id'] == "19")
        {
            echo ' [ <a href="delete_pinnwand.php?id=' .$row->Id. '">Eintrag löschen</a> ]';
        }

        echo '<br /><br />"' .$row->Nachricht. '"<br /><br />';
   }
```


----------



## Sinjin (1. Mai 2008)

Hi Loomes,

hab es sofort eingefügt, leider wird aber immer noch als ID ' 19 ' eingefügt. 

Hab, wie gesagt, die 19 durch $_REQUEST[id] ersetzt:


```
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
        echo $row->Name;

        if($_SESSION['user_id'] == "$_REQUEST[id]")
        {
            echo ' [ <a href="delete_pinnwand.php?id=' .$row->Id. '">Eintrag löschen</a> ]';
        }

        echo '<br /><br />"' .$row->Nachricht. '"<br /><hr /><br />';
   }
```

MfG, ein verwunderter Internetsuchti


----------



## kalle123456 (1. Mai 2008)

Sinjin hat gesagt.:


> Hi Loomes,
> 
> hab es sofort eingefügt, leider wird aber immer noch als ID ' 19 ' eingefügt.
> 
> ...



Siehe oben, kleine Änderung -> $_REQUEST['id']


----------



## Sinjin (1. Mai 2008)

@kalle123456: Danke für die Hilfe, aber auch dass bringt leider nichts. Es wird nach wie vor immer die ID ' 19 ' angezeigt.  
Aber es muss doch irgendeine Möglichkeit geben.


----------



## kalle123456 (1. Mai 2008)

Sinjin hat gesagt.:


> @kalle123456: Danke für die Hilfe, aber auch dass bringt leider nichts. Es wird nach wie vor immer die ID ' 19 ' angezeigt.
> Aber es muss doch irgendeine Möglichkeit geben.



poste mal deinen aktuellen Code bitte.


----------



## Sinjin (1. Mai 2008)

Hier ist er


```
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
   {
        echo $row->Name;

        if($_SESSION['user_id'] == $_REQUEST['id'])
        {
            echo ' [ <a href="delete_pinnwand.php?id=' .$row->Id. '">Eintrag löschen</a> ]';
        }

        echo '<br /><br />"' .$row->Nachricht. '"<br /><hr /><br />';
   }
```

MfG


----------



## kalle123456 (1. Mai 2008)

probiere mal so und poste mal deine Ausgabe.


```
<?
$ergebnis = mysql_query($abfrage);
while($row = mysql_fetch_object($ergebnis))
{
   echo $row->Name;

   if($_SESSION['user_id'] == $_REQUEST['id']){
      echo '<a href="delete_pinnwand.php?id='.$row->Id.'">Eintrag löschen</a>';
   }
   echo '<br /><br />'.$row->Nachricht.'<br /><hr /><br />';
}
```


achso wenn $_SESSION['user_id'] immer 19 ist dann wird auch immer nur $row->Id = 19 ausgegeben.


----------



## Sinjin (1. Mai 2008)

Bei mir kommt immer, wegen der (wie du schon sagtest) REQUEST, 
	
	
	



```
delete_pinnwand.php?id=19
```
raus.  Aber irgndwie muss das mit der Abfrage ja klappen. Ohne REQUEST wirds leider nicht gehen.


----------



## kalle123456 (1. Mai 2008)

verstehe jetzt nicht was du willst...

Wenn $_SESSION['user_id'] = 19 dann ist die id auch immer 19- logisch oder?

um dir das mal zu zeigen, probiere mal folgendes.



```
if($_SESSION['user_id'] == $_REQUEST['id']){
      echo '<a href="delete_pinnwand.php?id='.$row->Id.'">Eintrag löschen</a>';
}else{
    echo '<a href="delete_pinnwand.php?id='.$row->Id.'">Ich bin User mit der user_id '.$row->Id.'</a>';
}
```


----------



## Sinjin (1. Mai 2008)

Nein nein, das habe ich schon verstanden. 

Mein Problem ist bloß, dass die ID nicht aus dem Datensatz geladen wird ($row->Id), sondern die Id der "Session"/des Benutzers.


----------



## kalle123456 (1. Mai 2008)

Ja wo setzt du denn die Session? Nehme mal an beim Login, ergo hat $_SESSION[id_user] immer nur die id des jeweiligen Users.


----------



## Sinjin (1. Mai 2008)

Allerdings sind ja die ID's der Einträge anders.. und genau diese ID's sollen gelaen werden. Es wird aber nicht diese sondern die des jeweiligen angemeldeten angezeigt...
und genau das ist ja mein Problem.


----------



## kalle123456 (1. Mai 2008)

lass das einfach weg und es werden alle geladen.


```
if($_SESSION['user_id'] == $_REQUEST['id'])
```

oder aber du willst alle Einträge, nur die eigenen nicht dann so


```
if($_SESSION['user_id'] != $_REQUEST['id'])
```

weiß nicht ob ich dich richtig verstanden habe...


----------



## Sinjin (1. Mai 2008)

Nein, ich meinte dass in dem Link anstatt meiner ID (19) die ID des Beitrages angezeigt werden soll. Das geht aber leider iwie nicht. Genau dass ist es, was ich mcih die ganze zeit Frage.


----------



## kalle123456 (1. Mai 2008)

tut mir leid, kann dir echt nicht folgen. Poste mal den Aufbau deiner tables und das SQL-Statement.


----------



## Sinjin (1. Mai 2008)

Das Problem hat sich soeben erledigt... die ID der Nachrichten wurde in a_Id gepsciehrt nicht in Id. 

Vielen Dank, an die die mit mir so geduldig waren! ^^


----------



## kalle123456 (1. Mai 2008)

Genau das habe ich mir schon gedacht.


----------

