Phil: 2 Probleme mit PHP

Hallo.

Mich plagen 2 Probleme:
1.

Folgende Fehlermeldung:
Warning: mysql_result(): supplied argument is not a valid MySQL result resource in

Quelltext:
$query="SELECT COUNT(*) FROM $table WHERE user=$nick";
$dummy=mysql_query($query);
$num=mysql_result($dummy,0);

2.
Folgende Fehlermeldung:
Warning: Cannot modify header information - headers already sent by (output started at...//Zeile

Geschehnis:
$num=1;

Quelltext(_wesentlich_ verkürtzt):
if($num==0){
   if($pwd==$pwd2){
 header('Location: index.php?show=blank&action=regdone');
   } elseif ($pwd!=$pwd2) {
 header('Location: index.php?show=new&err=notsamepwd');//Zeile
   }
} else {
  header('Location: index.php?show=new&err=nameexists');
}

Problem 2 hab ich shcon so oft gehabt _und_ gelöst aber diesmal habe ich echt keine Ahnung. Ich hoffe ihr könnt mir helfen.

mfg

Phil

  1. hi,

    Folgende Fehlermeldung:
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in

    Schon hundert mal erwähnt: Nutze mysql_error() und mache auch noch zusätzlich eine Kontrollausgabe des Query-Strings, den du an die Datenbank übergibst - um herauszufinden, was MySQL daran nicht schmeckt.

    Folgende Fehlermeldung:
    Warning: Cannot modify header information - headers already sent by (output started at...//Zeile

    Problem 2 hab ich shcon so oft gehabt _und_ gelöst aber diesmal habe ich echt keine Ahnung.

    Was gibt's da schon groß Ahnung zu haben?

    Wenn dir die Ursache bekannt ist, und die Meldung dich auch noch freundlicherweise darauf hinweist, wo du ungeschickterweise bereits eine Ausgabe gemacht hast, obwohl du das nicht darfst - dann schau halt an der Stelle nach, was da die Ausgabe erzeugt. Dass auch Leerzeilen, sonstiger White Space etc. außerhalb des Parserbereiches bereits eine Ausgabe darstellen, sollte ja hoffentlich auch klar sein.

    gruß,
    wahsaga

    --
    /voodoo.css:
    #GeorgeWBush { position:absolute; bottom:-6ft; }
    1. Hallo wahsaga,

      nur zur Vervollständigung:

      Schon hundert mal erwähnt: Nutze mysql_error() und mache auch noch zusätzlich eine Kontrollausgabe des Query-Strings, den du an die Datenbank übergibst - um herauszufinden, was MySQL daran nicht schmeckt.

      $query="SELECT COUNT(*) FROM $table WHERE user=$nick";

      schon 99-mal erwähnt: Daten, die von außen kommen - und $nick deutet ganz gewaltig darauf hin - sind durch mysql_real_escape_string() zu entschärfen, gegebenenfalls muss vorher in Abhängigkeit von Magic Quotes stripslashes() angewandt werden.

      So, jetzt ist das auch hundertmal erwähnt :-)
      Wie schön wäre es, wir hätten bereits PHP6 als Standard - und keine Magic Quotes mehr; ich sparte mir den zweiten Teil meiner Antwort.

      Freundliche Grüße

      Vinzenz

  2. Hallo Phil,

    Mich plagen 2 Probleme:

    ich komme nur auf eines :-) Ist das nicht ein Trost?

    Quelltext:
    $query="SELECT COUNT(*) FROM $table WHERE user=$nick";
    $dummy=mysql_query($query);
    $num=mysql_result($dummy,0);

    produziert aus Gründen, die Du mittels der Tipps von wahsaga herausfinden solltest

    Folgende Fehlermeldung:
    Warning: mysql_result(): supplied argument is not a valid MySQL result resource in

    Ist Dir klar, was das bedeutet? Es wird eine Fehlermeldung an den Browser geschickt. Damit wird eine Ausgabe erzeugt. Damit diese gemacht werden kann, werden dem Browser Header geschickt - und da Du im weiteren Skriptverlauf in _jedem_ Fall versuchst, weitere Header zu versenden, ...

    if($num==0){
       if($pwd==$pwd2){
    header('Location: index.php?show=blank&action=regdone');
       } elseif ($pwd!=$pwd2) {
    header('Location: index.php?show=new&err=notsamepwd');//Zeile
       }
    } else {
      header('Location: index.php?show=new&err=nameexists');
    }

    ... muss bei Deinem Code ganz zwangsläufig

    Folgende Fehlermeldung:
    Warning: Cannot modify header information - headers already sent by (output started at...//Zeile

    kommen. Wie sollte es anders sein?
    Wie wahsaga Dir bereits gesagt hat: Vermeide jede Ausgabe. In Deinem Fall heißt dies: Eliminiere den Grund für die Warnmeldung. Es bedeutet aber auch: Rechne damit, dass MySQL Dir eine Fehlermeldung sendet. Behandele diesen Fall vernünftig.

    Freundliche Grüße

    Vinzenz

  3. Hallo.

    Okay das Header Problem ist behoben. War an einer falschen Stelle.
    Aber ich krieg eifnach folgendes nicht gebacken ich will einfach nur folgendes:

    Durchsuche eien Tabelle nach wert1 in Spalte user und wert2 in spalte email. Falls wert1 und wert2 nicht vorhanden sind, tue das.

    Egal was ich probiere es funktioniert nicht. Obwohl es doch eigendl so einfach ist -.-* ich weiß nicht was mit mri los ist aber ich hänge seit _3_ Stunden schon mind. an diesem Problem. Mir ist jetzt alles Recht von mir aus auch ein fertiger Quellcode.

    mfg

    Phil

    1. hi,

      Aber ich krieg eifnach folgendes nicht gebacken ich will einfach nur folgendes:

      Durchsuche eien Tabelle nach wert1 in Spalte user und wert2 in spalte email.

      Siples SELECT-Statement ... wie sah dein Versuch aus?

      Falls wert1 und wert2 nicht vorhanden sind, tue das.

      Tue was?

      Egal was ich probiere es funktioniert nicht. Obwohl es doch eigendl so einfach ist -.-* ich weiß nicht was mit mri los ist aber ich hänge seit _3_ Stunden schon mind. an diesem Problem.

      Jammer, jammer ...

      Mir ist jetzt alles Recht von mir aus auch ein fertiger Quellcode.

      Bekommst du aber nicht.
      Wir _helfen_ dir dabei, dein Problem zu lösen, wenn du selber mitarbeitest - aber wir machen nicht deine Arbeit _für_ dich.

      gruß,
      wahsaga

      --
      /voodoo.css:
      #GeorgeWBush { position:absolute; bottom:-6ft; }
      1. hi,

        Aber ich krieg eifnach folgendes nicht gebacken ich will einfach nur folgendes:

        Durchsuche eien Tabelle nach wert1 in Spalte user und wert2 in spalte email.

        Siples SELECT-Statement ... wie sah dein Versuch aus?

        $query="SELECT COUNT(user) FROM table1, table2, table3 WHERE user LIKE '$nick'";

        $query2="SELECT COUNT(email) FROM table1, table2, table3 WHERE user LIKE '$email'";

        $dummy=mysql_query($query,$c) or die (mysql_error());
        $num=mysql_result($dummy,0) or die (mysql_error());

        $dummy2=mysql_query($query,$c) or die (mysql_error());
        $mailer=mysql_result($dummy2,0) or die (mysql_error());

        if($mailer==false){
          if($num==false){
             header("Location: index.php");
        }}

        Falls wert1 und wert2 nicht vorhanden sind, tue das.

        Tue was?

        Leite den Brwoser weiter zu index.php

        Egal was ich probiere es funktioniert nicht. Obwohl es doch eigendl so einfach ist -.-* ich weiß nicht was mit mri los ist aber ich hänge seit _3_ Stunden schon mind. an diesem Problem.

        Jammer, jammer ...

        Muss ma sein^^.

        Mir ist jetzt alles Recht von mir aus auch ein fertiger Quellcode.

        Bekommst du aber nicht.
        Wir _helfen_ dir dabei, dein Problem zu lösen, wenn du selber mitarbeitest - aber wir machen nicht deine Arbeit _für_ dich.

        War mir klar. Normalerweise will ich das auch _garnicht_ dafür ist der Reitz zu groß was neues zu lernen. Aber gestern Abend sah ich da keinen Mut mehr bzw, Motivation.

        gruß,

        Phil

        1. hi,

          $query="SELECT COUNT(user) FROM table1, table2, table3 WHERE user LIKE '$nick'";

          $query2="SELECT COUNT(email) FROM table1, table2, table3 WHERE user LIKE '$email'";

          Wo kommen $nick und $email her (bzw. wo sollen sie herkommen)? Hast du register_blogals=off berücksichtigt?

          Wenn sie von extern kommen - dann sichere sie gegen SQL Injection ab, mysql_real_escape_string.

          Was für einen Vergleich willst du machen, auf exakte Gleichheit? Dann nutze nicht LIKE, sondern =.
          Oder nur auf Vorkommen der Zeichenkette im Feldinhalt? Dann ergibt LIKE ohne Wildcard-Zeichen wie % aber wenig Sinn.

          Und warum machst du eigentlich zwei separate Abfragen - warum fragst du beide Werte nicht in einer Query ab?

          gruß,
          wahsaga

          --
          /voodoo.css:
          #GeorgeWBush { position:absolute; bottom:-6ft; }