Announcement

Collapse
No announcement yet.

Eintrag in Datenbank bei Linkklick

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Eintrag in Datenbank bei Linkklick

    hi leute...

    ich habe eine php-seite, bei der bilder eines ordners auslesen soll...dieser teil funktioniert...

    nun zum problem:
    ich möchte, dass wenn ein bild angeklickt (zur großen ansicht) wird, in einer datenbank ein eintrag gemacht wird(2 felder)...

    - NR varchar(20)
    - anzahl int(10)


    ...wenn ein eintrag nicht vorhanden ist, soll er erstellt werden, wenn er vorhanden ist, die anzahl entsprechend um 1 erhöhen...

    PHP Code:
    <body bgcolor="lightyellow">
    <?php
        
    function dateigroesse_berechnen($file,$nachkommastellen=2)
        {
            
    $size filesize("".$file);
            if(
    $size >= 1073741824)
                return 
    round($size/(1073741824), $nachkommastellen)." GB";
            if(
    $size >= 1048576)
                return 
    round($size/(1048576), $nachkommastellen)." MB";
            if(
    $size >= 1024)
                return 
    round($size/(1024), $nachkommastellen)." KB";
            return 
    $size." B";
        }
        function 
    bgColor($file)
        {
            if ((
    $file%2)==0)
            {
                
    $bgcolor="#FFFF80";
            }
            else
            {
                
    $bgcolor="lightyellow";
            }
            return 
    $bgcolor;
        }
        
    $handle=opendir ('.');
        echo 
    "<table border='1' width='100%' cellspacing='0' cellpadding='0' align='center'>";
        while(
    false!=($file=readdir($handle)))
        {
            if(
    $file!="." and $file!=".." and $file!="index.php")
            {
                
    $nur_name=basename($file,".jpg");
                echo 
    "<tr align='center' bgcolor=".bgColor($file).">";
                echo 
    "<td width='25%'>Nr: $nur_name</td>";
                echo 
    "<td width='25%'><a href='$file' target='_blank'><img src='$file' width='100' alt='$file' border='0'></a></td>";
                echo 
    "<form action='../unten.php' target='unten' method='post'>";
                echo 
    "<input name='uebergabe_betreff' type='hidden' value='Frage zu Nr: $nur_name'>";
                echo 
    "<input name='uebergabe_text' type='hidden' value='Meine Frage zu Nr: $nur_name:'>";
                echo 
    "<td width='25%'><input type='submit' value='Preis vorschlagen'></td>";
                echo 
    "</form>";
                echo 
    "<td width='25%'>".dateigroesse_berechnen($file)."</td>";
                echo 
    "</tr>";
            }
        }
        echo 
    "</table>";
        
    closedir($handle);
    ?>
    es wäre echt toll, wenn jemand mir weiterhelfen könnte...

    vielen dank schon jetzt...

    mfg
    ice

  • #2
    Hallo ice,

    wenn es sich um eine MySQL-Datenbank handelt, dann läßt sich das Insert ggf. Update mit einem Statement lösen:
    [highlight=sql]INSERT INTO table (NR, anzahl) VALUES ('abc', 1)
    ON DUPLICATE KEY UPDATE anzahl = anzahl + 1;[/highlight]
    Voraussetzung ist natürlich, daß NR als Primary Key definiert ist.

    Gruß Falk
    Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

    Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

    Comment


    • #3
      besten dank...funktioniert prima...

      da tut sich schon das nächste problem auf... :-(

      ich habe dem Button als name die variable $nur_name gegeben...und frage nun mit folgenden code am ende des obigen codes den buttonklick ab...
      PHP Code:
          if(isset($_POST["$nur_name"]))
          {
              
      mysql_query("INSERT INTO klicks (NR, anzahl) VALUES ('$nurname',1) ON DUPLICATE KEY UPDATE anzahl = anzahl + 1");
          } 
      ...nur leider funktioniert das nicht...kannst du mir sagen, wo ich den denkfehler habe?

      mfg
      ice
      Zuletzt editiert von ice; 03.08.2007, 11:18.

      Comment


      • #4
        Schwer zu sagen,

        kann es was damit zu tun haben, daß du einmal $nur_name und einmal $nurname verwendest?
        Das $_POST["$nur_name"] kannst du einfacher (und Besser) als $_POST[$nur_name] schreiben.

        Gruß Falk
        Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

        Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

        Comment


        • #5
          ok...hier nochmal die ganze seite...

          sorry...aber ich weiß nich mehr weiter...

          liegt wohl daran, das ich seid 8h den fehler suche...
          PHP Code:
          <body bgcolor="lightyellow">
          <?php
              
          //--------------------------------------------------------------------------
              //Dateigröße
              //--------------------------------------------------------------------------
              
          function dateigroesse_berechnen($file,$nachkommastellen=2)
              {
                  
          $size filesize("".$file);
                  if(
          $size >= 1073741824)
                      return 
          round($size/(1073741824), $nachkommastellen)." GB";
                  if(
          $size >= 1048576)
                      return 
          round($size/(1048576), $nachkommastellen)." MB";
                  if(
          $size >= 1024)
                      return 
          round($size/(1024), $nachkommastellen)." KB";
                  return 
          $size." B";
              }
              
          //--------------------------------------------------------------------------
              // Farbwechsel
              //--------------------------------------------------------------------------
              
          function bgColor($file)
              {
                  if ((
          $file%2)==0)
                  {
                      
          $bgcolor="#FFFF80";
                  }
                  else
                  {
                      
          $bgcolor="lightyellow";
                  }
                  return 
          $bgcolor;
              }
              
          //--------------------------------------------------------------------------
              //Anzeige
              
          include("../config.inc");
              
          //--------------------------------------------------------------------------
              
          $handle=opendir ('.');
              echo 
          "<table border='1' width='100%' cellspacing='0' cellpadding='0' align='center'>";
              echo 
          "<tr align='center'>";
              echo 
          "<td width='25%'><b>Dateiname</b></td>";
              echo 
          "<td width='25%'><b>Bild-Vorschau</b></td>";
              echo 
          "<td width='25%'><b>&nbsp;</b></td>";
              echo 
          "<td width='12.5%'><b>Anfragen</b></td>";
              echo 
          "<td width='12.5%'><b>Dateigröße</b></td>";
              echo 
          "</tr>";
              while(
          false!=($file=readdir($handle)))
              {
                  if(
          $file!="." and $file!=".." and $file!="index.php")
                  {
                      
          $nur_name=basename($file,".jpg");
                      echo 
          "<tr align='center' bgcolor=".bgColor($file).">";
                      echo 
          "<td width='25%'>Nr: $nur_name</td>";
                      echo 
          "<td width='25%'><a href='$file' target='_blank'><img src='$file' width='100' alt='$file' border='0'></a></td>";
                      echo 
          "<form action='../unten.php' target='unten' method='post'>";
                      echo 
          "<input name='uebergabe_betreff' type='hidden' value='Preisvorschlag für Nr: $nur_name'>";
                      echo 
          "<input name='uebergabe_text' type='hidden' value='Ich schlage folgenden Preis für Nr: $nur_name vor:'>";
                      
          $buttonname=$nur_name;
                      echo 
          "<td width='25%'><input name='$buttonname' type='submit' value='Preis vorschlagen'></td>";
                      echo 
          "</form>";
                      
          $klicks=mysql_query("select * from klicks where nr='$nur_name'");
                      
          $anzahl=mysql_fetch_object($klicks);
                      echo 
          "<td width='12.5%'>".$anzahl->anzahl."</td>";
                      echo 
          "<td width='12.5%'>".dateigroesse_berechnen($file)."</td>";
                      echo 
          "</tr>";
                  }
              }
              echo 
          "</table>";
              
          closedir($handle);
              if(isset(
          $_POST[$buttonname]))
              {
                  
          mysql_query("INSERT INTO klicks (NR, anzahl) VALUES ('$buttonname',1) ON DUPLICATE KEY UPDATE anzahl = anzahl + 1");
              }
              
          //--------------------------------------------------------------------------
          ?>

          Comment


          • #6
            Hallo ice,

            dein Code kann nicht funktionieren! Einzige Ausnahme - es wird die letzte ausgegebene Datei angeklickt.

            In der while-Schleife wird $buttonname jeweils auf den Namen der Datei gesetzt, ist also in jedem Schleifendurchlauf anders. Nach dem kompletten Schleifendurchlauf fragst du ab, ob $_POST[$buttonname] gesetzt ist - in $buttonname steht jetzt der Name der letzten Datei - die Abfrage ist also nur TRUE, wenn der User (zufällig) die letzte Datei angeklickt hat.

            Ich würde folgendes Machen:
            Nach Zeile 56 ( $buttonname=$nur_name; ) die Zeile:
            echo "<input name='nur_name' type='hidden' value='$nur_name'>";
            ergänzen.
            Den letzten Teil dann so ändern:
            PHP Code:
            if(isset($_POST['nur_name']))
                {
                    
            mysql_query("INSERT INTO klicks (NR, anzahl) VALUES ('{$_POST['nur_name']}',1) ON DUPLICATE KEY UPDATE anzahl = anzahl + 1");
                } 
            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              ok....besten dank...

              funktioniert prima...

              ...es ist eindeutig zu merken, dass ich mich zu wenig mit php beschäftige...

              mfg
              ice

              Comment

              Working...
              X