Archiv verlassen und diese Seite im Standarddesign anzeigen : Brauche hilfe bei einen member script
voodooman 19-04-2007, 01:25 hallo ich wollte mir ein member script für meine gilde bauen aber es hackt mal wieder am scripten hier mein prob
das is der anfangs script geht auch alles aber wenn ich dan den link klicke kommt ne fehler meldung.
<?
include("ph_config.php");
$abfrage = "SELECT * from $tabelle";
$result = mysql_query($abfrage,$conn);
while ($row = mysql_fetch_array ($result))
{
$id= $row["id"];
$klassen_name= $row["klassen_name"];
echo "<a href=ph_member_name?id=$klassen_name><img border=0 src=img/$klassen_name.gif width=85 height=85/></a> ";
}
?>
hier wo der fehler kommt
<?
include("ph_config.php");
$komm = "SELECT * from $tabelle_m WHERE klassen_name= $klassen_name";
$result = mysql_query($komm,$conn);
while ($row = mysql_fetch_array ($result))
{
$id = $row["id"];
$klassen_name= $row["klassen_name"];
$name= $row["name"];
$lvl= $row["lvl"];
$skill= $row["skill"];
echo "<table width=95% border=0 align=center cellpadding=0 cellspacing=0>
<tr>
<td width=90><b>Name:</b></td>
<td width=502>$name</td>
</tr>
<tr>
<td><b>Level:</b></td>
<td>$lvl</td>
</tr>
<tr>
<td><b>Skillun:</b></td>
<td>$skill</td>
</tr>
</table>
";
}
?> er sagt mir immer
Warning: Supplied argument is not a valid MySQL result resource in c:\apache\htdocs\wow-seite\ph_member_name.php on line 25
25 ist "while ($row = mysql_fetch_array ($result))"
könnt ihr mir helfen bitte
kuddeldaddeldu 19-04-2007, 01:42 Hi,
Query und Fehlermeldung ausgeben lassen, siehe Regeln (http://php-resource.de/forum/showthread.php?s=&threadid=50454).
der fehler sagt dir doch alles
lass dir mal die query ausgeben
echo $komm;
dein link aufbau
echo "<a href=ph_member_name?id=$klassen_name><img border=0 src=img/$klassen_name.gif width=85 height=85/></a> ";
ist falsch da du ja
$id= $row["id"];
gemacht hast nehme ich an das
echo "<a href=ph_member_name?id=$id><img border=0 src=img/$klassen_name.gif width=85 height=85/></a> ";
gedacht war
und dann solltest du
$komm = "SELECT * from $tabelle_m WHERE id= ".$_REQUEST['id'];
mal so tippe....
voodooman 19-04-2007, 02:21 ich will nicht die id rauslesen sondern denn klassen_name
script soll so sein
sql datenbanken klassen
id, klassen_name
1, schamanen
2, priester
3, magier
dann zweite datenbanl
klassen_name, name, lvl, skill
schamanen, test, 70, heilung
priester, test 70, heilung
so auf der ersten seite soll er nur die klassen_namen ausgeben und wenn man auf den link klickt soll er die member auslesen die in klassen_name hinterlegt sind
die antwort ändert sich dabei grundsätzlich nicht....
hast du dir mal $komm ausgeben lassen was steht da drin
vorallem solltest du dich aber mal mit dem prinzip der relationellen Datenbanken beschäftigen und den normalisierungs Formen :-)
voodooman 19-04-2007, 04:01 in $komm steht nix drin oder so
kuddeldaddeldu 19-04-2007, 07:18 jo, is denn wohl nich richtig oder so :dontknow:
wir wollen dir ja helfen aber du musst uns dabei auch schon helfen
ist noch kein PHP Master vom Himmel gefallen aber
echo
var_dump
print_r
sollten dir schon was sagen....
in $komm steht nix drin oder so
kann nicht sein da du ja
$komm = "SELECT * from $tabelle_m WHERE klassen_name= $klassen_name";
gebildet hast...
$komm = "SELECT * from $tabelle_m WHERE klassen_name= $klassen_name";
echo $komm;
ich stell mir jetzt nur mal eine frage wo bildest du eigendlich deine Datenbank verbindung?
jahlives 19-04-2007, 09:47 @topicstarter
1. error_reporting(E_ALL) am Anfang deines Scriptes
2. hinter jede mysql_query mal
mysql_query($deineQuery) OR die($deineQuery.'<br />'.mysql_error());
schreiben
Gruss
tobi
voodooman 19-04-2007, 14:51 hier noch mal meine php dateien
ph_config.php
<?
$server = "localhost";
$user = "";
$pass = "";
$db = "";
$tabelle_m = "ph_member";
$tabelle = "ph_klassen";
$conn = @mysql_connect($server, $user, $pass);
if (!$conn)
{
echo "Verbindung zur Datenbank wird aufgebaut:<br>Verbindung nicht möglich!";
exit();}
$verbindung = @mysql_select_db($db);
if (!$verbindung)
{
echo "Verbindung zur Datenbank wird aufgebaut:<br>Die Datenbank wurde nicht gefunden!";
exit();}
?>
ph_member.php
<?
include("ph_config.php");
$abfrage = "SELECT * from $tabelle";
$result = mysql_query($abfrage,$conn);
while ($row = mysql_fetch_array ($result))
{;
$klassen_name= $row["klassen_name"];
echo "<a href=ph_member_name?id=$klassen_name><img border=0 src=img/$klassen_name.gif width=85 height=85/></a> ";
}
?>
ph_member_name.php
<?
include("ph_config.php");
$abfrage = "SELECT * from $tabelle_m WHERE klassen_name = $klassen_name";
$result = mysql_query($abfrage,$conn);
while ($row = mysql_fetch_array($result))
{
$klassen_name= $row["klassen_name"];
$name= $row["name"];
$lvl= $row["lvl"];
$skill= $row["skill"];
echo "<table width=95% border=0 align=center cellpadding=0 cellspacing=0>
<tr>
<td width=90><b>Name:</b></td>
<td width=502>$name</td>
</tr>
<tr>
<td><b>Level:</b></td>
<td>$lvl</td>
</tr>
<tr>
<td><b>Skillun:</b></td>
<td>$skill</td>
</tr>
</table>
";
}
?>
die datenbank tabellen
ph_klassen
klassen_name, varchar(20)
ph_member
klassen_name, varchar(20)
name, varchar(20)
lvl, varchar(2)
skill, varchar(20)
voodooman 19-04-2007, 14:55 wenn ich
$komm = "SELECT * from $tabelle_m WHERE klassen_name= $klassen_name";
echo "$komm";
mache steht im brouwser SELECT * from ph_member WHERE klassen_name=
Stelle jetzt bitte endlich dein error_reporting auf E_ALL, und mache eine vernünftige Fehlerbehandlung, wenn du Datenbankabfragen machst.
Und brich die überbreiten Codes um.
Steht alles in den Regeln (http://www.php-resource.de/forum/showthread.php?s=&threadid=50454).
XGremliN 19-04-2007, 15:04 und das sagt dir, dass $klassen_name leer ist
voodooman 19-04-2007, 15:21 <?
include("ph_config.php");
$abfrage = "SELECT * from $tabelle_m WHERE klassen_name = $klassen_name";
$result = mysql_query('$abfrage,$conn')or die(mysql_error().'<hr />'.'$abfrage,$conn'.'<hr />');
while ($row = mysql_fetch_array($result))
{
$klassen_name= $row["klassen_name"];
$name= $row["name"];
$lvl= $row["lvl"];
$skill= $row["skill"];
echo "<table width=95% border=0 align=center cellpadding=0 cellspacing=0>
<tr>
<td width=90><b>Name:</b></td>
<td width=502>$name</td>
</tr>
<tr>
<td><b>Level:</b></td>
<td>$lvl</td>
</tr>
<tr>
<td><b>Skillun:</b></td>
<td>$skill</td>
</tr>
</table>
";
}
?>
dann kommt
You have an error in your SQL syntax near '$abfrage,$conn' at line 1
$abfrage,$conn
du darfst auch mit hockkommata bei den sql-abfragen arbeiten, besonders wenn die where-bedingung eine zeichenkette ist.
gruß
peter
jahlives 19-04-2007, 16:53 ..mysql_query('$abfrage,$conn');
@Topicstarter
Informier dich mal über Strings und Variabeln ! Wenn schon Vars im String dann so
mysql_query("$abfrage","$conn");
//wobei es eigentlich so geht
mysql_query($abfrage,$conn);
voodooman 19-04-2007, 17:40 wie fürdet ihr den das script bauen `?
Original geschrieben von voodooman
wie fürdet ihr den das script bauen `?
Die Antwort, die dir vermutlich die meisten hier geben werden:
Vernünftig - nachdem wir uns ein halbwegs brauchbares Grundlagenwissen angeeignet haben.
jahlives 19-04-2007, 18:05 V.a. solltest du lernen vernünftig Debugging zu betreiben, Fehlermeldungen zu lesen und zu interpretieren.
You have an error in your SQL syntax near '$abfrage,$conn' at line 1
$abfrage,$conn
Also hier würdest du zum ersten Mal stutzig werden und dich fragen: Warum hat der verç*ç*%* Parser die Variabeln geprintet anstatt deren Werte. Diese Meldung kommt von deiner DB und nicht von PHP --> PHP hat seinen Job nicht gemacht.
Jetzt wirst du alle mysql_queries in deinem Code suchen und dir jene genauer anschauen, wo du die Vars $abfrage und $conn übergeben willst.
Dann, falls du es noch nicht gesehen hast könntest du ins Manual gehen und mal die Funktion mysql_query() suchen. Dort fändest du etwas wie
resource mysql_query ( string $Anfrage [, resource $Verbindungs-Kennung] )
Das erste ist der Rückgabewert, gefolgt vom Fkt Namen, dem erwarteten Typ des ersten Arguments (also ein String) und dem erwarteten Typ des zweiten Arguments (also eine mysql Ressource).
Das zweite Argument ist [optional]
Jetzt könntest du dich fragen: Warum übergebe ich meiner query eine Ressource als String ? Und warum setze ich Variabeln in Anführungszeichen ?
Du kannst an der Query, die du auf $abfrage speicherst, soviel ändern und optimieren wie du willst. mysql_query wird immer deinen String ausführen, wenn du einen solchen übergibst. Und dieser String heisst nunmal $abfrage,$conn.
Damit wären wir wieder bei der Fehlermeldung der DB...
Also immer error_reporting(E_ALL), bei mysql Fehlern die Meldung der DB und die Query ausgeben. Dann klappts auch mit PHP
Gruss
tobi
|
|