Seite 1 von 4 1234 LetzteLetzte
Ergebnis 1 bis 10 von 36

Thema: PHP + MySQL Problem

  1. #1
    Fortgeschrittene/r
    Registriert seit
    08.11.2007
    Beiträge
    174
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard PHP + MySQL Problem

    Hallo erstmal,

    ich versuche als eine bewertung zu programmieren doch hab ich mir das leider leichter als gedacht vorgestelt.

    und zwar gibs die möglichkeit dateien mittels eines plus oder minus buttons zu bewerten. doch wird nichts in die DB geschrieben!

    hier der code:

    PHP-Code:
        <?
        
    if (isset($top))
           {
            
    $query=mysql_query("SELECT * FROM musik WHERE id=$top") OR die(mysql_error());
            
    $row mysql_fetch_array($query);
              
    mysql_query ("UPDATE musik SET vote = vote + '1', vote_ges = Vote_ges + '1', prozent=(vote*100/vote_ges) WHERE id = '$top'");
          } 
        
        
        echo    
    "&nbsp;<a style='color:#000000' href='uebersicht.php?top=".$row['id']."'><img src='img/top.gif' border='0' height='15' /></a>";
        echo    
    "&nbsp;<a style='color:#000000' href='uebersicht.php?flop=".$row['id']."'><img src='img/flop.gif' border='0' height='15' /></a>";
        
    ?>
    ist aber im mom nur die plus/top funktion!

    komme nicht weiter ... bitte um hilfe ... mfg
    Achtung: Dies ist ein alter Thread im HTML und Webmaster Forum
    Diese Diskussion ist älter als 90 Tage. Die darin enthaltenen Informationen sind möglicherweise nicht mehr aktuell. Erstelle bitte zu deiner Frage ein neues Thema im Forum !!!!!

  2. #2
    Teeny
    Registriert seit
    30.06.2009
    Beiträge
    34
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: PHP + MySQL Problem

    So also erstmal ist gesagt les die werte aus, dann speicherst du sie in variabeln, Weil so funktioniert der Update nicht.

    PHP-Code:
    mysql_query ("UPDATE musik SET vote = vote + '1', vote_ges = Vote_ges + '1', prozent=(vote*100/vote_ges) WHERE id = '$top'"); 
    Dann habe ich noch einen Fehler gefunden, und zwar "vote_ges = Vote_ges + '1'" du musst genau darauf achten, dass die Groß und Kleinschreibung richtig gesetzt ist.
    Affiliate und SEO Blog Beiträge zu den Themen: SEO, eigene HP und Affiliate

  3. #3
    Bandit
    Gast

    Standard AW: PHP + MySQL Problem


  4. #4
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: PHP + MySQL Problem

    Hast du schonmal mit einer Testausgabe probiert ob das Script überhaupt in die if-Bedingung springt?
    Nach dem was du hier postest beruht dein Script auf der veralteten Einstellung register_globals. Das ist ganz ganz schlecht, da es eine ziemlich Sicherheitslücke darstellt. Aus diesem Grund ist das mittlerweile bei den meisten Hostern auch standardmäßig deaktiviert.

    Register_globals auf on bedeutet, dass du auf alle Variablen aus den globalen Arrays $_GET, $_POST, $_SESSION auch nur über den Key zugreifen kannst.
    In deinem Beispiel übergibst du die zu bewertende ID mit ?top=".$row['id']

    Diese Variable kann mit register_globals aktiviert dann auch auf der aufgerufenen Seite mit $top angesprochen werden.
    Wenn bei dir aber register_globals deaktiviert ist, was ich mal hoffe, dann kannst du die Variable nur noch über $_GET['top'] ansprechen. $top ist dann nicht gesetzt, es wird nie in die if-Bedingung gesprungen und es kann auch nicht upgedated werden.

    Dann noch:
    vote = vote + '1'
    Wenn du da rechnest ist vote wohl ein INT-Feld. Also die ' ' weglassen, bin grad nicht sicher ob das auch noch eine Fehlerursache ist, aber es ist definitiv unsauber.
    Schreib:
    vote = vote + 1
    und
    vote_ges = Vote_ges + 1

    So also erstmal ist gesagt les die werte aus, dann speicherst du sie in variabeln, Weil so funktioniert der Update nicht.
    Was soll da nicht funktionieren? Wenn er int-Werte einfach erhöhen will macht er es genau richtig (abgesehen von den ' '). Die Werte vorher auszulesen, mit php zu erhöhen und dann wieder einzutragen wäre völlig umständlich, unnötig und viel langsamer. Sollte er auf gar keinen Fall machen!
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  5. #5
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    08.11.2007
    Beiträge
    174
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: PHP + MySQL Problem

    Also erstmal danke!

    Was mir aufgefallen ist das die query falsch war!
    hab es geänder und jetzt tut sich auch was in der DB aber immer noch nicht ganz richtig!

    die IF anweisung hab ich in ... if (isset($_GET['top'])) ...bzw in... if (isset($_GET['flop'])) ... umgeschrieben.

    so ... das vote ist auch ein INT feld und es funktionier beides vote = vote + '1' und auch ohne ' '!

    nun hab ich das problem das in der db immer zb. bei vote um +2 hochgerechnet wird und nich +1.

    so siehts im mom aus der code:

    PHP-Code:
            echo    "&nbsp;<a style='color:#000000' href='uebersicht.php?top=".$row[1]."'><img src='img/top.gif' border='0' height='15' /></a>";
            echo    
    "&nbsp;<a style='color:#000000' href='uebersicht.php?flop=".$row[1]."'><img src='img/flop.gif' border='0' height='15' /></a>"
    und der teil noch:

    PHP-Code:
        if (isset($_GET['top']))
           {
            
    $query=mysql_query("SELECT * FROM musik WHERE id=$top") OR die(mysql_error());
            
    $row mysql_fetch_array($query);
              
    mysql_query ("UPDATE musik SET vote = vote + 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$top'");
          }
        if (isset(
    $_GET['flop']))
           {
            
    $query=mysql_query("SELECT * FROM musik WHERE id=$flop") OR die(mysql_error());
            
    $row mysql_fetch_array($query);
              
    mysql_query ("UPDATE musik SET vote = vote - 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$flop'");
          } 
    edit // danke bandit600 prima sache!!!!
    Geändert von Walerik (21.09.2009 um 17:57 Uhr)

  6. #6
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: PHP + MySQL Problem

    Bist du sicher, dass vote um 2 erhöht wird? Nach deinem Code hier kann das eigentlich nicht sein. Es sei denn du hast die if-Anweisung dafür zweimal in deinem Code stehen, oder sie steht in einer Schleife die zweimal durchlaufen wird.
    Oder hast du vielleicht die Seite refresht? Dann wird das natürlich auch zweimal ausgeführt.

    Check das bitte mal oder poste den kompletten Code.
    Mit den beiden if-Anweisungen die du gepostet hast wird das nur 1x um 1 erhöht.
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  7. #7
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    08.11.2007
    Beiträge
    174
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: PHP + MySQL Problem

    Hat was mit der schleife zu tun!

    PHP-Code:
    <?php 
        
    if(mysql_num_rows($rs) == 0) {
              echo 
    "Keine Musik vorhanden";
          } else {

            do {
            echo !empty(
    $row[0]) ? "$row[0]:"keine Musik";
               echo 
    " <a href=\"upload.php?id=".$row[1]."\">weiter</a>
                    &nbsp;<a href=\"uebersicht.php?id="
    .$row[1]."&d=".$row[0]."\">l&ouml;schen</a>
                    &nbsp;<a style=\"color:#000000\" href=\"uebersicht.php?top="
    .$row[1]."\"><img src=\"img/top.gif\" border=\"0\" height=\"15\"></a>
                    &nbsp;<a style=\"color:#000000\" href=\"uebersicht.php?flop="
    .$row[1]."\"><img src=\"img/flop.gif\" border=\"0\" height=\"15\"></a>";
        
    ?>
        <object type="application/x-shockwave-flash" data="flash/emff_silk_button.swf" height="18" width="20">
         <param name="movie" value="flash/emff_silk_button.swf">
         <param name="bgcolor" value="#ffffff">
         <param name="FlashVars" value="src=musik/<? echo $row[0]; ?>"><br/>
        </object>
        <?
        
    if (isset($_GET['top']))
           {
            
    $query=mysql_query("SELECT * FROM musik WHERE id=$top") OR die(mysql_error());
            
    $row mysql_fetch_array($query);
              
    mysql_query ("UPDATE musik SET vote = vote + 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$top'");
          }
        if (isset(
    $_GET['flop']))
           {
            
    $query=mysql_query("SELECT * FROM musik WHERE id=$flop") OR die(mysql_error());
            
    $row mysql_fetch_array($query);
              
    mysql_query ("UPDATE musik SET vote = vote - 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$flop'");
          }

        
    ?>
        <br/>
        <?
               
    }
               while (
    $row=mysql_fetch_array($rs));
       }
    hat was mit der schleife zu tun und zwar mit $rs ...
    ... sobald ich 3 datensätze in der DB hab zählt er plus 3
    weil der sicherlich die schleife dann dreimal durchläuft
    Geändert von Walerik (21.09.2009 um 19:17 Uhr)

  8. #8
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: PHP + MySQL Problem

    Ja die if-Anweisung muss vor der Schleife stehen.
    Beachte bitte die von mir ergänzten Kommentare.
    PHP-Code:
    <?php
    if(isset($_GET['top'])) {
        
    // wozu dient diese Abfrage? Kein SELECT * schreiben, s.u.
        
    $query=mysql_query("SELECT * FROM musik WHERE id=$top") OR die(mysql_error());
        
    $row mysql_fetch_array($query);
        
    mysql_query ("UPDATE musik SET vote = vote + 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$top'");
    }
    elseif(isset(
    $_GET['flop'])) {
        
    // ebenso hier, wozu dient die Abfrage? Kein SELECT * schreiben, s.u.
        
    $query=mysql_query("SELECT * FROM musik WHERE id=$flop") OR die(mysql_error());
        
    $row mysql_fetch_array($query);
        
    mysql_query ("UPDATE musik SET vote = vote - 1, vote_ges = vote_ges + 1, prozent=(vote*100/vote_ges) WHERE id = '$flop'");
    }
    if(
    mysql_num_rows($rs) == 0) {
        echo 
    "Keine Musik vorhanden";

    else {
        
    // Wenn du do-while nutzt wird der erste Datensatz erst am Ende der Schleife geholt, $row ist also im ersten Durchlauf leer
        // oder mit dem Ergebnis aus der Abfrage in deiner if-Anweisung belegt, sofern in den if- oder elseif-Zweig gesprungen wird.
        
    do {
            
    // Du sprichst $row mit int-Werten als indices an, ich hoffe doch mal du hast in der Abfrage kein SELECT * ? Erklärung siehe unten
            
    echo !empty($row[0]) ? "$row[0]:"kein Bild";
            echo 
    "<a href=\"upload.php?id=".$row[1]."\">weiter</a>
            &nbsp;<a href=\"uebersicht.php?id="
    .$row[1]."&d=".$row[0]."\">l&ouml;schen</a>
            &nbsp;<a style=\"color:#000000\" href=\"uebersicht.php?top="
    .$row[1]."\"><img src=\"img/top.gif\" border=\"0\" height=\"15\"></a>
            &nbsp;<a style=\"color:#000000\" href=\"uebersicht.php?flop="
    .$row[1]."\"><img src=\"img/flop.gif\" border=\"0\" height=\"15\"></a>";
            
    // Hier standen die if-Anweisungen, in denen wurde jedesmal $row überschrieben. In <param name="FlashVars" sprichst du $row an. Welcher Wert soll da rein?
            // Aus der while-Bedingung oder tatsächlich die aus der if-Anweisung? Das wäre dann in jedem Durchlauf der gleiche Wert, vermutlich nicht Sinn der Sache.
            
    ?>
            <object type="application/x-shockwave-flash" data="flash/emff_silk_button.swf" height="18" width="20">
             <param name="movie" value="flash/emff_silk_button.swf">
             <param name="bgcolor" value="#ffffff">
             <param name="FlashVars" value="src=musik/<? echo $row[0]; ?>"><br/>
            </object>
            <br/>
            <?php
        
    } while($row=mysql_fetch_array($rs));
    }
    ?>
    "Warum soll ich nicht SELECT * schreiben?"
    http://www.php-faq.de/q-sql-select.html
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  9. #9
    Fortgeschrittene/r
    Themenstarter

    Registriert seit
    08.11.2007
    Beiträge
    174
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings

    Standard AW: PHP + MySQL Problem

    Ich bin noch ein anfänger hab die abfragen gesetzt weil ich es so für richtig gehalten hab!

    Zitat Zitat von SinnlosS Beitrag anzeigen
    "Warum soll ich nicht SELECT * schreiben?"
    meist du damit das alle spalten nutzlos geldan werden wenn ja ...
    ... soll das dann so umgesetzt werde?

    PHP-Code:
    SELECT id FROM musik WHERE id=$top 
    die do-schleife verwende ich weil ich gelesen hab das es zu erst die if-anweisung prüft und das hat sich für mich als richtig angehört

    edit //

    wenn ich die if-anweisungen vor die schleife setze wie in dem code den du bearbeitet hast
    bekomme ich das problem das nach einem vote der erste datensatz sein name ändert und
    nur die id des bewerteten datensatzes als namen ausgibt.

    Zitat Zitat von SinnlosS Beitrag anzeigen
    <param name="FlashVars" sprichst du $row an. Welcher Wert soll da rein?
    mit <? echo $row[0]; ?> wird mir der datensatz name was gleichzeitig auch der dateiname ist ausgegeben!
    was zu folge hat das ich jeden song mittels eines flashbuttons hören bzw. stoppen kann z.b. vor dem download (nein keine urheberrechtsverletzung! schon aufs maul geflogen ... nie wieder!)
    Geändert von Walerik (21.09.2009 um 20:04 Uhr)

  10. #10
    Großmeister(in)
    Registriert seit
    09.12.2008
    Ort
    Berlin
    Alter
    38
    Beiträge
    666
    Danke
    0
    Bekam 0 mal "Danke" in 0 Postings
    Blog-Einträge
    1

    Standard AW: PHP + MySQL Problem

    Bin grad erst nachhause gekommen von der Arbeit, noch Termine gehabt und grad saumüde, ich gehe morgen mal genauer auf die Punkte ein.

    Falls du das heut noch liest könntest du mal die Tabellenstruktur von `musik` posten, und die SELECT-Abfrage für die die while-Schleife durchlaufen wird (die Abfrage deren Ergebnis du in $rs speicherst, wo du die Datensätze in der while-Bedingung abholst). Und falls die Abfrage auf eine andere Tabelle geht noch die entsprechende Tabellenstruktur.

    Dann kann ich dir vielleicht noch paar nützliche Tipps geben.
    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

Ähnliche Themen

  1. UTF-8 Problem mit PHP und MySQL
    Von LinuxMan im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 2
    Letzter Beitrag: 10.08.2008, 20:26
  2. mysql problem
    Von im Forum HTML & CSS Forum
    Antworten: 1
    Letzter Beitrag: 15.10.2006, 14:52
  3. Mysql-Problem
    Von BendOr im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 5
    Letzter Beitrag: 22.08.2006, 16:03
  4. MySQL Problem
    Von onlineuser im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 7
    Letzter Beitrag: 13.06.2005, 22:30
  5. mySQL problem
    Von gelöschter User im Forum PHP Forum - Apache - CGI - Perl - JavaScript und Co.
    Antworten: 9
    Letzter Beitrag: 02.11.2004, 00:12

Stichworte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •