php.de

Zurück   php.de > Webentwicklung > PHP Einsteiger > PHP Tipps 2005

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 16.05.2005, 15:08  
Gast
 
Beiträge: n/a
Standard if anweisung innerhalb von HEREDOC-Operator möglich?

innerhalb einer if Anweisung inkl. Auslesen von SQL, gebe ich vile HTML aus, und habe mich deshalb für Heredoc entschieden.
Problem ist, das die Daten aus der DB in ein Formular (für CMS) geladen werden. Dort möchte ich gerne in einem Select Feld den aktuell eingetragenen Datensatz als selected anzeigen lassen.
Wie (wenn überhaupt) kann ich in der Anweisung eine if schleife einbinden?


Code:
if ($menue == 3)
	{
	echo <<<UPDATE
	
...


		<TD bgcolor="#FFFFFF">
			<select name="mm">
				<option if($Row[mm] == '0')? "selected" : ""; value="0">-</option>
				<option if($Row[mm] == '1')? "selected" : ""; value="1">Kids</option>
				<option if($Row[mm] == '2')? "selected" : ""; value="2">City</option>
				<option if($Row[mm] == '3')? "selected" : ""; value="3">Trekking</option>
				<option if($Row[mm] == '4')? "selected" : ""; value="4">Mountain</option>
				<option if($Row[mm] == '5')? "selected" : ""; value="5">Racing</option>
				<option if($Row[mm] == '6')? "selected" : ""; value="6">Folding</option>
				<option if($Row[mm] == '7')? "selected" : ""; value="7">Sondermodelle</option>
				<option if($Row[mm] == '8')? "selected" : ""; value="8">Auslaufmodelle</option>
			</SELECT>
		</TD>

...


UPDATE;

tobio
 
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 16.05.2005, 15:13  
Gast
 
Beiträge: n/a
Standard

Verwende printf(formatstring, variable, variable...)
Die Beschreibung des Formatstrings findest Du unter sprintf()
 
Alt 16.05.2005, 15:26  
Gast
 
Beiträge: n/a
Standard

das ist mir nicht ganz klar, was ich mit der funktion soll?!

das html innerhalb meiner heredoc anweisung "update" ist ca. 120 zeilen lang.
ich wollte verhindern, vor jede zeile ein echo oder print detzen zu müssen.


die einzigste möglichkeit, die mir noch einviel, ist die html kacke in eine externe datei zu packen und das ganze so zu gestalten:

Hauptdatei:
PHP-Code:
if ($menue == 3)
   { 
include(
"update.php");



und dann die update.php
PHP-Code:
<?php
 
.... SQL Anweisung ..
?>


... (einiges mehr an HTML)

      <TD bgcolor="#FFFFFF">
         <select name="mm">
            <option <?PHP if($Row[mm] == '0')? "selected" ""?> value="0">-</option>
            <option <?PHP if($Row[mm] == '1')? "selected" ""?> value="1">Kids</option>
            <option <?PHP if($Row[mm] == '2')? "selected" ""?> value="2">City</option>
            <option <?PHP if($Row[mm] == '3')? "selected" ""?> value="3">Trekking</option>
            <option <?PHP if($Row[mm] == '4')? "selected" ""?> value="4">Mountain</option>
            <option <?PHP if($Row[mm] == '5')? "selected" ""?> value="5">Racing</option>
            <option <?PHP if($Row[mm] == '6')? "selected" ""?> value="6">Folding</option>
            <option <?PHP if($Row[mm] == '7')? "selected" ""?> value="7">Sondermodelle</option>
            <option <?PHP if($Row[mm] == '8')? "selected" ""?> value="8">Auslaufmodelle</option>
         </SELECT>
      </TD>

... (einiges mehr an HTML)



?>

finde ich aber nicht elegant und hätte es lieber innerhalb der HEREDOC anweisung


tobio
 
Alt 16.05.2005, 15:31  
Gast
 
Beiträge: n/a
Standard

du kannst auch ein echo ' '; um deine ganze ausgabe machen und dann innerhalb dieses echos an die gewünschte stellen folgendes:

'.($Row['mm'] == 1 ? "selected" : "").'

solltest jetzt nur darauf achten, das in deinem html kein ' drin vor kommt, da du diesen escapen müsstest.
 
Alt 16.05.2005, 15:58  
Gast
 
Beiträge: n/a
Standard

Also macht es euch doch nicht so schwer, ich benutze auch immer Heredocs.

Wenn dein Drop Down Feld aus einer Datenbank gefüllt wird gehts mehr als Simpel, zur Not legst du dir dann eine Tabelle an mit den Werten für die Select-Box(Später auch besser wenn du das erweitern musst.)

Dann baust du vor deinem Heredoc deine <select> Anweisung Zusammen. Also so ungefähr:

Code:
  $main_result=ibase_query("SELECT * FROM \"main\" WHERE \"id\"=$auswahl");
 //Abfrage um den Kompletten Datensatz zu ziehen. in diesem Datensatz steht ganz im Sinne vom Relationalen Datenbank Design nur die Nummer des dazugehörigen option values...
 $erg=ibase_fetch_row($main_result);

  $select_result=ibase_query("SELECT * FROM \"Tabelle\");
  //Alle Daten aus der Tabelle lesen für die Select Anweisung
  $select="<select name=\"Irgendwas\"><option value=0>--Bitte Auswählen--</option>";
  //Den ersten Teil zusammenstellen
  while($select_erg=ibase_fetch_row($select_result))
  {
    //Solange wie du noch Daten für die Select Anweisung bekommst
    //Vergleiche einfach die im Hauptdatensatz gespeicherte ID mit der von der Selected Tabelle (Hier ist es das Vierte Feld im Hauptdatensatz)
    ($erg[3]==$select_erg[0])?$selected="selected":$selected='';
    $select.="<option value=$select_erg[0] $selected>$select_erg[1]</option>\n";
  }
  //nun nur noch das select schliessen:
  $select.="</select>";

.
.
.
//Heredoc

print <<< website

html gedönse


$select

html gedönse

website;
//heredoc ende
Und Zack hast du was du wolltest

Ich hoffe ich konnte dir helfen, wenn du noch Fragen hast, kannst du gerne nochmal Posten.

©as
 
Alt 16.05.2005, 16:21  
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von tobio
finde ich aber nicht elegant und hätte es lieber innerhalb der HEREDOC anweisung
Elegant wäre die Verwendung von (s)printf().
 
Alt 16.05.2005, 16:27  
Gast
 
Beiträge: n/a
Standard

Nun ja so ist es ja auch eigentlich recht elegant finde ich
 
Alt 16.05.2005, 16:32  
Gast
 
Beiträge: n/a
Standard

sprintf() wäre eine möglichkeit, aber mit der kurz-if-form (wie oben angegeben) kann man den text so hinschreiben...:

PHP-Code:
<?php

   
echo '
   
...


      <TD bgcolor="#FFFFFF">
         <select name="mm">
            <option '
.($Row[mm] == '0' "selected" "").' value="0">-</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="1">Kids</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="2">City</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="3">Trekking</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="4">Mountain</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="5">Racing</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="6">Folding</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="7">Sondermodelle</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="8">Auslaufmodelle</option>
         </SELECT>
      </TD>

...
'
;

?>
P.S.: Ich würde alle html-tags kleinschreiben ... .
 
Alt 16.05.2005, 17:35  
Gast
 
Beiträge: n/a
Standard

@sakureil
Danke funzt so.

werde die HTML Tags aber nach wie vor alle groß schreiben, hab ich mir vor jahren so angewöhnt und ich finde es der übersicht halber besser, denn sie gehen im text nicht unter.


@meikel
für printf() hätte ich mir erst mal zu viel durchlesen/ und ändern müssen.
die andere variante war mittels suchen und ersetzen zu bewerkstelligen.
danke trotzdem


tobio
 
Alt 16.05.2005, 17:48  
Moderator
 
Benutzerbild von robo47
 
Registriert seit: 03.09.2004
Beiträge: 11.792
PHP-Kenntnisse:
Fortgeschritten
robo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz seinrobo47 kann auf vieles stolz sein
Standard

Zitat:
Zitat von Sakuraiel
sprintf() wäre eine möglichkeit, aber mit der kurz-if-form (wie oben angegeben) kann man den text so hinschreiben...:

PHP-Code:
<?php

   
echo '
   
...


      <TD bgcolor="#FFFFFF">
         <select name="mm">
            <option '
.($Row[mm] == '0' "selected" "").' value="0">-</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="1">Kids</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="2">City</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="3">Trekking</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="4">Mountain</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="5">Racing</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="6">Folding</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="7">Sondermodelle</option>
            <option '
.($Row[mm] == '0' "selected" "").' value="8">Auslaufmodelle</option>
         </SELECT>
      </TD>

...
'
;

?>
P.S.: Ich würde alle html-tags kleinschreiben ... .

stichwort:
error-reporting
Zum testen von Scripts setzt man normalerweise am anfang des scripts (oder direkt in einer config-datei die immer Includet wird)
PHP-Code:
error_reporting(E_ALL); 
damit werden dann alle Fehler ausgegeben.
Mögliche Fehler die dann auftreten und wie man sie beheben kann:
Notice: Use of undefined constant ...
Notice: Undefined variable ...

also bitte
$Row['mm']
robo47 ist offline  
 


Themen-Optionen
Thema bewerten
Thema bewerten:

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are an
Gehe zu

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Variable in SQL Anweisung verwenden Beatbox PHP Tipps 2006 2 08.08.2006 16:32
[Erledigt] Zugriff auf eine Klasse innerhalb einer Funktion -&amp;amp;gt; Fehle PHP-Fortgeschrittene 23 05.02.2006 13:02
innerhalb heredoc wert einer Variablen zuweiden rudolfs PHP Tipps 2006 5 17.01.2006 20:07
Excel Sheet innerhalb einer HTML Seite anzeigen PHP Tipps 2005-2 4 20.09.2005 13:32
Problem mit Zahlen innerhalb von strpos() PHP Tipps 2005-2 6 25.07.2005 06:40
Mausposition innerhalb eines Elementes Buhmann HTML, Usability und Barrierefreiheit 1 20.01.2005 16:58
[Erledigt] Object innerhalb einer XML Parser Funktion deklarieren PHP-Fortgeschrittene 0 10.12.2004 14:40
[Erledigt] switch anweisung PHP-Fortgeschrittene 9 17.11.2004 16:38
[Erledigt] Query, der Daten innerhalb DB zwischen Tabellen verschiebt Datenbanken 6 18.09.2004 14:38
Referenzen (lies Pointer) innerhalb mehrdimensionaler Arrays PHP-Fortgeschrittene 2 17.09.2004 14:00
Daten innerhalb einer Tab. mit insert duplizieren/kopieren Datenbanken 4 15.09.2004 15:12

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
php heredoc if, heredoc php if, heredoc if, heredoc operator, php if in heredoc, heredoc if abfrage, if in heredoc, heredoc operator php, heredoc php if else, php heredoc schleife, php if else heredoc, php funktion in heredoc, if bedingung in heredoc, php heredoc-operator., php heredoc if clause, heredoc schleifen, php heredoc function, php heredoc ad value to variable, php if ($row[1]!=\\), sql heredoc deutsch

Alle Zeitangaben in WEZ +2. Es ist jetzt 13:49 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.