• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

Werte auserhalb der Schleife ausgeben

moneymeyer

New member
Hallo. Ich habe folgenden Code, welcher an sich einwandfrei funktioniert, jedoch möchte ich auch Werte aus der album-Spalte auserhalb der Schleife ausgeben. (In jedem ausgewählten Datensatz steht der gleiche Albumname).

PHP:
<?php

$db = (object)null;
$db->host = 'localhost';
$db->user = '+++';
$db->pass = '+++';
$db->name = '+++';

$db->con = mysql_connect($db->host,$db->user,$db->pass);
if(        !( $db->con && mysql_select_db($db->name,$db->con) ) ) die('Keine Verbindung zur DB');

$res = mysql_query("SELECT * FROM `Morkel_Alben` WHERE `album`='".$_GET['album']."' AND `jahr`='".$_GET['jahr']."' order by `id`",$db->con);
?>

<?php while($album = mysql_fetch_object($res)): ?>

<a href="bilder/albumuebersicht/jahr_<?=$album->jahr?>/<?=$album->album?>/<?=$album->bild?>.jpg" rel="lightbox[roadtrip]" title="<?=$album->text?>" ><img class="center" src="bilder/albumuebersicht/jahr_<?=$album->jahr?>/<?=$album->album?>/vorschau/<?=$album->bild?>.jpg" width="100" height="75" alt="" border="0" /></a>

<?php endwhile; ?>

Da ich die Sprache PHP nicht behersche und relativzügig eine Lösung benötige, kann ich mit allgemeinen (und immer sicher gut gemeinten) Hinweisen nichts anfangen und freue mich, wenn Ihr mir gleich die passenden Codeschnipsel präsentieren könntet.

Noch einmal: Ich möchte <?=$xyz->album?> den Wert aus der SQL-Tabelle außerhalb der o. a. Schleife ausgeben.
 
Der Code funktioniert?
Normalerweise wird while in PHP so definiert:
PHP:
while ($BEDINGUNG) {
  //TU WAS
}

Desweiteren denke ich dass die Ausgabe so heißen müsste:
PHP:
<?php echo $album['jahr'] ?>
Kann mich aber auch irren, je nachdem wie deine Klasse erstellt ist.

Nun zu deiner Aufgabenstellung. Du kannst ein mehrdimensionales Array bilden:
PHP:
$dataArr=Array();
while ($album = mysql_fetch_object($res)) {
$dataArr[]=Array(
'jahr'=>$album->jahr,
'bild'=>$album->bild,
'title'=>$album->text,
'jahr'=>$album->jahr
);
}
Dann kannst du halt mittels $dataArr[0]['jahr'] usw. darauf zugreifen.
 
Der Code funktioniert?
Normalerweise wird while in PHP so definiert:
PHP:
while ($BEDINGUNG) {
  //TU WAS
}

Desweiteren denke ich dass die Ausgabe so heißen müsste:
PHP:
<?php echo $album['jahr'] ?>
Also die while Schleife sieht in der Tat etwass dubios aus, allerdings handelt es sich wohl um die "alternative Syntax". Keine Ahnung, in welchem Buch sowas für gut befunden wird, das kann auf jeden Fall nicht gut sein.

Ansonsten ist auch <?= die Kurzform für <?php echo aber auch nicht wirklich schön.

Insgesamt sieht der Code nach Schmutzprogrammierung aus. Man könnte auch sagen dieser Code demonstriert die maximale Unleserlichkeit durch größtmögliche Vermischung von HTML und PHP. Den Rest vom Skript möchte man gar nicht sehen.
 
Insgesamt sieht der Code nach Schmutzprogrammierung aus. Man könnte auch sagen dieser Code demonstriert die maximale Unleserlichkeit durch größtmögliche Vermischung von HTML und PHP. Den Rest vom Skript möchte man gar nicht sehen.

Leider Hilft mir dies nicht viel weiter. Wie gesagt, beherrsche ich die Sprache nicht und habe die Quelltexte von verschiedenen Freunden bzw. Internetseiten und versuche das Beste damit zu machen. Ich habe eine Alternative mit gleichem Problem:

PHP:
<?php

error_reporting(E_ALL);
include 'config.php';
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die(mysql_error());
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

$sql = "SELECT * FROM `Morkel_Alben` WHERE `album`='".$_GET['album']."' AND `jahr`='".$_GET['jahr']."' order by `id`";

$ergebnis = mysql_query($sql);

$result = mysql_query($sql) OR die(mysql_error());

         while($row = mysql_fetch_assoc($result)) {

         echo " ".$row['id']."  ".$row['jahr']."  ".$row['album']."  ".$row['bild']." ".$row['text']." <br> ";

         }


?>

Ich freue mich, wenn Ihr unnötiges Zeug rauswerft und mir sagen könnt, wie ich außerhalb dieser Schleife einen Wert abrufen kann.
 
Mein Post gelesen??
Ja, das habe ich!
moneymeyer schrieb:
(...) Wie gesagt, beherrsche ich die Sprache nicht und habe die Quelltexte von verschiedenen Freunden bzw. Internetseiten und versuche das Beste damit zu machen. (...)

