Poblem mit Modul

  • PHP

Es gibt 28 Antworten in diesem Thema. Der letzte Beitrag () ist von Patrick1993.

    Poblem mit Modul

    Hallo Community,
    Ich bin gerade dabei für eine Webseie (just4fun) ein paar module zu schreiben.
    Soweit sogut alles funktioniert.
    Doch wenn ich die Nachrichten abrufen will, bekomme ich folgende meldung:

    Notice: Trying to get property of non-object in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/SocialNetwork/module/message/index.php on line 8

    Das Script für das Modul:

    PHP-Quellcode

    1. <?php
    2. include('config.php');
    3. $username = $_GET['username'];
    4. //Datenbank Abfragen
    5. $abfrage = "SELECT * FROM Nachrichten WHERE Benutzername LIKE '$username' LIMIT '1'";
    6. $ausgabe = mysql_query($abfrage);
    7. //Ausgabe der Nachricht
    8. echo $ausgabe -> Nachricht;
    9. ?>


    Hoffe ihr könnt mir weiterhelfen

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „nikeee13“ ()

    PHP-Quellcode

    1. <?php
    2. include('config.php');
    3. $username = $_GET['username'];
    4. //Datenbank Abfragen
    5. $abfrage = "SELECT * FROM Nachrichten WHERE Benutzername LIKE '$username' LIMIT '1'";
    6. $ausgabe = mysql_query($abfrage);
    7. //Ausgabe der Nachricht
    8. $retvar = mysql_fetch_object($ausgabe);
    9. echo $retvar->Nachricht; // Oder auch als array zurückgeben lassen mysql_fetch_array & $retvar[0];
    10. ?>


    Wäre das nicht so korrekt?
    //Edit, hatte mich verlesen, ist jetzt berichtigt

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lawliet“ ()

    PHP-Quellcode

    1. <?php
    2. include('config.php');
    3. $username = $_GET['username'];
    4. //Datenbank Abfragen
    5. $abfrage = "SELECT * FROM Nachrichten WHERE Benutzername LIKE '$username' LIMIT '1'";
    6. $ausgabe = mysql_query($abfrage);
    7. //Ausgabe der Nachricht
    8. while($row = mysql_fetch_object($ausgabe))
    9. {
    10. echo "$row->Nachricht <br>";
    11. }
    12. ?>


    So sollte es gehen doch dort bekommt eine meldung bei mysql_fetch_object:
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/SocialNetwork/module/message/index.php on line 8

    Finde dort irgentwie den fehler nich

    Warum fragst du eigentlich in der Query mittels LIKE?
    "SELECT * FROM Nachrichten WHERE Benutzername LIKE '$username' LIMIT '1'"
    Wenn es doch sowiso nur einen Benutzer gibt kannst du doch auch folgendes nutzen

    "SELECT * FROM Nachrichten WHERE Benutzername = '$username' LIMIT 1"

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Lawliet“ ()

    Soweit gehts nur bekomme ich nun die Nachricht nicht angezeigt.
    Die Nachricht ist in der Datenbank eingetragen

    Die Fehlermeldung ist verschwunden?

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL) // Mal schauen ob auch jeder Fehler gelistet wurde.
    3. include('config.php');
    4. $username = $_GET['username'];
    5. //Datenbank Abfragen
    6. $abfrage = "SELECT * FROM Nachrichten WHERE Benutzername = '$username' LIMIT '1'";
    7. $ausgabe = mysql_query($abfrage);
    8. $retval = mysql_fetch_array($ausgabe);
    9. echo $retval['Nachricht'];


    So habe ich das bei einem meiner letzen Projekte gemacht. Er sollte beim ersten Wert beginnen, da du sowieso ein Limit gesetzt hast
    kommt da auch nichts mehr.

    //Edit, jetzt hatte ich den alten Code kopiert... schon zu spät :sleeping:

    LG.L

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Lawliet“ ()

    nun gehts fast.
    Nun motzt er bei der include:
    Parse error: syntax error, unexpected T_INCLUDE in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/SocialNetwork/module/message/index.php on line 3

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL) // Mal schauen ob auch jeder Fehler gelistet wurde.
    3. include ('config.php');
    4. $username = $_GET['username'];
    5. //Datenbank Abfragen
    6. $abfrage = "SELECT * FROM Nachrichten WHERE Benutzername LIKE '$username' LIMIT '1'";
    7. $ausgabe = mysql_query($abfrage);
    8. $retval = mysql_fetch_array($ausgabe);
    9. echo $retval['Nachricht'];
    10. ?>

    Das mit den Semikolons hatten wir doch schon mal ... in Zeile 2 fehlt naemlich genau ein solches.
    Das hat dir der PHP-Interpreter aber eigentlich praezise mitgeteilt.
    Tipp: Wenn du etwas von wegen "unexpected" liest, dann schau, was vor der Position des Fehlers ist.

    Außerdem: Wieso verwendest du immer noch "LIKE"? Wenn du Werte auf exakte Uebereinstimmung ueberpruefen willst, nimm den =-Operator und nichts anderes.
    Sorry, bin schon im Schlaf, das hat sich auf die Vorzeile bezogen ";" vergessen.

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL); // Mal schauen ob auch jeder Fehler gelistet wurde.
    3. include('config.php');
    4. $username = $_GET['username'];
    5. //Datenbank Abfragen
    6. $abfrage = "SELECT * FROM Nachrichten WHERE Benutzername = '$username' LIMIT '1'";
    7. $ausgabe = mysql_query($abfrage);
    8. $retval = mysql_fetch_array($ausgabe);
    9. echo $retval['Nachricht'];
    10. ?>
    @haiyyu :
    Ich weiß. Das mit dem Semikolons hab ich mal wieder.
    Das mit dem Limit ist weil ich immer den letzten Eintrag haben will.


    Wenn ich Limit = '1' schreibe bekomme ich:
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/SocialNetwork/module/message/index.php on line 8


    Und wenn ich es leer lasse kommt garnichts

    Hallo,

    PHP-Quellcode

    1. $username = $_GET['username'];
    2. //Datenbank Abfragen
    3. $abfrage = "SELECT * FROM Nachrichten WHERE Benutzername = '$username' LIMIT '1'";




    Das kann grob unlustig, damit kann ein user per GET dein SQL query verändern!


    teste mal:

    PHP-Quellcode

    1. $sql = mysql_query(sprintf("SELECT * FROM Nachrichten WHERE Benutzername = '%s' LIMIT 1",mysql_real_escape_string($_GET["username"]));
    2. print_r($sql);


    Mysql connect und so hast du vorher drin oder?

    Patrick1993 schrieb:

    @haiyyu :
    Ich weiß. Das mit dem Semikolons hab ich mal wieder.
    Das mit dem Limit ist weil ich immer den letzten Eintrag haben will.


    Wenn ich Limit = '1' schreibe bekomme ich:
    Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/SocialNetwork/module/message/index.php on line 8


    Und wenn ich es leer lasse kommt garnichts


    Lass mal die Hochstriche von der 1 weg. Kann sein das es dadran liegt ;) Sonst noch Informationen zum LIMIT: php.about.com/od/mysqlcommands/g/Limit_sql.htm

    Zaziki schrieb:

    Lass mal die Hochstriche von der 1 weg.

    Wie schon geschrieben. Wenn ich die Hochstriche oder die Limit angabe weg lasse, bleibt alles leer obwohl die Nachricht in der DB steht

    Hallo,

    also ich habe es in meiner Homepage so:
    (bei mir klappt es)

    PHP-Quellcode

    1. $dbhost = "localhost";
    2. $dbname = "";
    3. $dbuser = "";
    4. $dbpass = "";
    5. mysql_connect($dbhost, $dbuser, $dbpass)or die("Could not connect: ".mysql_error());
    6. $verb = mysql_select_db($dbname);
    7. $sql = "SELECT * FROM Nachrichten WHERE Benutzername='".$username."' LIMIT 1";
    8. $quer = mysql_query($sql) or die(mysql_error());
    9. $row = mysql_fetch_object($quer);
    10. $nachricht = $row->nachricht;

    Ich habs mal versucht etwas zu verändern, damit es für dich besser passt.

    Wenn es nicht funktioniert naja probieren wir das Problem weiter zu lösen :)

    Grüße GMTechnologie
    umschreiben schön und gut jedoch kommt in Zeile 9 ein fehler:

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL); // Mal schauen ob auch jeder Fehler gelistet wurde.
    3. include('config.php');
    4. $username = $_GET['username'];
    5. $sql = "SELECT * FROM Nachrichten WHERE Benutzername='".$username."' LIMIT 1";
    6. $quer = mysql_query($sql) or die(mysql_error());
    7. $row = mysql_fetch_object($quer);
    8. $nachricht = $row->Nachricht; //Fehlerzeile
    9. echo $nachricht;
    10. ?>


    *Edit*

    Notice: Trying to get property of non-object in /var/www/vhosts/funkspiel-bos-funk.de/subdomains/test/httpdocs/SocialNetwork/module/message/index.php on line 9

    Sry Patrick, aber du versucht was mit biegen und brechen auf die Beine zu stellen und fails gänzlich. Du hast absolut keine Ahnung von PHP noch SQL. Da können WIR dir auch nicht mehr helfen. Du hast nun so viel Hilfestellung bekommen und kommst dennoch ziemlich patzig rüber, als ob WIR zu doof wären DIR anständigne Code vorzusetzten.

    Streng dein Kopf an und versuche mal selbst dein PHP Script zu debuggen. Als Hilfe kann man da echo Ausgaben oder via print_r() sich ein Array/Object ausgeben lassen und die Struktur sehen.
    Sry Dodo ich bin halt kein Vollprofi in sachen PHP wie du es dir vielleicht erhoffen tust.
    Aber wenns dir besser gefällt kann ich auch hier den Post als Erledigt Makieren und mir woanders Hilfe suchen.

    BTT:
    Script Bearbeitet / Struktur ausgeben lassen:

    PHP-Quellcode

    1. <?php
    2. error_reporting(E_ALL); // Mal schauen ob auch jeder Fehler gelistet wurde.
    3. include('config.php');
    4. $username = $_GET['username'];
    5. $sql = "SELECT * FROM Nachrichten WHERE Benutzername='".$username."' LIMIT 1";
    6. print_r($sql); //Zeile Hinzugefügt
    7. $quer = mysql_query($sql) or die(mysql_error());
    8. $row = mysql_fetch_object($quer);
    9. $nachricht = $row->Nachricht;
    10. echo $nachricht;
    11. ?>


    Struktur:
    SELECT * FROM Nachrichten WHERE Benutzername='messages' LIMIT 1

    der schreibt mir als usernamen messages was er nicht soll.
    Der username soll aus der community.php entnommen werden (liegt nicht im gleichen ordner oder in der gleichen datei)

    Du musst auch kein Vollprofi sein, das verlangt niemand, aber einfach mal mit der Materie beschäftigen, selbiges wie bei VB, da nervts genauso wenn ein Noob ankommt sich Snippes zusammen kopiert und dann hier mäcker wieso es nicht funktioniert und eine Komplettlösung haben will.


    Wie soll der Username aus der community.php entnommen werden? Du holst dir den Usernamen gerade über die URL.

    Quellcode

    1. server.de/messages.php?username=Dodo