3 Fragen bezüglich PHP + MySQL

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • 3 Fragen bezüglich PHP + MySQL

    Hallo,
    ich habe 3 Probleme in PHP + MySQL ich hoffe ihr könnt mir folgen und helfen (Danke im Voraus).

    Problem 1:
    Ich möchte die Anmeldungen auf meiner Seite via Datensatzzählung rausfinden.
    Tabelle: Member
    Feld: Nickname
    Leider kommt bei mir immer nur die Zahl "1" raus - was ist falsch an meinem Code?
    PHP-Code:
    # ..Datenbankverbindung..

    $sql "SELECT Nickname, count(*) as Nickname FROM Member GROUP BY Nickname";
    $result mysql_query ($sql);

    if (
    mysql_num_rows ($result) > 0)
    {
      
    $data mysql_fetch_array ($result);
      
    $statistik_anmeldungen $data["Nickname"]; # Variable $statistik_anmeldungen enthält immer die Zahl "1"
    }
    ?> 
    Problem 2:
    Die User sollen bei mir die Möglichkeit haben über eine Übersicht alle
    Benutzeraccounts zu sehen. Möglich ist dies durch Links die Über den
    PHP Code stehen, Beispiel: <a href="index.php?page=memberliste&anzeige=B">B</a>
    durch klicken werden alle Benutzer mit dem Anfangsbuchstaben "B" angezeigt.
    Dies klappt auch - mein Problem ist nur das ich es nicht schaffe, dass wenn
    die Tabelle Member nach Nicknames durchsucht / angezeigt wird
    noch eine andere Tabelle namens Profil durchsucht / angezeigt wird.
    Dies brauche ich deswegen weil die Daten: Clanname und Registriert sich
    in der Tabelle Profil befinden.
    PHP-Code:
    # ..Datenbankverbindung..

    <?php
    $buchstabe 
    $_GET['anzeige'];
    if (isset (
    $_GET['anzeige'])) {

    $sql "SELECT * FROM Member WHERE Nickname LIKE '$buchstabe%'" 
    AND "SELECT Clanname, Registriert FROM Profil WHERE 1";
    $result mysql_query ($sql);

      if(
    mysql_num_rows($result)) {
        while(
    $row mysql_fetch_assoc($result)) {
        echo 
    "<tr bgcolor=\"#909090\">
        <td width=\"40\" align=\"center\">
          <b>"
    .$row['Id']."</b>
        </td>
        <td width=\"130\" align=\"center\">
          <b>"
    .$row['Nickname']."</b>
        </td>
        <td width=\"190\" align=\"center\">
          <b>"
    .$row['Clanname']."</b>
        </td>
        <td width=\"100\" align=\"center\">
          <b>"
    .$row['Registriert']."</b>
        </td>
      </tr>"
    ;
        }
      }
    }
    ?>
    Problem 3:
    Wenn ich eine Tabelle bzw. ein Feld in MySQL auf "UNIQUE" gesetzt habe wie bzw. wo
    muss ich mysql_error() benutzen dass wenn z.B. bei eMails das "UNIQUE" eingreift
    (weil Datensatz schon exisitiert) eine andere Fehlermeldung erscheint als bei Nickname?


    Bye,
    SilverVegeto

  • #2
    Problem1:

    Count(*) zählt dir alle Datensätze bei denen der Nickname = $var ist und da du bestimmt keine doppelten Nicknamen erlaubst, wird es auch immer nur einen geben

    Problem2:
    JOIN Befehl (wenn ich die Frage richtig verstehe)

    Problem3:
    mysql_query($sql)or die(mysql_error()); // muss nicht unbedingt die sein
    Für Rechtschreibfehler übernehme ich keine Haftung!

    Kommentar


    • #3
      @Damian1984: Danke für die schnelle Antwort. Hab jedoch dazu noch ein paar Fragen.

      Problem 1: Wie muss ich den Countscript dann umschreiben damit ich das Ergebnis erziele, dass alle Nicknames in der Tabelle gezählt werden?

      Problem 2: Also funktioniert das wenn ich statt:
      PHP-Code:
      $sql "SELECT * FROM Member WHERE Nickname LIKE '$buchstabe%'" 
      AND "SELECT Clanname, Registriert FROM Profil WHERE 1"
      das hier benutze?
      PHP-Code:
      $sql "SELECT * FROM Member WHERE Nickname LIKE '$buchstabe%'" 
      JOIN "SELECT Clanname, Registriert FROM Profil WHERE 1"

      Kommentar


      • #4
        Woher hast du eigentlich die Verknüpfung von Zeickenketten (in deinem Beispiel SQL-Queries) mittels logischer Operatoren genommen?
        Lies dir mal bitte hier durch, wozu &&, ||, AND und OR gut sind.

        Und mit JOIN meint damian SQLs JOIN. Mal die Forum-Suche benutzen und/ oder Google oder das lesen.
        Nieder mit der Camel Case-Konvention

        Kommentar


        • #5
          und was ist wegen count?

          Kommentar


          • #6
            Original geschrieben von SilverVegeto
            und was ist wegen count?
            Wenn du nicht die Anzahlen gruppierter Untermengen ermitteln willst, dann gruppiere nicht.


            (Nickname und COUNT gleichzeitig auslesen zu wollen, ist dann natürlich blödsinnig.)
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Zu Deiner Frage 1)

              Wenn Du nur die Anzahl der Datensätze brauchst:
              PHP-Code:
              $sql "SELECT nickname FROM tabelle WHERE 1";
              $res mysql_query($sql);
              $anzahl mysql_num_rows($res); 
              Gruss,
              Stefan

              Kommentar


              • #8
                thX Beyond und wahsaga.

                Also ich bin gerade dabei mein Problem mit dem JOIN-Befehl zu beheben. Allerdings wird jetzt nur ein Datensatz angezeigt auch wenn mehr User mit dem Buchstaben B anfangen. Was muss ich ändern damit es funktioniert? Außerdem glaub ich fehlt noch etwas im Code, denn ich will die ID aus der Tabelle Member lesen und noch eine Tabelle mit einfügen Profil.Registriert habt ihr eine Idee?
                PHP-Code:
                <?php
                $buchstabe 
                $_GET['anzeige'];
                if (isset (
                $_GET['anzeige'])) {

                $sql "SELECT Member.Nickname, Profil.Clanname from Member
                 inner join Profil on Member.id = Profil.id WHERE Nickname LIKE '
                $buchstabe%'";
                $result mysql_query ($sql);

                  if(
                mysql_num_rows($result)) {
                    while(
                $row mysql_fetch_assoc($result)) {
                    
                // Alle Einträge auflisten
                    
                echo "  <tr bgcolor=\"#909090\">
                    <td width=\"40\">
                      <b>"
                .$row['Id']."</b>
                    </td>
                    <td width=\"130\">
                      <b>"
                .$row['Nickname']."</b>
                    </td>
                    <td width=\"190\">
                      <b>"
                .$row['Clanname']."</b>
                    </td>
                    <td width=\"100\">
                      <b>"
                .$row['Registriert']."</b>
                    </td>
                  </tr>"
                ;
                    }
                  }
                }
                ?>

                Kommentar


                • #9
                  Original geschrieben von SilverVegeto
                  thX Beyond und wahsaga.

                  Np


                  PHP-Code:
                  <?php
                  $buchstabe 
                  $_GET['anzeige'];
                  if (isset (
                  $_GET['anzeige'])) {

                  $sql "SELECT Member.id, Member.Registriert, Member.Nickname, Profil.Clanname from Member
                   inner join Profil on Member.id = Profil.id WHERE Nickname LIKE '"
                  .$buchstabe."%'";  // mehr Felder selektiert und $buchstabe aus String - auch wenns vorher passen sollte
                  $result mysql_query ($sql);

                    if(
                  mysql_num_rows($result)) 
                     {
                      while(
                  $row mysql_fetch_array($result))  //Neu: ..._fetch_arry (ASSOC ist default)
                     
                  {
                      
                  // Alle Einträge auflisten
                      
                  echo "  <tr bgcolor=\"#909090\">
                      <td width=\"40\">
                        <b>"
                  .$row['id']."</b>"//war vorher nicht im SELECT
                      
                  "</td>
                      <td width=\"130\">
                        <b>"
                  .$row['Nickname']."</b>
                      </td>
                      <td width=\"190\">
                        <b>"
                  .$row['Clanname']."</b>
                      </td>
                      <td width=\"100\">
                        <b>"
                  .$row['Registriert']."</b>"// war auch nicht im SELECT
                      
                  "</td>
                    </tr>"
                  ;
                      }
                    }
                  }
                  ?>
                  [/B]
                  Ich habe meine Änderungen kommentiert

                  Du kannst auch immer "SELECT * FROM tabelle" machen für alle Felder. Allerdings ist es bei wenigen Feldern aus Performancegruenden schon nur die benötigten anzugeben.

                  Schleifen etc. würde ich der Übersichtlichkeit halber immer
                  so darstellen:
                  PHP-Code:
                           if ($res =1)
                             {
                             
                  $res $res-1
                             
                  if ($res =0)
                                {
                                echo 
                  "nun 0";
                                }
                             } 
                  Das mit dem Buchstaben sollte schon so passen. Ich habe die
                  variable aber mal anders angegeben.
                  Gruss,
                  Stefan

                  Kommentar


                  • #10
                    Ich würd wohl ma eher sagen

                    PHP-Code:
                    if ($res == 1)
                    {
                      
                    $res $res 1;
                      if (
                    $res == 0)
                      {
                        echo 
                    "nun 0";
                      }

                    oder

                    PHP-Code:
                    if ($res == 1) {
                      
                    $res $res 1;
                      if (
                    $res == 0) {
                        echo 
                    "nun 0";
                      }

                    oder ?
                    Nur wenige wissen, wieviel man wissen muss, um zu wissen, wie wenig man weiß.

                    Kommentar


                    • #11
                      man kommt nur in die If Anweisung, wenn $res == 1 ist, verstehe ich das richtig?
                      dann kann $res - 1 auch nur automatisch immer 0 ergeben?!!!!

                      Wieso dann noch ne If Anweisung?
                      Für Rechtschreibfehler übernehme ich keine Haftung!

                      Kommentar


                      • #12
                        Hi,

                        OMG

                        das Beispiel mit der $res=1 Schleife sollte
                        NUR die Übersichtlichkeit mittels Zeilenvorschüben
                        und Umbrüchen darstellen.

                        Aber klar, ich habe natürlich die doppelten
                        "=" vergessen (Danke Arsen!).
                        Anfängerfehler

                        Was ich da schrieb, sollte aber nie Sinn ergeben.
                        Ok, hätte ich wohl besser dazuschreiben sollen.

                        Also Damian, vergiss die Logik der IF-Schleife wieder
                        Gruss,
                        Stefan

                        Kommentar


                        • #13
                          Problem mit Fehleranzeige

                          Hallo,
                          ich hab ein Problem mit einem Formularfeld, ich möchte gerne das wenn ein Name schon existiert oder etwas nicht eingegeben wird eine Meldung kommt. Naja ich hab es zwar schon geschafft das wenn nichts in den Felder eingegeben wird wo ein "Stern" ist eine Fehlermeldung kommt, bin aber von der Lösung alles andere als begeistert. Und wie ich es schaffe das eine andere Meldung kommt wenn der Eintrag (z.B.: Nickname "Dein Nickname existiert schon!") schon existiert weiß ich auch nicht.
                          PHP-Code:
                          alter unwichtiger Code 
                          Zuletzt geändert von SilverVegeto; 20.01.2007, 13:07.

                          Kommentar


                          • #14
                            Re: Problem mit Fehleranzeige

                            Original geschrieben von SilverVegeto
                            Und wie ich es schaffe das eine andere Meldung kommt wenn der Eintrag (z.B.: Nickname "Dein Nickname existiert schon!") schon existiert weiß ich auch nicht.
                            Hallo,

                            Dazu machst du einfach noch eine MySQL abfrage ob der Name schon in der DB existiert - wie das geht weisst du hoffentlich?

                            gruß
                            Robert

                            Kommentar


                            • #15
                              Axo ist das der normale Weg? Ich dachte das ginge mit ein - zwei Befehlen.

                              Kommentar

                              Lädt...
                              X