Ich habe versucht Deinen Vorschlag umzusetzen, jedoch fehlen mir die Fertigkeiten, diesen auch umzusetzen. Auch wenn das doof klingt, aber ich benötige einen kompletten Beispielcode, um zu erkennen, was weg muss, was neu dazu soll und wie ich alles in eine Datei packen muss.
 
Ja, das habe ich!


Ich habe versucht Deinen Vorschlag umzusetzen, jedoch fehlen mir die Fertigkeiten, diesen auch umzusetzen. Auch wenn das doof klingt, aber ich benötige einen kompletten Beispielcode, um zu erkennen, was weg muss, was neu dazu soll und wie ich alles in eine Datei packen muss.

Da stand doch Quelltext en mass drin?
Egal dann kann dir hier wohl keiner helfen. Schon mal überlegt sowas extern machen zu lassen?
 
Lol stimmt, das habe ich überlesen. Wofür überhaupt die Datenbankabfrage?
 
Lol stimmt, das habe ich überlesen. Wofür überhaupt die Datenbankabfrage?

Der Sinn und Zweck des Ganzen
1.1 Geschichte
Ich habe eine in (fast) reinem HTML geschriebene Internetseite. Auf dieser gibt es u. a. auch eine Bildergalerie. Im Laufe der Zeit (ca. 9 Monate) haben sich so etwas über 1.000 Bilder angesammelt, welche ich jedes Mal per Hand in den Quellcode geschrieben habe.

1.2 Aktuelle Situation
Da sich auf Grund der vielen Bilder auch viele Alben (zu jeweils 20 bis 50 Bildern) angesammelt haben und diese Albumübersicht mitlerweile droht unübersichtlich zu werden, habe ich vor, eine Vorordnung der Alben einzuführen. Sozusagen ein Album für die Alben. Außerdem wird es mir langsam lästig und es dauert relativ lange, bevor man ein neues Album veröffentlichen kann.

2.1 Was ich möchte
Am Schönsten sieht doch so eine Bildergalerie aus, wenn nicht nur die Bilder angezeigt werden, sondern wenn man auch gleich eine Überschrift (idealerweise der Albumname) hat, welcher einem zeigt, dass es sich um was es in diesem Album eigentlich geht.

2.2 Was ich mir überlegt habe
Da ich selbst wenig Ahnung von der ganzen Sache habe, habe ich mir überlegt, dass es doch sinnvoll währe, wenn ich bestimmte Informationen zusammenfasse. z. B. Besteht der Link zu den Bildern aus dem Albumnamen. Da ich nicht ausschließen kann, dass ich irgenwann einmal einen Albumnamen doppelt belegen muss, habe ich mir ein zweites Kriterium (das Jahr) überlegt. Nur wenn beides zutrifft (Jahr und Album) möchte ich eine Ausgabe erhalten (Das war ja mit der SQL-Abfrage WHERE noch recht einfach, so dass ich es sogar verstehe)

3 Das habe ich
Ich habe mir eine Tabelle in einer SQL Datenbank angelegt. Diese enthält die Spalten id (für die Eindeutigkeit), album (das ist für den URL-Pfad und die Abfrage wichtig), jahr (wird ebenfalls für die Bild-URL und die Abfrage benötigt), bild (das ist der Dateiname ohne die Endung) und text (das ist der beschreibende Text des Bildes. Da nur ca. 30 % der Bilder beschriftet werden, trage ich diesen Text später per phpmyadmin ein) Mir fällt auf, dass ich noch eine Zeile benötige, nämlich die, in welche das die Überschrift kommt, da ich bei den Pfadnamen nicht alles verwenden kann, aber für das Prinzip ist dies vorerst nicht nötig.

Mir ist bewusst, dass sich die Einträge der einzelnen Alben nur anhand der id und des bildes unterscheiden. Sicherlich gibt es da auch noch eine bessere Lösung, aber ich verstehe diese und habe die (theoretische) Möglichkeit jedem Bild einen besonderen Text zu geben.

Dann habe ich von einem Freund aus einem anderen Script diese Schleife bekommen, welche wunderbar funktioniert. Leider kann ich aber keine Werte außerhalb der Schleife ausgeben.

4 Das Problem
Wie gesagt: Ich "spreche nicht die Sprache" PHP & MySQL. Das ist alles wie chinesisch für mich. Daher tue ich mich auch schwer, wenn mir (sicherlich für Fortgeschrittene Nutzer hilfreiche) allgemeine Hinweise und Kurzcodes geschrieben werden. Ich nehme dann diese Codeschnipsel und baue diese 1:1 in meine Seite ein und hoffe, dass das rauskommt, was ich möchte. Das schöne an der 1. von mir geposteten Version war ja, dass PHP und HTML schön getrennt voneinander existierten. Somit war es für mich relativ einfach zu erkennen, was nun wohin muss und ich musste nicht irgendwelche HTML-Zeichen Escapen muss. Außerdem konnte ich mit einem relativ kurzen Code

