php.de

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

 
 
LinkBack Themen-Optionen Thema bewerten
Alt 25.06.2004, 22:38  
Gast
 
Beiträge: n/a
Standard [Erledigt] Kleine Frage

Hallo,

zuerstmal die Ausgangssituation:

CODE:

<?
mysql_connect("localhost",
"root","") or die
("Keine Verbindung moeglich");
mysql_select_db("songtexte") or die
("Die Datenbank existiert nicht");

$abfrage = "SELECT * FROM lyrics WHERE id LIKE 'w'";
$ergebnis1 = mysql_query($abfrage);

while($row = mysql_fetch_object($ergebnis1))
{
echo $row->name;
echo ", ";
echo $row->vor;
echo " - ";
echo $row->titel;
echo " - ";
echo $row->text;
echo " "
echo $row->album;
echo "<h2> </h2>";


}

mysql_free_result($ergebnis1);


?>


Hiermit lasse ich mir aus meiner Datenbank alles anzeigen was die ID "w" trägt. Jetzt möchte ich die Informationen aus der Spalte "text" nicht anzeigen lassen, sondern erst, wenn ich auf den Titel klicke. Sprich, ich möchte gern das Ergebnis "Titel" als Link zum Ergebnis "Text" machen.

Geht das? Wo kann ich mich schlau lesen, oder habt ihr ne Kurzversion?

Danke im voraus
 
Sponsor Mitteilung
PHP Code Flüsterer

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

Alt 25.06.2004, 23:39  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

also erst mal ..
Code:
$abfrage = "SELECT * FROM lyrics WHERE id = 'w'"; 
$ergebnis1 = mysql_query($abfrage) or die (mysql_error());
das wird dir fehler aufzeigen ..
außerdem solltest du dir mal die anwendungsbereiche von LIKE anschauen.

dann mal was ganz anderes.
es ist absoluter schwachsinn das objekt, welches du durch mysql_fetch_object erhälst $row zu nennen.

klasse .. reihe .. was besagt das?
was enthält dieses objekt?

sinnvolle namensgebung ist immer in plus .. nur mal so am rande.

dann ..

Code:
echo " " 
[..]
echo "<h2> </h2>";
total sinnlos .. was soll das bitte sein?? und vor allem ... wo soll der sinn liegen?

nun gut .. und dann zu deiner frage.
so wie ich das sehe möchtest du eine ausgabe haben, die alles ausgibt außer dem text. stimmt das?

weiterhin willst du, dass wenn man auf den link "titel" klickt der text angezeigt wird.

na das kannst du per JS machen .. oder du speicherst den text in einer session-variable und liest diese dann beim erneuten aufruf über z.b. folgenden link aus
Code:
echo "<a href=\"".$_SERVER['PHP_SELF']."?text=yes\">".$row->titel."</a>";
das ist alles nur ein grobes prinzip .. das umzusetzen schaffst du alleine.

oder du machst es so, dass du je nach übergebenem parameter ... also z.b. text=yes oder text=no den text ausliest oder eben den rest ..

