Seite 1 von 1

problem mit variablen....

Verfasst: 08.03.2004 19:54
von Lord_Femto
hi leute. folgendes problem.

ich habe eine frage zu php. ich möchte gern eine seite mit lyrics machen. so weit so gut. durch ein einfaches formular können die user einen lyric (songtext) aufschreiben. die felder dafür sind: titel, interpret und text. diese daten werden nach der bestätigung in der datenbank gespeichert. in der datenbank selbst habe ich nun 12 songtexte oder so. nun möchte ich das auch wiedergeben. mittels php. zur zeit benutze ich frames; möchte aber auf diese verzichten. unter www.pandemicbrew.de/lyrics.htm ist noch die alte frame page, doch genauso vom aufbau, möchte ich es mit php haben, doch habe ich einige probleme. ich habe hier schonmal versucht etwas kleines zu schreiben, doch ohne großen erfolg. das ergebnis seht ihr unter www.pandemicbrew.de/lyrics.php
die sterne stehen für die db zugriffsdaten...

Verfasst: 08.03.2004 20:37
von Mister_X

Code: Alles auswählen

                           if($titel == "Intro")
                           { echo "<center>§titel<br>&copy; &interpret<br><br>$text</center>"; } 
steht das §titel und &interpret für was bestimmtes oder hast du da nur was mit dem $ Zeichen verwechselt?

Mit dieser if-Abfrage deckst du den Fall ab falls $titel = Intro ist, aber was ist mit den anderen Fällen? Du musst noch einen else Teil mit anhängen.

Außerdem:
erst weist du $titel = $_GET["titel"]; also der Variablen $titel den Inhalt aus der Adressleiste zu und dann überschreibst du den Inhalt mit mysql_result($daten, $i, "titel");

Verfasst: 08.03.2004 20:46
von Lord_Femto
hey danke für die guten tipps allerdings passiert dann immer noch nichts.
hab die zeichen umgetauscht, doch das ergebnis ist das selbe.

Verfasst: 09.03.2004 02:09
von Mister_X
a) du greifst jetzt nirgends mehr auf die Variable $_GET['titel'] zu, woher soll das Skript dann wissen was der Benutzer ausgewählt hat?
b) Natürlich wird nichts angezeigt, da deine if Bedinungen nie zutreffen
$titel wird innerhalb der for-Schleife jedesmal ein neuer Wert zugewiesen bis zum letzten Wert innerhalb der Datenbank nämlich "Two"
mache aus

Code: Alles auswählen

if($titel == "Intro") und elseif($titel == "Ballad Of Bobby")
einfach mal

Code: Alles auswählen

if($_GET['titel'] == "Intro") und elseif($_GET['titel'] == "Ballad Of Bobby")
Achja du dürftest dann immernoch einen Fehler in deinem Skript haben, aber vielleicht bekommste den ja selber gelöst. (Hängt mit der for-Schleife zusammen)

Verfasst: 09.03.2004 17:21
von Lord_Femto
so weit so gut aber es klappt noch nicht perfekt.

1.) ich hab den fahler in der for schleífe nicht gefunden.

2.) zeigt er mir, wenn ich auf einen link gehe nur den titel "two" an.

3.) kann ich irgendwie einstellen, dass die linke tabelle oben bleibt und nicht in die mitte rutscht?

4.) kann ich für

Code: Alles auswählen

if($_GET['titel'] == "Intro")
für das wort intro nicht irgendeine variable angeben, so dass ich nicht immer, bei einem neuen eintrag die datei ändern muss und elseif .... ranhängen muss?


Verfasst: 10.03.2004 01:20
von Mister_X
diesen Code so umbauen
1. ersetze

Code: Alles auswählen

                     for($i=0; $i<$anzahl; $i++)
                        {
                           $titel = mysql_result($daten, $i, "titel");
                           $interpret = mysql_result($daten, $i, "interpret");
                           $text = mysql_result($daten, $i, "text");
                           echo
                              "<center><br><a href=lyrics.php?titel=$titel>$titel</a><br></center>";
                        } 
