Warnung: file_put_contents(/home/www/web1/html/php_dev/test.txt) [function.file-put-contents]: failed to open stream: Permission denied in /home/www/web1/html/php_dev/sys/lib.activity.php (Zeile 58)
Brauche hilfe bei einen member script [Archiv] - PHP-Scripte PHP-Tutorials PHP-Jobs und vieles mehr
brauche Webseite ideal für Vereine und Firmen
- Ad -
php-resource




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).

 
newphp
19-04-2007, 01:50 
 
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

 
newphp
19-04-2007, 02:26 
 
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:

 
newphp
19-04-2007, 09:28 
 
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;

 
newphp
19-04-2007, 09:34 
 
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=

 
wahsaga
19-04-2007, 15:04 
 
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

 
Kropff
19-04-2007, 15:25 
 
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 `?

 
wahsaga
19-04-2007, 17:42 
 
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


Alle Zeitangaben in WEZ +2. Es ist jetzt 21:40 Uhr.