PHP Probleme beim User Profil
Eingetragen von beaschmitz (465)
am 13.08.2011 - 23:45 Uhr in
am 13.08.2011 - 23:45 Uhr in
Hi,
ich habe von Lonit mal eine tolle Anleitung für einen Profilschutz bekommen... Klappte soweit gut, jedoch habe ich nun ein recht umfangreiches Profil und ich schaffe es nicht, dieses korrekt auszugeben. Hier in diesem Code
if (isset($account->uid)) {
profile_load_profile( $account->uid);
$user_is_friend = user_relationships_load(array('between' => array($user->uid, $account->uid), 'approved' => TRUE)) ? 1 : 0;
if (arg(0) == 'user' && $user->uid == arg(1)) {
print '<div class="profile"><h3>' . $account->name . '</h3>' . theme('user_picture', $account) .
$profile[privatemsg_send_new_message];
'<br>' .
'<strong>Wohnort </strong>' . '<br>' .
'Postleitzahl:' '<?php> print $account->location['postal_code'] </php?> ' . '<br>' .
'Stadt:' '<?php> print $account->location['city'] </?php>' ' '<br>' .
'<br>' .
' <strong>Persoenliche Informationen</strong>' . ' <br>' .
'Geschlecht:' $account->profile_geschlecht . '<br>' .
'Ich bin:' $account->profile_zustand . '<br>' .
'Lieblingsbuch:' $account->profile_essen . '<br>' .
'Lieblingsland:' $account->profile_land . '<br>' .
'Ich mag:' $account->profile_ich_mag . '<br>' .
'Ueber mich:' $account->profile_mich . '<br>' .
'<br>' .
'<strong>Berufliches</strong>' . '<br>' .
'Organisation, Institution, Verein, Firma:' .
$account->profile_firma . '<br>' .
'<br>' .
'<strong>Qualifikation: </strong>'
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
sind wahrscheinlich mehrere Fehler drin, aber ich komme schon in der Zeile mit der postleitzahl nicht weiter, da immer die Fehlermeldung
"syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in " erscheint.
Hat jemand einen Tipp für mich, wie ich die Account Variablen korrekt ausgeben kann? Ich vermute auch Probleme bei der Abfrage mit den Profilfeldern (Hebamme), da dort ja 2 if Abfragen aufeinander "prallen".
Danke!!
- Anmelden oder Registrieren um Kommentare zu schreiben
Ein paar Dinge habe ich
am 14.08.2011 - 10:36 Uhr
Ein paar Dinge habe ich gesehen: die PHP Ausdrücke werden mit
<?php ..... ?>
eingerahmt und nicht mit<?php> ... </php?>
. Weiter unten im Script ist das ja dann auch richtig.In der Zeile mit der Postleitzahl und der direkt darunter folgen 2 "Single Quotes" aufeinander, das ist falsch. Außerdem rahmst Du in beiden Zeilen ein Stück PHP-Code mit Quotes ein. Das soll vermutlich auch nicht sein. Die Punkte zum Concatenate fehlen in diesen Zeile auch.
Auch das
<br>
-Tag sollte man<br />
schreiben, aber das ist dann Schönheit.Beste Grüße
Werner
Hallo Werner, vielen Dank für
am 14.08.2011 - 12:03 Uhr
Hallo Werner,
vielen Dank für Deine Antwort. Ich bin nicht so fit in PHP und machmal klappt es einfach nicht :(
Ich habe die php Einrahmung nun abgeändert, aber nun kommt folgender Fehlerhinweis:
Parse error: syntax error, unexpected '?' in line...
Der code sieht nun so aus:
'Postleitzahl:' <?php print $account->location['postal_code'] ?> '<br>' .
'Stadt:' <?php print $account->location['city'] ?> '<br>' .
Was ist den hier falsch?
Danke!
und was bedeutet Zitat: Die
am 14.08.2011 - 12:05 Uhr
und was bedeutet
Die Punkte zum Concatenate fehlen in diesen Zeile auch.
DANKE
Zitat: Die Punkte zum
am 14.08.2011 - 12:31 Uhr
Die Punkte zum Concatenate fehlen in diesen Zeile auch.
Dass die Punkte zwischen String und PHP-Anweisung fehlen, damit die Strings verbunden werden.
Also z. B. so:
'Postleitzahl:' . <?php print $account->location['postal_code'] ?> '<br>' .
Man beachte den Punkt zwischen "Postleitzahl" und PHP-Code.
Allerdings ist der gesamte Code auf's gröbste konfus... z. B. die ganzen Single-Quotes usw. wo genau verwendest du den Code? in einer page.tpl.php? Wenn ja, dann haben da die ganzen Quotes nichts verloren und du verwendest die Code-Bestandteile allgemein falsch.
Könntest du mal bitte den gesamten Code posten und sagen, wo genau du den untergebracht hast?
Hallo Exterior, vielen Dank
am 14.08.2011 - 12:54 Uhr
Hallo Exterior,
vielen Dank für Deine Antwort! Hier ist der ganze Code (er ist in der user-profile.tpl.php) und hierdurch soll erreicht werden, dass dieses Profil nur für "Freunde" ersichtlich ist. Ich habe von Lonit diesen Tipp erhalten! Danke nochmals! Wenn man also kein "Freund" ist und der User den Account auf "Nur für Freund sichtbar" gestellt hat, dann wird ein View aufgerufen "No Friend" Block. Hier ist also der Code:
<?php
global $user;
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(arg(1));
if (isset($account->uid)) {
profile_load_profile( $account->uid);
$user_is_friend = user_relationships_load(array('between' => array($user->uid, $account->uid), 'approved' => TRUE)) ? 1 : 0;
if (arg(0) == 'user' && $user->uid == arg(1)) {
print '<div class="profile"><h3>' . $account->name . '</h3>' . theme('user_picture', $account) .
$profile[privatemsg_send_new_message];
'<br>' .
'<strong>Wohnort </strong>' . '<br>' .
'Postleitzahl:' <?php print $account->location['postal_code'] ?> '<br>' .
'Stadt:' <?php print $account->location['city'] ?> '<br>' .
'<br>' .
' <strong>Persoenliche Informationen</strong>' . ' <br>' .
'Geschlecht:' $account->profile_geschlecht . '<br>' .
'Ich bin:' $account->profile_zustand . '<br>' .
'Lieblingsbuch:' $account->profile_essen . '<br>' .
'Lieblingsland:' $account->profile_land . '<br>' .
'Ich mag:' $account->profile_ich_mag . '<br>' .
'Ueber mich:' $account->profile_mich . '<br>' .
'<br>' .
'<strong>Berufliches</strong>' . '<br>' .
'Organisation, Institution, Verein, Firma:' .
$account->profile_firma . '<br>' .
'<br>' .
'<strong>Qualifikation: </strong>'
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderkrankenschwester) && ($account->profile_kinderkrankenschwester !== '0')): ?>
<div class="profil-content"><?php echo "Kinderkrankenschwester" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderarzt) && ($account->profile_kinderarzt !== '0')): ?>
<div class="profil-content"><?php echo "Ärztin oder Arzt" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_pharma) && ($account->profile_pharma !== '0')): ?>
<div class="profil-content"><?php echo "Pharmazeutisch-technische Assistentin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_trageberaterin) && ($account->profile_trageberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Trageberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_laktation) && ($account->profile_laktation !== '0')): ?>
<div class="profil-content"><?php echo "Still- und Laktationsberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_stillberaterin) && ($account->profile_stillberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Stillberaterin" ?></div>
<?php endif; ?>
'<strong>Ich suche: </strong>' . '<br>' .
<?php print $account->profile_suche?> <br>
<?php print $profile[user_relationships_ui]; ?> '</div>' ;
}
elseif ($account->profile_profilschutz == 'Nein') {
print '<div class="profile"><h3>' . $account->name . '</h3>' . theme('user_picture', $account) .
$profile[privatemsg_send_new_message]; . '<br>' .
'<strong>Wohnort </strong>' . '<br>' .
' Postleitzahl:' $account->location['postal_code'] . '<br>' .
'<br>' .
' <strong>Persoenliche Informationen</strong>' . ' <br>' .
'Geschlecht:' $account->profile_geschlecht . '<br>' .
'Ich bin:' $account->profile_zustand . '<br>' .
'Lieblingsbuch:' $account->profile_essen . '<br>' .
'Lieblingsland:' $account->profile_land . '<br>' .
'Ich mag:' $account->profile_ich_mag . '<br>' .
'Ueber mich:' $account->profile_mich . '<br>' .
'<br>' .
'<strong>Berufliches</strong>' . '<br>' .
'Organisation, Institution, Verein, Firma:' .
$account->profile_firma . '<br>' .
'<br>' .
'<strong>Qualifikation: </strong>'
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderkrankenschwester) && ($account->profile_kinderkrankenschwester !== '0')): ?>
<div class="profil-content"><?php echo "Kinderkrankenschwester" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderarzt) && ($account->profile_kinderarzt !== '0')): ?>
<div class="profil-content"><?php echo "Ärztin oder Arzt" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_pharma) && ($account->profile_pharma !== '0')): ?>
<div class="profil-content"><?php echo "Pharmazeutisch-technische Assistentin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_trageberaterin) && ($account->profile_trageberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Trageberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_laktation) && ($account->profile_laktation !== '0')): ?>
<div class="profil-content"><?php echo "Still- und Laktationsberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_stillberaterin) && ($account->profile_stillberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Stillberaterin" ?></div>
<?php endif; ?>
'<strong>Ich suche: </strong>' . '<br>' .
<?php print $account->profile_suche?> <br>
<?php print $profile[user_relationships_ui]; ?> '</div>' ;
}
elseif ($account->profile_profilschutz == 'Ja' && $user_is_friend == 0) {
print views_embed_view('No_Friend', 'block_1');
}
elseif ($account->profile_profilschutz == 'Ja' && $user_is_friend == 1) {
print '<div class="profile"><h3>' . $account->name . '</h3>' . theme('user_picture', $account) .
$profile[privatemsg_send_new_message]; . '<br>' .
'<strong>Wohnort </strong>' . '<br>' .
' Postleitzahl:' $account->location['postal_code'] . '<br>' .
'<br>' .
' <strong>Persoenliche Informationen</strong>' . ' <br>' .
'Geschlecht:' $account->profile_geschlecht . '<br>' .
'Ich bin:' $account->profile_zustand . '<br>' .
'Lieblingsbuch:' $account->profile_essen . '<br>' .
'Lieblingsland:' $account->profile_land . '<br>' .
'Ich mag:' $account->profile_ich_mag . '<br>' .
'Ueber mich:' $account->profile_mich . '<br>' .
'<br>' .
'<strong>Berufliches</strong>' . '<br>' .
'Organisation, Institution, Verein, Firma:' .
$account->profile_firma . '<br>' .
'<br>' .
'<strong>Qualifikation: </strong>'
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderkrankenschwester) && ($account->profile_kinderkrankenschwester !== '0')): ?>
<div class="profil-content"><?php echo "Kinderkrankenschwester" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderarzt) && ($account->profile_kinderarzt !== '0')): ?>
<div class="profil-content"><?php echo "Ärztin oder Arzt" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_pharma) && ($account->profile_pharma !== '0')): ?>
<div class="profil-content"><?php echo "Pharmazeutisch-technische Assistentin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_trageberaterin) && ($account->profile_trageberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Trageberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_laktation) && ($account->profile_laktation !== '0')): ?>
<div class="profil-content"><?php echo "Still- und Laktationsberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_stillberaterin) && ($account->profile_stillberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Stillberaterin" ?></div>
<?php endif; ?>
'<strong>Ich suche: </strong>' . '<br>' .
<?php print $account->profile_suche?> <br>
<?php print $profile[user_relationships_ui]; ?> '</div>' ;
}
}}
?>
Und der ist eben noch nicht rund...
DANKE!
Hallo, aber trotzdem, ob wohl
am 14.08.2011 - 12:59 Uhr
Hallo,
aber trotzdem, ob wohl ich den Punkt zwischen den Postleitzahl und php code gesetzt habe, nämlich so:
'Postleitzahl:' . <?php print $account->location['postal_code'] ?> '<br>' .
Kommt folgender Fehlerhinweis:
Parse error: syntax error, unexpected '<' in (...)user-profile.tpl.php on line 16
Was mache ich falsch?
DANKE
Und der gepostete Code oben
am 14.08.2011 - 13:44 Uhr
Und der gepostete Code oben ist der gesamte Inhalt deiner user-profile.tpl.php?
Wenn ja, dann ist der nämlich ziemlich falsch. Das geht dann schon da los, dass der gesamte Code mit PHP-Tags umschlossen ist und die singleQuotes haben da drin auch nichts zu suchen.
Hi, ja, das war mein
am 14.08.2011 - 14:30 Uhr
Hi,
ja, das war mein Versuch...
Dieser Code hier funktioniert:
<?php
global $user;
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(arg(1));
if (isset($account->uid)) {
profile_load_profile( $account->uid);
$user_is_friend = user_relationships_load(array('between' => array($user->uid, $account->uid), 'approved' => TRUE)) ? 1 : 0;
if (arg(0) == 'user' && $user->uid == arg(1)) {
print '<div class="profile"><h2>' . $account->name . '</h2>' . theme('user_picture', $user) .
'<strong>Graduierung </strong>' . $account->profile_guertelfarbe . '<br>' .
'<strong>Trainingspartner vorhanden? </strong>' . $account->profile_trainingspartner . '<br>' . '</div>' ;
}
elseif ($account->profile_profilschutz == 'Nein') {
print '<div class="profile"><h2>' . $account->name . '</h2>' . theme('user_picture', $user) .
'<strong>Graduierung </strong>' . $account->profile_guertelfarbe . '<br>' .
'<strong>Trainingspartner vorhanden? </strong>' . $account->profile_trainingspartner . '<br>' . '</div>' ;
}
elseif ($account->profile_profilschutz == 'Ja' && $user_is_friend == 0) {
print views_embed_view('No_Friend', 'block_1');
}
elseif ($account->profile_profilschutz == 'Ja' && $user_is_friend == 1) {
print '<div class="profile"><h2>' . $account->name . '</h2>' . theme('user_picture', $user) .
'<strong>Graduierung </strong>' . $account->profile_guertelfarbe . '<br>' .
'<strong>Trainingspartner vorhanden? </strong>' . $account->profile_trainingspartner . '<br>' . '</div>' ;
}
}}
?>
Darin sind aber doch auch single quotes enthalten?! Wie müsste ich den Code den machen, ohne die single quotes?!!
Mal am Beispiel der Zeile mit der Postleitzahl....
DANKE
Ja, das ist aber eigentlich
am 14.08.2011 - 14:47 Uhr
Ja, das ist aber eigentlich auch nicht richtig. Funktioniert zwar, ist aber nicht gerade sauber. Und wie du siehst, provoziert sowas auch schnell Fehler.
Ein PHP-Template ist so gedacht, dass du dir ein HTML-Grundgerüst baust und an den entsprechenden Stellen etwas PHP einfügst, um den Content auszugeben. Du aber verwendest ein großes PHP-Konstrukt, um darin das HTML-Gerüst zu printen, das ist völlig unnötig. Als Beispiel die Zeile mit der Postleitzahl wird nichts, weil dir das überhaupt nicht helfen wird. Schau dir einfach mal eine normale node.tpl.php oder page.tpl.php an, dann siehst du, wie so ein Template eigentlich aufgebaut ist.
Ja, aber wie mache ich das,
am 14.08.2011 - 14:57 Uhr
Ja, aber wie mache ich das, wenn ich 3 Alternativen anbieten muss/will. Es handelt sich hierbei ja um 3 Möglichkeiten, wenn das Userp Profil geladen wird:
(1) wenn man selbst der User ist
(2) wenn man nicht selbst der User ist, aber freund ist
(3) wenn man nicht selbst der user ist und nicht freund ist...
wie packe ich das denn in ein HTML gerüst??
es ist doch immer der ablauf, wenn das dann zeige dieses profil
...
wenn ich mir die page.tpl.php anschaue, dann ist dies ja immer ein Ablauf und dieser dann eben in ein gerüst mit diversen div classes...
hmm.
hast du noch einen tipp um mich "auf spur zu bringen"?
Für solche Sachen musst du
am 14.08.2011 - 15:18 Uhr
Für solche Sachen musst du dann eben eine Fall-Unterscheidung im Template machen:
Nur mal als Beispiel:
<h1>Hier kommt jetzt eine Unterscheidung rein: </h1>
<?php if( ($arg(0) == 'user') && ($arg(1) == 1) ) : ?>
<h2>Hier erfolgt die Ausgabe, wenn man auf der Seite /user/1 ist </h2>
<?php elseif( ($arg(0) == 'user') && ($arg(1) == 2) ) : ?>
<h2>Hier erfolgt die Ausgabe, wenn man auf der Seite /user/2 ist </h2>
<?php else : ?>
<h2>Hier erfolgt die Ausgabe, wenn man auf der Seite /user/2 ist </h2>
<?php endif; ?>
Ist nur ein Beispiel ohne Garantie auf totale Richtigkeit, aber prinzipiell wird so eine Unterscheidung im Template gemacht.
In der node.tpl.php von Garland sind z. B. einige IF-Konstrukte drin.
Ok, habe also die ganzen '
am 14.08.2011 - 16:04 Uhr
Ok, habe also die ganzen ' über bord geschmissen und das Profil neu geschrieben...
Lief ganz gut, nur hänge ich jetzt am Ende in der letzten Zeile und sehe den Fehler nicht!! Kann mir jemand sagen, was ich falsch gemacht habe? Ich sehe den Wald vor lauter Bäumen nicht mehr :(
<?php
global $user;
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(arg(1));
if (isset($account->uid)) {
profile_load_profile( $account->uid);
$user_is_friend = user_relationships_load(array('between' => array($user->uid, $account->uid), 'approved' => TRUE)) ? 1 : 0; ?>
<?php if (arg(0) == 'user' && $user->uid == arg(1)) : ?>
<?php print $profile[privatemsg_send_new_message]; ?> <br>
<strong>Wohnort</strong> <br>
Postleitzahl: <?php print $account->location['postal_code']?> <br>
Stadt: <?php print $account->location['city']?> <br>
<br>
<strong>Persoenliche Informationen</strong> <br>
Geschlecht: <?php print $account->profile_geschlecht?> <br>
Ich bin: <?php print $account->profile_zustand?> <br>
Lieblingsbuch: <?php print $account->profile_essen?> <br>
Lieblingsland: <?php print $account->profile_land?> <br>
Ich mag: <?php print $account->profile_ich_mag?> <br>
Ueber mich: <?php print $account->profile_mich?> <br>
<br>
<strong>Berufliches</strong> <br>
Organisation, Institution, Verein, Firma:
<?php print $account->profile_firma?> <br>
<br>
<strong>Qualifikation: </strong>
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderkrankenschwester) && ($account->profile_kinderkrankenschwester !== '0')): ?>
<div class="profil-content"><?php echo "Kinderkrankenschwester" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderarzt) && ($account->profile_kinderarzt !== '0')): ?>
<div class="profil-content"><?php echo "Ärztin oder Arzt" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_pharma) && ($account->profile_pharma !== '0')): ?>
<div class="profil-content"><?php echo "Pharmazeutisch-technische Assistentin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_trageberaterin) && ($account->profile_trageberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Trageberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_laktation) && ($account->profile_laktation !== '0')): ?>
<div class="profil-content"><?php echo "Still- und Laktationsberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_stillberaterin) && ($account->profile_stillberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Stillberaterin" ?></div>
<?php endif; ?>
<br>
<strong>Ich suche: </strong> <br>
<?php print $account->profile_suche?> <br>
<?php print $profile[user_relationships_ui]; ?>
}
<?php elseif ($account->profile_profilschutz == 'Nein') : ?>
<?php print $profile[privatemsg_send_new_message]; ?> <br>
<strong>Wohnort</strong> <br>
Postleitzahl: <?php print $account->location['postal_code']?> <br>
Stadt: <?php print $account->location['city']?> <br>
<br>
<strong>Persoenliche Informationen</strong> <br>
Geschlecht: <?php print $account->profile_geschlecht?> <br>
Ich bin: <?php print $account->profile_zustand?> <br>
Lieblingsbuch: <?php print $account->profile_essen?> <br>
Lieblingsland: <?php print $account->profile_land?> <br>
Ich mag: <?php print $account->profile_ich_mag?> <br>
Ueber mich: <?php print $account->profile_mich?> <br>
<br>
<strong>Berufliches</strong> <br>
Organisation, Institution, Verein, Firma:
<?php print $account->profile_firma?> <br>
<br>
<strong>Qualifikation: </strong>
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderkrankenschwester) && ($account->profile_kinderkrankenschwester !== '0')): ?>
<div class="profil-content"><?php echo "Kinderkrankenschwester" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderarzt) && ($account->profile_kinderarzt !== '0')): ?>
<div class="profil-content"><?php echo "Ärztin oder Arzt" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_pharma) && ($account->profile_pharma !== '0')): ?>
<div class="profil-content"><?php echo "Pharmazeutisch-technische Assistentin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_trageberaterin) && ($account->profile_trageberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Trageberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_laktation) && ($account->profile_laktation !== '0')): ?>
<div class="profil-content"><?php echo "Still- und Laktationsberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_stillberaterin) && ($account->profile_stillberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Stillberaterin" ?></div>
<?php endif; ?>
<br>
<strong>Ich suche: </strong> <br>
<?php print $account->profile_suche?> <br>
<?php print $profile[user_relationships_ui]; ?>
}
<?php elseif ($account->profile_profilschutz == 'Ja' && $user_is_friend == 0) : ?>
print views_embed_view('No_Friend', 'block_1');
}
<?php elseif ($account->profile_profilschutz == 'Ja' && $user_is_friend == 1) : ?>
<?php print $profile[privatemsg_send_new_message]; ?> <br>
<strong>Wohnort</strong> <br>
Postleitzahl: <?php print $account->location['postal_code']?> <br>
Stadt: <?php print $account->location['city']?> <br>
<br>
<strong>Persoenliche Informationen</strong> <br>
Geschlecht: <?php print $account->profile_geschlecht?> <br>
Ich bin: <?php print $account->profile_zustand?> <br>
Lieblingsbuch: <?php print $account->profile_essen?> <br>
Lieblingsland: <?php print $account->profile_land?> <br>
Ich mag: <?php print $account->profile_ich_mag?> <br>
Ueber mich: <?php print $account->profile_mich?> <br>
<br>
<strong>Berufliches</strong> <br>
Organisation, Institution, Verein, Firma:
<?php print $account->profile_firma?> <br>
<br>
<strong>Qualifikation: </strong>
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderkrankenschwester) && ($account->profile_kinderkrankenschwester !== '0')): ?>
<div class="profil-content"><?php echo "Kinderkrankenschwester" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderarzt) && ($account->profile_kinderarzt !== '0')): ?>
<div class="profil-content"><?php echo "Ärztin oder Arzt" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_pharma) && ($account->profile_pharma !== '0')): ?>
<div class="profil-content"><?php echo "Pharmazeutisch-technische Assistentin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_trageberaterin) && ($account->profile_trageberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Trageberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_laktation) && ($account->profile_laktation !== '0')): ?>
<div class="profil-content"><?php echo "Still- und Laktationsberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_stillberaterin) && ($account->profile_stillberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Stillberaterin" ?></div>
<?php endif; ?>
<br>
<strong>Ich suche: </strong> <br>
<?php print $account->profile_suche?> <br>
<?php print $profile[user_relationships_ui]; ?><br>
}
}}
</div>
Er meldet immer: (für die letzte Zeile)
Parse error: syntax error, unexpected $end in (...)user-profile.tpl.php on line 170
DANKE
Darf ich Dich auf das
am 14.08.2011 - 16:54 Uhr
Darf ich Dich auf das PHP-Handbuch und da auf den Abschnitt Kontrollstrukturen hinweisen? Es gibt grundsätzlich zwei mögliche Schreibweisen bein If
if (...) { ... } elseif (...) { ... } else { .... }
oderif (...): ..... elseif (...): else: .... endif;
. Diese beiden Varianten sollte man sorgsam auseinander halten. Du hast sie gemischt. Damit sind Deine geschweiften Klammern nicht korrekt geschlossen bzw Deine Kontrollstruktur inkonsistent.Das ist auch die Bedeutung der Fehlermeldung. Dein Script hört auf, bevor es von der Logik her geschlossen werden dürfte.
Beste Grüße
Werner
Ahh, alles klar. Danke für
am 14.08.2011 - 19:47 Uhr
Ahh, alles klar. Danke für diesen Hinweis!
Nun noch eine letzte (? hoffentlich) Frage:
Das Profil soll also entweder ausgegeben werden oder nicht, dies erreiche ich mit diesen if Schleifen.
Wird das Profil ausgegeben, beeinhaltet es jedoch Felder, die nur ausgegeben werden sollen, wenn sie gefüllt sind.
Hier arbeite ich ja auch mit einer if isset Schleife. Wie bette ich diese denn in die mögliche Ausgabe des Profils (also des Codes) ein?
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
Dieses hier ist also EINE Profilausgabe:
<?php if (arg(0) == 'user' && $user->uid == arg(1)) : ?>
<?php print $profile[privatemsg_send_new_message]; ?> <br>
<strong>Wohnort</strong> <br>
Postleitzahl: <?php print $account->location['postal_code']?> <br>
Stadt: <?php print $account->location['city']?> <br>
<br>
<strong>Persoenliche Informationen</strong> <br>
Geschlecht: <?php print $account->profile_geschlecht?> <br>
Ich bin: <?php print $account->profile_zustand?> <br>
Lieblingsbuch: <?php print $account->profile_essen?> <br>
Lieblingsland: <?php print $account->profile_land?> <br>
Ich mag: <?php print $account->profile_ich_mag?> <br>
Ueber mich: <?php print $account->profile_mich?> <br>
<br>
<strong>Berufliches</strong> <br>
Organisation, Institution, Verein, Firma:
<?php print $account->profile_firma?> <br>
<br>
<strong>Qualifikation: </strong>
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderkrankenschwester) && ($account->profile_kinderkrankenschwester !== '0')): ?>
<div class="profil-content"><?php echo "Kinderkrankenschwester" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_kinderarzt) && ($account->profile_kinderarzt !== '0')): ?>
<div class="profil-content"><?php echo "Ärztin oder Arzt" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_pharma) && ($account->profile_pharma !== '0')): ?>
<div class="profil-content"><?php echo "Pharmazeutisch-technische Assistentin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_trageberaterin) && ($account->profile_trageberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Trageberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_laktation) && ($account->profile_laktation !== '0')): ?>
<div class="profil-content"><?php echo "Still- und Laktationsberaterin" ?></div>
<?php endif; ?>
<?php if (isset($account->profile_stillberaterin) && ($account->profile_stillberaterin !== '0')): ?>
<div class="profil-content"><?php echo "Stillberaterin" ?></div>
<?php endif; ?>
<br>
<strong>Ich suche: </strong> <br>
<?php print $account->profile_suche?> <br>
<?php print $profile[user_relationships_ui]; ?>
<?php endif; ?>
Die klappt aber immer noch nicht, obwohl ich die geschweiften Klammern entnommen habe... hhmmm, ich verzweifle!
Wer kann helfen?
DANKE
Bei PHP steht an Ende eines
am 14.08.2011 - 20:22 Uhr
Bei PHP steht an Ende eines Statements ein Semicolon ";". Das fehlt in Deinem Code häufig am Ende der print- und echo-Statements. es muß also heißen:
<?php print $account->profile_geschlecht; ?>
und<?php echo "Trageberaterin"; ?>
.Beste Grüße
Werner
Also erstmal eine
am 14.08.2011 - 20:35 Uhr
Also erstmal eine grundsätzliche Info: Es sind keine If-Schleifen ;) Ist nicht böse gemeint, ich kann den Begriff "If-Schleife" nur einfach nicht lesen, weil dieser Ausdruck schlicht falsch ist. If-Anweisung oder ähnliches wäre korrekt ;)
So, genug der Klugscheißerei - was genau funktioniert denn nicht? "Klappt nicht" ist dann doch eine eher dürftige Fehlerbeschreibung.
Aber einfach mal ins blaue geraten würde ich mir auch mal die ganzen "
!==
" anschauen. Das ist eine Prüfung auf Ungleichheit. Wenn in einer Variable also ein unwahrer Wert drin steht, kannst du das damit prüfen. Allerdings gibt es davon zwei Arten:Kleines Beispiel:
<?php if ($var != 0) ?>
ist reagiert genauso wie<?php if ($var != FALSE) ?>
, weil beide Werte als FALSE interpretiert werden können.Wenn also in $var 0, FALSE oder '' steht, wird die IF-Anweisung nicht ausgeführt, weil nur abgeprüft wird, ob ein unwahrer Wert drin steht, egal in welchem Bezug.
<?php if ($var !== 0) ?>
hingegen ist etwas gänzlich anderes als<?php if ($var != FALSE) ?>
oder<?php if ($var != '') ?>
Im zweiten Beispiel wird die IF-Anweisung immer ausgeführt, wenn etwas anderes als 0 in $var steht. Also auch, wenn in $var FALSE oder '' steht, wird die IF-Anweisung ausgeführt, weil erstens geprüft wird, ob $var einen unwahren Wert hat und zweitens wird auch noch berücksichtigt, dass dieser aus einer Null interpretiert werden muss.
Wenn also Werners Tipp mit den ";" am Ende der Anweisung nicht klappen sollte, könntest du als nächstes mal die ganzen "!==" durch "!=" ersetzen.
@Werner
Ich dachte, die letzte Anweisung in einem Block kann man ohne Semikolon schreiben, müsste dass nicht auf die ganzen PHP-Einsätze zutreffen? Ist doch jeweils nur eine Anweisung in einem PHP-Block.
@Exterior: Da hast Du recht,
am 14.08.2011 - 22:19 Uhr
@Exterior: Da hast Du recht, aber in den Template Files habe ich mich so darangewöhnt, alle Statements zu terminieren, daß ich es noch nie ohne schließendes Semikolon probiert habe. Ich weiß daher nicht, ob es ohne geht.
Was den Code selbst angeht, Ich habe mal kurz versucht, die Logik zu untersuchen (vor meiner letzten Antwort), aber dann aufgegeben, da ich die Logik nicht nachvollziehen konnte. Habe dann aber nicht weitergeschaut, was die Vergleiche selbst angeht. Ich denke aber, Du hast den Nagel auf den Kopf getroffen.
Beste Grüße
Werner
So, ich melde mich nach dem
am 03.09.2011 - 00:25 Uhr
So, ich melde mich nach dem Urlaub mal wieder und danke für die Antworten!
Die Zeilen (Ausschnitt)
<strong>Qualifikation: </strong>
<?php if (isset($account->profile_hebamme) && ($account->profile_hebamme !== '0')): ?>
<div class="profil-content"><?php echo "Hebamme"; ?></div>
<?php endif; ?>
<?php if (isset($account->profile_doula) && ($account->profile_doula !== '0')): ?>
<div class="profil-content"><?php echo "Doula"; ?></div>
<?php endif; ?>
funktionieren für sich schon im Profil (wir nennen es mal Layout A) bzw. in der user-profile.tpl.php - Hier gibt es keine Probleme.
Ich kann also die einzelnen Profilfelder bzw. Werte so ausgeben, wie ich es möchte. Das klappt.
Ich habe mir also ein Profil zusammengesetzt und es liegt als user-profile.tpl.php im Theme Ordner.
Nun möchte ich aber das Profil nur für "Freunde" ausgeben (mit dem User-realtionships Modul erzeugt). Der entsprechende "Freundschaftstyp" ist angelegt.
Könnte man nicht einfach folgendes machen:
1) in der user-profile.tpl.php steht folgender Code
<?php
global $user;
if (arg(0) == 'user' && is_numeric(arg(1))) {
$account = user_load(arg(1));
if (isset($account->uid)) {
$node = content_profile_load('profile', $account->uid);
$user_is_friend = user_relationships_load(array('between' => array($user->uid, $account->uid), 'approved' => TRUE)) ? 1 : 0;
if (arg(0) == 'user' && $user->uid == arg(1)) {
print $user_profile;
}
elseif ($node->field_profile_privacy_active[0][value] == 'Nein') {
print $user_profile;
}
elseif ($node->field_profile_privacy_active[0][value] == 'Ja' && $user_is_friend == 0) {
print views_embed_view('No_Friend', 'block_1');
}
elseif ($node->field_profile_privacy_active[0][value] == 'Ja' && $user_is_friend == 1) {
print $user_profile;
}
}}
?>
2) und jetzt die Änderung -> 3)
3) anstelle von print $user_profile; müsste den das Layout A geladen werden.
Wie schreibe ich dies in den Code??
DANKE