mit

Code: Alles auswählen

                     for($i=0; $i<$anzahl; $i++)
                        {
                           $titel = mysql_result($daten, $i, "titel");
                           echo
                              "<center><br><a href=lyrics.php?titel=$titel>$titel</a><br></center>";
                        } 
2. das hängt eben mit deiner for-Schleife zusammen
3. zum td tag noch

Code: Alles auswählen

valign = "top" hinzufügen
4. ersetze

Code: Alles auswählen

                           if($_GET['titel'] == "Intro")
                           { echo "<center>$titel<br>&copy; $interpret<br><br>$text</center>"; }
                           elseif($_GET['titel'] == "Ballad")
                           { echo "<center>$titel<br>&copy; $interpret<br><br>$text</center>"; }
mit

Code: Alles auswählen

$benutzerauswahl = $_GET['titel'];
if ($benutzerauswahl != "")
{
$daten = "";
$daten = mysql_db_query("***********", "SELECT titel, interpret, text from 'PB-Lyrics' WHERE titel = '$benutzerauswahl'");
  if (!$daten)
  {
  echo "nix da";
  }
  else
  {
  $titel = mysql_result($daten, 1, "titel");
  $interpret = mysql_result($daten, 1, "interpret");
  $text = mysql_result($daten, 1, "text");
  echo "$titel <br> $interpret <br> $text";
  }
}
else
{
echo "noch nix ausgewählt";
}
So jetzt habe ich dir fast das ganze Skript geschrieben :)
!Das ganze ist ungetestet und ich habe es einfach mal gerade zusammengetippt!
Ein gutes Tutorial zum PHP lernen: http://www.schattenbaum.net/php

Verfasst: 10.03.2004 16:31
von Lord_Femto
hi
danke erst einmal für deine hilfe, doch es funktioniert irgendwie noch nicht...

Verfasst: 11.03.2004 15:09
von Mister_X

Code: Alles auswählen

<html>
<body>
<table width="99%" align="center">
	<tr>
         	<td width="14%" valign="top">
<?php
$vb = mysql_connect('Server', 'Benutzer', 'Passwort');
mysql_select_db('Datenbankname', $vb);
$daten = mysql_query("SELECT titel FROM `PB-Lyrics`");
$anzahl = mysql_num_rows($daten);
for($i=0; $i<$anzahl; $i++)
{
	$titel = mysql_result($daten, $i, "titel");
	echo "<center><br><a href=\"lyrics.php?titel=$titel\">$titel</a><br></center>";
}
?>
		</td>
		<td width="85%">
<?php
$benutzerauswahl = $_GET['titel'];
if ($benutzerauswahl != "")
{
	$daten2 = mysql_query("SELECT * FROM `PB-Lyrics` WHERE titel='$benutzerauswahl'") or die("Abfrage fehlgeschlagen:" . mysql_error());
	$anzahl = mysql_num_rows($daten2);
	if ($anzahl != 1)
	{
		echo "nix da";
	}
	else
	{
		$tab = mysql_fetch_array($daten2);
		$titel = $tab['titel'];
		$interpret = $tab['interpret'];
		$text = $tab['text'];
		echo "$titel <br> $interpret <br> $text";
	}
}
else
{
	echo "noch nix ausgewählt";
}

if (!$vb)
{
	echo "<font color=red size=5>Zur Zeit gibt es Probleme mit der Datenbank.<br>Bitte versuchen Sie es sp&auml;ter noch einmal.<br>Falls das Problem &ouml;fter auftaucht, bitte eine kurz Mail an den <a href=mailto:webmaster@pandemicbrew.de>Webmaster</a> schreiben, Danke!</font>";
}
mysql_close($vb);
?>
		</td>
	</tr>
</table>
</body>
</html>
Bitte editiere deine Beiträge, den nicht funktionsfähigen Code braucht ja jetzt keiner mehr.