bsp.
Code:
	if ( (isset ($_GET['text']) AND (strcmp($_GET['text'],"yes") == 0) )
	{
	    $sql = "SELECT text FROM tabelle";
	    # verarbeitung ...
	}
	else
	{
	    $sql = "SELECT restlicher_kram FROM tabelle";
	    # verarbeitung ...
	    echo "<a href=\"".$_SERVER['PHP_SELF']."?text=yes\">".$row->titel."</a>";
	}
alles ungetestet .. aber es geht ja eh nur um das prinzip ..

grüße ben
imported_Ben ist offline  
Alt 25.06.2004, 23:41  
Gast
 
Beiträge: n/a
Standard

1. du solltest bei exakten Übereinstimmungen bei der Query immer spalte='Wert' nehmen und nicht LIKE

2. Ja das geht. Allerdings befürchte ich, dass du keine eindeutige ID für jeden EIntrag hast, oder?
Wenn nein, wird das relativ schwierig, weil zu deinem problem eine Spalte immer unterschiedliche Werte aufweisen muss.

Ok, nehmen wir an, du hast keine solche Spalte. Mach nix, kann man nachträglich einfügen. Ich kann dir ein schnell ein Script schreiben kleine Script übernimmt das realtiv einfach, leider muss dazu alles in eine neue Tabelle überschrieben wird. Anschließend wir die alte Tabelle gelöscht, wieder angelegt und wieder aufgefüllt, damit du nichts ändern musst.

wenn du es selbst machen kannst, musst du bei der neuen Tabelle Eintrag mehr machen (standartmäßig am Anfang), Ich nenne es immer ID, ich glaube auch, dass MySQL groß und klein unterscheidet.
Du musst bei der erstellung (z.B. mit PhpMyAdmin) beachten, dass du diese Spalte mit den Einstellungen INT mit 255 Zeichen, auto_increment und unique erstellst.

Wenn du überhaupt nix damit anfangen kannst, kann ich es ausnahmnweise für dich schrieben, allerdings erst morgen abend.
dazu bräuchte ich aber deine tabellenstruktur für die tabelle lyrics (alle namen, die Längen, bes. Einstellungen, etc.)

Damit du dich nicht beklagst :
Also Wenn du so eine echte ID hast, kannst du immer einen Link machen mit
Code:
echo 'Detail';
dann erstellst du eine Datei mit namen detail.php und darin muss dann stehen:
Code:
<?
// Datenbankverbindung
...
$id = $_GET['id'];
$query = "select text from lyrics where ID='$id'";
$detail = mysql_query($query);
$detail = mysql_fetch_array($detail);
...
echo $detail[text];
?>
PS: Ben war schneller, ich schreibs trotzdem, weil ich mir so Mühe gegeben hab
 
Alt 25.06.2004, 23:42  
Erfahrener Benutzer
 
Registriert seit: 18.09.2003
Beiträge: 13.598
PHP-Kenntnisse:
Fortgeschritten
imported_Ben ist zur Zeit noch ein unbeschriebenes Blatt
Standard

Zitat:
Zitat von Jojo
[..] ich schreibs trotzdem, weil ich mir so Mühe gegeben hab
putzibutzibuh ..
naja doppelt hält ja besser ..
imported_Ben ist offline  
Alt 25.06.2004, 23:44  
Gast
 
Beiträge: n/a
Standard

was heißt hier butzibutzibuh?
Hää?!
Ich wollt ihm zuerst gleich das Script hinschreiben, habs dann aber gelassen, weil ich dazu dann doch die anderen Spalten bräuchte, wenn welche existieren
 
Alt 27.06.2004, 10:52  
Gast
 
Beiträge: n/a
Standard

Da hast du recht, Jojo, ich kann relativ wenig damit anfangen. Aber ich fänd es wirklich supernett, wenn du mir hilfst. Du hast genau erfasst, was ich machen möchte, also scheint das ja eigentlich nicht unmöglich zu sein (höchstens für mich. Am Rande: diese echo " " - Geschichte ist mein Versuch gewesen, die Ergenisse einer Abfrage nicht so: ERGEBNISeRGENBISeGERBNIS anzeigen lassen zu müssen. Bin halt noch nicht so weit. Aber vielleicht kriege ich das ja mit eurer Hilfe hin.Das wird so ziemlich meiner einzig schwerer Ausflug in PHP. Wenn diese Datenbank erstmal läuft und man sie über ein HTML Formular aktualisieren kann (was ich dank schattenbaum.net schon geschafft hab), dann bin ich ja schon zufrieden. Viel mehr soll gar nicht kommen (bis jetzt).

Also

Ich habe die Datenbank laut deinen Angaben umgebaut:

Datenbank: songtexte Tabelle: lyrics

Zitat:

id int(255) not_null Auto_increment Primary_key
vor varchar(25) not_null
name varchar(25) not_null
titel varchar(50) not_null
text longtext not_null
album varchar(30) not_null
so sieht meine datenbank aus, sollte eigentlich jetzt stimmen. Nur ein Problem hatte ich: Ich konnte die id spalte nicht als unique markieren. Er ließ nur Primary key zu.... is das ok?
 
Alt 27.06.2004, 11:43  
Gast
 
Beiträge: n/a
Standard

du hättest gar nix machen müssen

das Problem ist erstens, dass du in der id-Spalte keine Zahlen hast und zweitens, dass du nachträglich irgendwie kein unique machen kannst, keine ahnung warum.

Hä?
wie sehen denn deine Einträge in der Spalte id aus????
vorher waren es doch Buchstaben wie z.B. "w" und jetzt?

hast du die alte Tabelle gelöscht und eine neue angelegt?

bitte klär mich auf!
 
Alt 27.06.2004, 12:11  
Gast
 
Beiträge: n/a
Standard

ich hab die id spalte mit den buchstaben gelöscht... dann eine neue angelegt mit zahlen, wie du gesagt hast. nur das ich die nicht unique machen konnte. wenn es nicht anders geht, leg ich komplett ne neue an, wenn das unique notwendig ist
 
Alt 27.06.2004, 12:47  
Gast
 
Beiträge: n/a
Standard

so. hab jetzt die tabelle neu angelegt, dann hab ich die detail.php so wie du gesagt hast erstellt und hab meinen Code wie folgt abgeändert:

Code:
<?
  mysql_connect("localhost",
  "root","") or die
  ("Keine Verbindung moeglich");
  mysql_select_db("songtexte") or die
  ("Die Datenbank existiert nicht");
  
  $abfrage = "SELECT * FROM lyrics";
  $ergebnis1 = mysql_query($abfrage);

  while($row = mysql_fetch_object($ergebnis1))
    {
     
    echo 'Detail';

    }

mysql_free_result($ergebnis1);


?>
Beim Ausführen jedoch kommt folgende Fehlermeldung:

Zitat:
Notice: Use of undefined constant ID - assumed 'ID' in D:\www\test3.php on line 14
 
Alt 27.06.2004, 12:49  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 2.150
Guradia befindet sich auf einem aufstrebenden Ast
Standard

Code:
$row['ID']
Guradia 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
kleine Frage zu Einfärben von Kategorie cybermailer PHP Tipps 2008 21 05.05.2008 14:42
kleine frage zu function PHP Tipps 2005-2 9 14.10.2005 10:59
kleine Frage zu "ORDER BY" [erledigt] PHP Tipps 2005-2 21 23.08.2005 15:18
kleine frage zu funtionen PHP Tipps 2005-2 3 08.08.2005 00:27
usort Funktion, kleine Frage zur Arbeitsweise. PHP Tipps 2005-2 4 25.07.2005 23:08
Kleine Frage eines Kleinen Neulings O.o Datenbanken 3 08.06.2005 19:49
Kleine Frage HTML, Usability und Barrierefreiheit 2 05.06.2005 13:19
eine kleine frage zu ordner und select tag -=Slider=- PHP Tipps 2005 10 15.05.2005 13:26
[Erledigt] kleine frage .... PHP Tipps 2004-2 9 11.12.2004 22:30
[Erledigt] Frage zur Funkrionen? PHP Tipps 2004-2 10 01.12.2004 09:42
[Erledigt] kleine inner join frage... PHP-Fortgeschrittene 3 02.11.2004 22:02
kleine frage PHP Tipps 2004 7 15.09.2004 22:52
Kleine frage zu einem Pulldownmenü PHP Tipps 2004 2 03.09.2004 03:31
Kleine Include Frage PHP Tipps 2004 4 06.07.2004 22:54


Alle Zeitangaben in WEZ +2. Es ist jetzt 05:03 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.