Bilder generierten Meldungen zuordnen

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

  • Bilder generierten Meldungen zuordnen

    Hallo Leute,

    ich hoffe Ihr könnt mir helfen!!

    Folgendes Problem.

    Der User soll bei mir die Möglichkeit haben aktuelle Meldungen per PHP und MySQL in die Datenbank reinzuschreiben.

    Diese werden dann z.B. auf der Seite "Aktuell" wieder ausglesen. Sagen wir mal von den aktuellen Meldungen in der Datenbank werden 10 ausgelesen. DIe restlichen Meldungen sollen auf der Seite "Archiv" erscheinen.

    Zusätzlich soll der User die Möglichkeit haben, Bilder zu der jeweiligen verfassten Meldung hochzuladen, so dass diese neben dem Text dann auch auf der Seite "Aktuell" zur jeweiligen Meldung erscheinen.

    Das die Meldungen ORDERED by a_id auf der akuellen Seite erscheinen, alles kein Problem.

    Mein Problem ist, wie ordne ich der jeweiligen Meldung das Bild zu?

    Der Code für das Bilder hochladen sieht folgendermassen aus:

    PHP-Code:
    $query mysql_query("SELECT * FROM a_index");
        
    $data mysql_fetch_array($query);

        
    if(isset(
    $_POST['Fload'])==true){
    $imageload=$_FILES['file']['tmp_name'];
        if (
    $data['image1'] != "emptypic"){
        
    unlink("../upload/".$data['image1'].".jpg");
        }
        
    $filename md5(rand(032768).time()."bild_1");
        
    copy($imageload"../upload/".$filename.".jpg");
        
    scale_image(140100"EBFAFF"$_FILES['file']['tmp_name'], $_FILES['file']['type'], $filename"../upload/"70"jpg");
        
    mysql_query("UPDATE a_index SET image1='$filename.jpg'");
        
    $data['image1']= $filename;
    }
    #################Text hochladen ############
        
    mysql_query("INSERT INTO a_index (headline, date, subheadline, text, image1) VALUES ('".$headline."','".time()."','".$subheadline."', '".$text."','".$filename."');"); 
    Der Code ist natürlich etwas gekürzt, aber ich hoffe, Ihr versteht somit mein Problem dennoch.
    Funktionieren tut es, aber nur mit den Meldungen, aber nicht unterschiedliche Bilder

    Klar bei den Bildern müsste ich per MySQL mysql_query("UPDATE a_index SET image1='$filename.jpg'" WHERE ??a_id??); angeben, damit der Computer der Meldung mit seiner eigenen a_id das Bild zuordnet.

    Nur wird die id der Meldung ja erst nach hochladen in die Datenbank generiert. Demzufolge macht er bei mir nach Bilder upload natürlich ein Bild in alle Spalten von image1 in der Datenbank rein.

    Wie kann ich mitteilen, dass er das hochgeladene Bild nur bei einer Meldung in die Datenbank schreibt?

    Ich hoffe, Ihr versteht, was ich meine....

    Viele Grüsse,

    Humu

  • #2
    das
    mysql_query("UPDATE a_index SET image1='$filename.jpg'");
    weglassen und das
    SET image1='$filename.jpg'
    mit ins insert nehmen
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Hallo,

      vielen Dank für die Antwort, aber leider klappt das immer noch nicht.
      Ich habe die SET image1='$filename.jpg' nun in dem INSERT Befehl ausprobiert, aber es funktioniert nich. Es steht wahrscheinlich an der falschen Stelle, aber ich habe es an jeder denkbaren Position ausprobiert, aber es geht nicht.

      Kann mir jemand helfen?!


      PHP-Code:

      if(isset($_POST['Fupdate'])==true){

      $imageload=$_FILES['file']['tmp_name'];
          if (
      $data['image1'] != "emptypic"){
          
      unlink("../upload/".$data['image1'].".jpg");
          }
          
      $filename md5(rand(032768).time()."bild_1");
          
      copy($imageload"../upload/".$filename.".jpg");
          
      scale_image(140100"EBFAFF"$_FILES['file']['tmp_name'], $_FILES['file']['type'], $filename"../upload/"70"jpg");
          
      #mysql_query("UPDATE a_index SET image1='$filename.jpg'");
          #mysql_query("UPDATE a_index SET image1='$filename.jpg' WHERE a_id=$id");
          #mysql_query("UPDATE a_index SET image2='$filename.jpg'");
          
      $data['image1']= $filename;

      $headline$_POST['Fheadline'];
          
      $subheadline$_POST['Fsubheadline'];
          
      $text$_POST['Ftext'];

      ############# Eintrag in DB ####################
      mysql_query("INSERT INTO a_index (headline, date, subheadline, text)
       VALUES ('"
      .$headline."','".time()."','".$subheadline."', '".$text."'); SET image1='$filename.jpg'");
      ################################### 


      Dann noch eine zusätzliche Frage:

      Ich will, dass nur 10 Meldungen angezeigt werden. Der Rest soll dann automatisch auf einer anderen Seite, der "Archiv-Seite angezeigt werden"

      Nur die 10 neuesten Meldungen anzuzeigen, das ist mir klar.
      Z.B. durch

      PHP-Code:
      ORDER BY date LIMIT 10 ASC
      Wenn ich jetzt aber automatisch die anderen Nachrichten woanders anzeigen will, wie mach ich das?

      PHP-Code:
      SELECT FROM a_index ORDER BY date WHERE a_id=a_id-10
      Da würde er ja Probleme kriegen, wenn er bei a_id=9 ankommt, weil er dann einen Wert unter 0 ausgeben müsste, oder?


      Ich hoffe, Ihr könnt mir helfen!

      Gruss,

      Humu

      Kommentar


      • #4
        Hallo Leute,

        Danke MelloPie, Du hattest natürlich recht. Jetzt geht es soweit. Ich hätte mal zwischenzeitlich in meine Datenbank schauen sollen... Die Bilder hat er richtig reingeladen, nur bei meinem echo-Befehl auf der anderen Seite hatte ich einen Fehler gemacht....

        Manchmal sieht man den Wald vor lautet Bäumen nicht mehr.

        Dennoch danke vorerst.

        Für meine zweite Frage habe ich bisher noch keine Lösung. Also wenn da jemand helfen kann, dann waere ich dankbar.

        Gruß,

        Humu

        Kommentar


        • #5
          Auslesen aktueller Meldungen und archivieren von Älteren

          Hallo,

          hoffentlich könnt Ihr mir wieder helfen...

          Also zur Frage.

          Wie kann ich per MySQl Befehl folgendes Problem lösen?

          Ich lese die von einem User generierten Meldungen aus, sagen wir mal 10 werden davon auf einer Seite gezeigt und zwar die Aktuellsten.

          Nun will ich dass ältere Meldungen automatisch auf einer anderen Seite im sogenannten Archiv erscheinen.

          Das klingt eigentlich nicht sonderlich schwer, dachte ich.

          Die aktuellen Meldungen kann ich klar per MySQL Befehl auslesen:

          PHP-Code:
          SELECT FROM a_index ORDER BY date DESC LIMIT 10 
          Nur wie ich auf einer anderen Seite nun die restlichen sich in der Datenbank befindlichen Meldungen auslese ist mir bisher ein Rätsel.

          Schön wärs wenn ich einfach sagen könnte:

          PHP-Code:
          ....WHERE a_id=a_id-10 
          Aber sowas geht ja leider nicht.

          Ist das sehr schwer zu machen oder is das machbar?

          Das Problem ist ja, dass ich irgendwie die neuesten Meldungen mit den Älteren vergleichen müsste, um eben dadurch zu sehen, welche im Archiv dargestellt werden sollen.

          Wenn mir nur jemand einen Tip gehen könnte, wie das zu machen ist.

          Ich hab schon in meinem MySQL-Buch nachgeschaut, aber ich finde keinen Befehl der das kann.

          Oder bin ich mit Blindheit geschlagen?

          Viele Grüsse,

          Humu

          Kommentar


          • #6
            eine Möglichkeit, vielleicht ja nicht gerade die eleganteste wäre:

            Datum des zehnt-letzten eintrags feststellen und per datumsvergleich nur ältere beiträge selektieren

            Kommentar


            • #7
              die anderen IDs?
              auch mit LIMIT rtfm
              Beantworte nie Threads mit mehr als 15 followups...
              Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

              Kommentar


              • #8
                Hallo Leute,

                ich habs jetzt folgendermassen gelöst.
                Kam irgendwie in U-Bahn drauf
                Das funktioniert auch, ist aber auch nicht optimal.
                Wenn die a_id´s der Meldungen fortgehend sich um eins steigern, kein Problem.

                Nur, was ist, wenn man eine Meldung löscht?
                Dann wird die nächste z.B. nicht bei a_id 6 sondern bei a_id 7 eingetragen, wegen autoincrement.

                Irgendwelche Lösungsvorschläge?!

                PHP-Code:

                $query1= mysql_query("SELECT * FROM aktuell ORDER BY date DESC");

                $data1 = mysql_fetch_array($query1);
                $id = $data1['a_id']-10;
                $query= mysql_query("SELECT * FROM aktuell WHERE a_id<=$id ORDER BY date DESC");


                <?php 
                while ($data mysql_fetch_array($query)) {
                                    
                                    
                ?>
                Mellopie schrieb:

                die anderen IDs?
                auch mit LIMIT rtfm
                was ist bitte rtfm?

                Gruss

                Humu

                Kommentar


                • #9
                  Original geschrieben von Humu

                  was ist bitte rtfm?

                  Kommentar

                  Lädt...
                  X