5 Abschluss
Ich hoffe, Ihr versteht nun mein Problem und warum ich das alles brauche. Und ja... ich habe autodidaktisch versucht PHP zu lernen, jedoch nie wirklich die Zeit und Geduld, um es wirklich zu verinnerlichen, da mir die gesamte Theorie sehr schwer fällt und ich daher nicht nur die Sprache nicht verstehe, sondern auch die Grammatik nicht begreife.

Ich bin Euch sehr, sehr, sehr dankbar, wenn Ihr mir mit einem EINFACHEN und funktionierenden Code weiterhelfen könnt.
 
Zuletzt bearbeitet:
Ich kann mich nur wiederholen:

PHP:
<?php echo $_GET['album'];?>

Deine Überlegungen sind soweit nachvollziehbar und ich sehe den Sinn der DB auch.

PS: Du solltest dein Vorhaben, PHP zu lernen, in die Tat umsetzten - aber am besten mit einem kleinen Projekt, das nicht zu schwer sein sollte - denn Programmieren lernt man nur, indem man programmiert... klingt komisch - ist aber so ;)
 
Ich kann mich nur wiederholen:

PHP:
<?php echo $_GET['album'];?>

Deine Überlegungen sind soweit nachvollziehbar und ich sehe den Sinn der DB auch.

PS: Du solltest dein Vorhaben, PHP zu lernen, in die Tat umsetzten - aber am besten mit einem kleinen Projekt, das nicht zu schwer sein sollte - denn Programmieren lernt man nur, indem man programmiert... klingt komisch - ist aber so ;)

Ja, da hast DU wirklich rech,aber... eigentich ist es doch bestimmt nicht schwer, Daten in einer Schleife und außerhalb einer Schleife auszugeben.
 
Ja, da hast DU wirklich rech,aber... eigentich ist es doch bestimmt nicht schwer, Daten in einer Schleife und außerhalb einer Schleife auszugeben.

Okay Zuerst mal dein Code ein bisschen aufräumen, das hät kein mensch aus,
wen du mit anderen zusammen arbeitest solltest du bisschen auf deine schreib art achten und notizen machen:

PHP:
   <?php

$db = (object)null;
$db->host = 'localhost';
$db->user = '+++';
$db->pass = '+++';
$db->name = '+++';

$album1 = $_GET['album'];
$jahr1 = $_GET['jahr'];

$db->con = mysql_connect($db->host,$db->user,$db->pass);
if(        !( $db->con && mysql_select_db($db->name,$db->con) ) ) die('Keine Verbindung zur DB');

$sql = "SELECT * FROM `Morkel_Alben` WHERE `album`='$album1' AND `jahr`='$jahr1' order by `id`",$db->con";
$res = mysql_query($sql);
 while($album = mysql_fetch_object($res)){

echo"
<a href=\"bilder/albumuebersicht/jahr_=$album->jahr/=$album->album/=$album->bild.jpg\" rel=\"lightbox[roadtrip]\" title=\"=$album->text\" ><img class="center\" src=\"bilder/albumuebersicht/jahr_=	$album->jahr/=$album->album/vorschau/=$album->bild.jpg\" width=\"100\" height=\"75\" alt=\"\" border=\"0\" /></a>
";

} ?>

Wen du eine Variable ausheralb einer schleife ausgeben willst einfach:
PHP:
<?php echo "$variable"; ?>
Wen du nur Variablen ausgeben willst kanst du auch:
Code:
<?php echo $variable; ?>
schreiben.

Und zur gestaltung deiner ausgabe empfhielt sich dein code etwa so zu gestalten:
PHP:
   <?php

$db = (object)null;
$db->host = 'localhost';
$db->user = '+++';
$db->pass = '+++';
$db->name = '+++';

$album1 = $_GET['album'];
$jahr1 = $_GET['jahr'];

$db->con = mysql_connect($db->host,$db->user,$db->pass);
if(        !( $db->con && mysql_select_db($db->name,$db->con) ) ) die('Keine Verbindung zur DB');

$sql = "SELECT * FROM `Morkel_Alben` WHERE `album`='$album1' AND `jahr`='$jahr1' order by `id`",$db->con";
$res = mysql_query($sql);
echo"<table border=\"1\" cellspacing=\"0\" cellpadding=\"2\" frame=\"below\" Mit rules=\"rows\"><tr>";
 while($album = mysql_fetch_object($res)){

echo"
<td>
<a href=\"bilder/albumuebersicht/jahr_=$album->jahr/=$album->album/=$album->bild.jpg\" rel=\"lightbox[roadtrip]\" title=\"=$album->text\" ><img class="center\" src=\"bilder/albumuebersicht/jahr_=	$album->jahr/=$album->album/vorschau/=$album->bild.jpg\" width=\"100\" height=\"75\" alt=\"\" border=\"0\" /></a>
</td>
";

} ?> 
</tr>
</table>

Wen ich deine Frage nicht beantwortet hab, bitte probier Sie nochmal zu erläutern.
mfg OPete:D
 
Zurück
Oben