Was ist da falsch?

Wir sammeln alle Infos der Bonusepisode von Pokémon Karmesin und Purpur für euch!

Zu der Infoseite von „Die Mo-Mo-Manie“
  • Hallo,
    ich habe Probleme mit dem Skript von phenoxmon - Er hat nicht immer Zeit und ich glaube er weis auch nicht immer weiter. Deswegen poste ich mal hier. Also mein Datenbank SQL-Code sieht so aus:

    Code
    CREATE TABLE `comunity` (  `id` int(8) unsigned NOT NULL auto_increment,  `email` varchar(25) collate latin1_german2_ci NOT NULL,  `passwort` varchar(150) collate latin1_german2_ci NOT NULL,  `activationkey` varchar(150) collate latin1_german2_ci NOT NULL,  `aktiv` tinyint(1) unsigned NOT NULL,  `day` int(11) unsigned NOT NULL,  `nickname` varchar(150) collate latin1_german2_ci NOT NULL,  `icq` varchar(30) collate latin1_german2_ci NOT NULL,  `xfire` varchar(30) collate latin1_german2_ci NOT NULL,  `avatar` varchar(10) collate latin1_german2_ci NOT NULL,  `msn` varchar(30) collate latin1_german2_ci NOT NULL,  `yahoo` varchar(30) collate latin1_german2_ci NOT NULL,  `skype` varchar(30) collate latin1_german2_ci NOT NULL,  `geb1` varchar(30) collate latin1_german2_ci NOT NULL,  `geb2` varchar(30) collate latin1_german2_ci NOT NULL,  `geb3` varchar(30) collate latin1_german2_ci NOT NULL,  `regdatum` varchar(150) collate latin1_german2_ci NOT NULL,  `raenge` varchar(150) collate latin1_german2_ci NOT NULL,  PRIMARY KEY  (`id`)) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COLLATE=latin1_german2_ci AUTO_INCREMENT=31 ;


    activate.html

    HTML
    <form action="activate-absenden.php" method="get"> Dein Nickname: <input type="text" name="nickname"><br /> Dein Aktivierungscode: <input type="text" name="aktivierungscode"><br /> <input type="submit" value="Absenden"></form>


    activate-absenden.php

    PHP
    <?php include 'db-config.php';  $nickname = $_GET['nickname']; $aktivierungscode = $_GET['aktivierungscode'];  $sql = "SELECT activationkey * FROM comunity WHERE nickname LIKE ".$nickname.";";  $altcode = ""; while($row = mysql_fetch_array($sql)) {echo mysql_error(); $altcode = $row['activationkey']; } //Vergleichen if($altcode == $_GET['aktivierungscode']) { $sql2 = "UPDATE code SET aktiv = 1 WHERE nickname = ".$nickname.";"; }?>


    Fehlermeldung sieht wie folgt aus:

    Code
    Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /is/htdocs/wp1122503_HO9IHST9QN/www/main/comunity/activate-absenden.php on line 11


    Ich brauch euch wahrscheinlich nochmal aber vorher probiere ich dann noch rum bevor ich poste :thumbup:

  • Hättest du bis morgen gewartet ...
    Ich glaube den fehler gefunden zu haben^^
    Hab die mysql_querry's vergessen^^ liegt daran das ich das nie auprobiert habe^^

  • Ähm, dass kannst du jetzt nicht wissen aber nach der Installation, hat man einen Link per Mail bekommen. Sollte der Link nicht gehen, ist das Formular da. Keine Sorge, ich poste schon richtig. Wer trozdem noch nett wenn ihr mir helfen könnt. Soweit bin ich ja noch nicht aber bis dahin schonmal danke (das es überhaupt zu dem Skript kam) :thumbup:

  • Er sagt dir doch, was falsch ist. Es handelt sich um keinen gültigen SQL result.


    Dein sql-Result ist in der Variable $sql drin. Also baust du irgendwo dazwischen echo $sql und schaust dir das an. Wenn da nur mist steht oder nur null ist dein Statement gescheitert. Und das könnte daran liegen, da du ein Asterisk da völlig überflüssig eingebaut hast.


    Versuche einfach mal das ganze auszuführen, ohne nach "activationkey" noch ein "*" gesetzt zu haben :)

  • Wenn ich mir die Nachricht ausgeben lasse mit

    PHP
    <?php echo "$sql";?>


    Kommt das hier:

    Code
    Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /is/htdocs/wp1122503_HO9IHST9QN/www/main/comunity/activate-absenden.php on line 12
     SELECT activationkey * FROM comunity WHERE nickname LIKE ;


    Eddit: Auch wenne ich das * nach activationkey weg lasse, bleibt die selbe Meldung 8|

  • Ja - schau dir das mal bitte genauer an. Dort steht:


    SQL
    SELECT activationkey * FROM comunity WHERE nickname LIKE ;


    Und das kann ja nicht funktionieren, da nach LIKE nichts mehr kommt, außer einem leerzeichen. Also ist offenbar in $nickname nichts drin.


    Ich hatte mich oben übrigens vertan^^ Eigentlich wollte ich, dass du dir $query mal ausgeben lässt :D Aber ich glaube, mit $sql haben wir den Fehler auch gefunden.


    Also bitte beides einmal umsetzen, so dass dort steht:


    SQL
    SELECT activationkey FROM comunity WHERE nickname LIKE Vesprit;


    Oder eben irgend ein anderer Nickname.

  • PHP
    <?php include 'db-config.php';  $nickname = $_GET['nickname']; $aktivierungscode = $_GET['aktivierungscode'];  $sql = "SELECT activationkey FROM comunity WHERE nickname LIKE Vesprit";$querry = mysql_query($sql);  $altcode = ""; while($row = mysql_fetch_array($sql)) {echo mysql_error(); $altcode = $row['activationkey']; } //Vergleichen if($altcode == $_GET['aktivierungscode']) { $sql2 = "UPDATE code SET aktiv = 1 WHERE nickname = ".$nickname.";";$querry2 =  mysql_query($sql2); }?>


    Code
    Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /is/htdocs/wp1122503_HO9IHST9QN/www/main/comunity/activate-absenden.php on line 12


    Was jetzt?


    Oh, entschuldigung für Doppelpost. Hab ich erst jetzt bemerkt. :S

  • Oh man... also nimm mir das jetzt bitte nicht böse. Aber du solltest schon bisschen wissen, was du da machst und dich mit SQL auch auskennen. Bei deinem Query fehlt am Ende ein Semikolon :whistling:


    Darüber hinaus solltest du trotzdem mal prüfen, warum $nickname eine leere Zeichenketten enthält. Schließlich willst du ja nicht immer nur den Nicknamen Vesprit testen ;)

  • Entschuldigung für mein Unwissen blos hab cih das Skript nunmal nicht geschrieben und kenn mich leider nicht aus!
    Jetzt komt die Meldung:

    Code
    Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /is/htdocs/wp1122503_HO9IHST9QN/www/main/comunity/activate-absenden.php on line 12
     Unknown column 'Vesprit' in 'where clause'
  • In diesem Fall ist die Verwendung von LIKE auch nicht sinnvoll, da LIKE ein Muster erwartet. So etwas wie "V_____t", wenn die Nickname mit V anfangen soll, mit t enden soll und 5 Buchstaben dazwischen sein sollen. In deinem Verwendungszweck reicht ein einfaches =.


    Und nicht vergessen, dass du den Nickname im SQL-Syntax in Anführungszeichen setzen musst. Das ist hierbei auch der Fehler.


    Schau dir erstmal im Internet bisschen was an, bzw. mach deinen SQL-Client auf und probiere die Befehle ein bisschen aus. Denn wenn du schon solche Schwierigkeiten mit Syntax hast, befürchte ich, wird es dir nicht lange Spaß machen :(


    Aber du schaffst das schon :)


    EDIT:
    Bevor es wieder nicht klappt, hier der Code, der funktionieren sollte:



    Wichtig ist, dass $nickname auch richtig eingelesen wird und auch das enthält, was es enthalten soll.

  • Mir macht das programmieren Spaß. Ist ja wohl nicht so sclimm wenn cih jetzt schon so viel mit MySQL geschafft habe blos das nicht...

    Code
    Warning:  mysql_fetch_array(): supplied argument is not a valid MySQL result resource in /is/htdocs/wp1122503_HO9IHST9QN/www/main/comunity/activate-absenden.php on line 12
  • Zitat

    Wichtig ist, dass $nickname auch richtig eingelesen wird und auch das enthält, was es enthalten soll.


    Ist das der Fall?


    Btw.: wieso steht bei dir unter UPDATE die Tabelle "code"? Ich dachte, sie heißt "community"?


    ACH LOL!! MIst! Das kommt davon, wenn man Code nicht selber schreibt und fremden Code beachtet. Da hab ich jetzt Tomaten auf den Augen gehabt :D


    Ich weiß jetzt, wie ich darauf kam - gestern - dir $sql ausgeben zu lassen. Weil du das hier stehen hast:


    PHP
    mysql_fetch_array($sql)


    Aber $sql ist ja gar nicht dein result! Dein result ist ja in $query, also muss da auch stehen


    PHP
    mysql_fetch_array($query)


    Ansonsten so, wie es auch in dem Post von mir oben steht.