tutorials.de Buch-Aktion 05/2012
Seite 1 von 3 123 LetzteLetzte
ERLEDIGT
JA
ANTWORTEN
40
ZUGRIFFE
1137
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Hi Leute

    ich habe eine kurze Frage. Ich bin mir bei meinen Gedanken nicht ganz sicher, ob das überhaupt per PHP erfragt werden kann, aber mal sehen:

    Man hat ja die Möglichkeit über $img_info = getimagesize('./example.jpg'); die Höhe und die Breite einer Bilddatei in Pixeln in ein Array zu speichern. Ist es aber auch Möglich die tatsächlich dargestellte Größe innerhalb PHP'S anzufragen?

    Ich habe hier ein CMS vorliegen in dem die unerfahrenen Benutzer gerne per HTML Angaben width="" und height="" oder per CSS die Höhe und die Breite angeben. Ich möchte diese Angaben gerne vergleichen mit der Originaldatei - um dann zu sehen ob diese größer ist und nur wenn sie größer ist, dann soll ein rel Attribut ausgegeben werden um per JS eine Lightbox mit dem Element zu verknüpfen.

    Im Prinzip ist das alles funktionstüchtig, WENN ich von 2 Dateien ausgehe und die tatsächliche Dateigröße vergleiche. Aber jetzt muss ich es wie eben beschrieben so machen, dass es nur eine Datei ist und die AUSGABEGRÖßE verglichen wird mit der tatsächlichen Größe der Datei in Pixeln.

    Habt ihr eine Ahnung wie ich an diese Angaben komme?

    Viele Grüße

    Hier mal eben die bisherige Funktion

    HTML-Code:
    <img src="./img/colors.jpg" <?php check_ifbig('colors.jpg'); ?> alt="">
    PHP-Code:
    <?php

    function check_ifbig($dateiname) {

      
    $img $dateiname;
      
    $bimg 'big_'.$img;

      
    $img_path './img/'.$img;
      
    $bimg_path './img/'.$bimg;

      if(
    file_exists($bimg_path)) {
          
    $img_array getimagesize($img_path);
          
    $bimg_arraygetimagesize($bimg_path);
        
          if (
    $bimg_array[0] > $img_array[0] OR $bimg_array[1] > $img_array[1]) {
              echo 
    " rel=\"lightboy-gallery\" ";
          } else {
              echo 
    "Das angegebene Bild ist kleiner als das Original";
          }
      } else {
          echo 
    "Kein Großes Bild vorhanden oder falsche Benennung.";
      }
      
    }
    ?>
    Geändert von sheel (14.12.11 um 16:15 Uhr) Grund: Doppel
     

  2. #2
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Da PHP auf dem Server ausgeführt wird, ist das ermitteln von DOM-Elementen nicht möglich. Dieses müsstest du mit JavaScript abfragen, dann mit AJAX einen Request zu deiner PHP-Funktion starten und als Rückgabe die Ausgabe deiner Funktion.

    Mit jQuery ist das ziemlich einfach:

    Code :
    1
    2
    3
    4
    5
    6
    
    var imgWidth  = $('img').attr('width');
    var imgHeight = $('img').attr('height');
     
    $.post('datei.php', {height: imgHeight, width: imgWidth}, function(data){
       alert(data);
    });

    in der datei.php prüfst du ob der POST-Request angekommen ist, wenn ja hast du 'height & width' im POST-Array enthalten. Dies kannst du dann deiner Funktion übergeben.
    Carrear bedankt sich. 
    Die Schweine von heute sind unsere Schnitzel von morgen!

  3. #3
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Okay, also ich verstehe prinzipiell die vorgehensweise, aber weiß ehrlich gesagt nicht wie es umzusetzen ist. Das dort oben fragt erst einmal die ANGEZEIGTE höhe und breite des Bildes ab und speichert die zahlenwerte in variabeln.das darunter und was du mit der datei.php und der Post Request erklärt hast verstehe ich noch nicht. Kannst du es noch weiter erläutern bitte?
     

  4. #4
    Avatar von chmee
    chmee chmee ist gerade online mod | media
    tutorials.de Moderator
    Registriert seit
    Apr 2004
    Ort
    Berlin bei Potsdam
    Beiträge
    7.630
    Blog-Einträge
    4
    Man könnte jene Abfrage auch komplett in JS machen, indem man das Bild vorlädt, die Attribute dieses Bildes ausliest und dann mit den Infos aus der DOM vergleicht. Anhand des Projekts müsste man überlegen, welche Art besser geeignet ist.

    mfg chmee
    ..nach JS verschoben..
     
    Mein Blog - VideoFAQ - FotoFAQ - bei Flickr - DSLR Kleinanzeigen
    Benutzt den DANKE-Knopf oder bewertet den Beitrag

    "GEHT NICHT" HILFT NICHT, TESTET EURE CODES ONLINE UND GEBT KLARE INFOS!
    -> Regexp <- -> php <- -> Javascript <-

  5. #5
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Das war nur ein Beispiel, dazu benötigt man die Javascript-Library jQuery.

    Code :
    1
    
    $.post()
    sendet einen AJAX-Request zu der angegeben Datei.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  6. #6
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Okay, super Tipps. Ich experimentiere jetzt erst einmal ein bisschen rum mit den neuen Infos und dann schauen wir weiter Wenn ich nicht weiter komme wende ich mich vertrauensvoll an euch ;D

    Achsoo - ich kann dann in der PHP Datei wenn das request angekommen ist mit den variablen $_POST['height'] und $_POST['width'] arbeiten?
    Geändert von sheel (14.12.11 um 16:16 Uhr) Grund: Doppel
     

  7. #7
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Thats right!

    Hier noch eine kleine Hilfe: http://api.jquery.com/browser/
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  8. #8
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Naja, nach dieser Erkenntnis ergibt sich eine neue Frage Zumeist muss man ja solche JavaScript Sachen im Head Bereich machen, richtig? Meine PHP Funktion konnte ich schön das aufrufen wo ich sie gebraucht habe: Innerhalb des Image-Tags habe ich sie aufgerufen, dementsprechen findet auch an dieser Stelle meine Ausgabe des Attributes statt, wenn die Konditionen erfüllt sind. Wie läuft das hier?
     

  9. #9
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Sie müssen nicht im Heead stehen, dies kannst du auch bei deinem Code machen. Du kannst die Ausgabe des Requests an ein HTML-Element weitergeben, so das es angezeigt wird.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  10. #10
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Super!

    Dann kann ich bestimmt auch den Dateiname abfragen so inder Art hier:

    var imgName = $('img#detailbild').attr('href');

    ?
     

  11. #11
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Wenn du es ausprobiert hättest, dann wüstest du das es funktioniert

    Wobei "imgHref" der richtige Bezeichner für die Variable wäre.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  12. #12
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Gibt es richtige Bezeichner ? Okay, semantisch wäre es wohl richtig, da hast du recht. Also ich schau mir hier grad die Dokumenation und ein Beispiel an, aber durch diesen $.post Befehl steig ich nicht durch.

    Code :
    1
    2
    3
    
    $.post('datei.php', {height: imgHeight, width: imgWidth}, function(data){
       alert(data);
    });

    In der Klammer bezeichnet das erste, welche datei welche daten verarbeiten soll. Ich hab null check. Laut dokumentation kann man da so viele Werte übergeben mit denen ich nichts anfangen kann und ich weiß auch nicht, wie ich das Ergebnis aus meiner PHP Funktion zurück in dieses JS bekomme. Und wo steuer ich wo ich das Ergebnis dann ausgebe. Fragen über fragen - wenn du denkst ich sollte hier anfangen mich anderweitig damit zu beschäftigen als in einem forum, dann sag das ruhig
     

  13. #13
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    In deiner PHP-Datei schreibst du folgendes:
    PHP-Code:
    function checkImgSizes($width,$height){
        return 
    "Mein Bild ist " $width " breit und " $height " hoch!";
    }
    if(isset(
    $_POST['height']) && isset($_POST['width'])){
      echo  
    checkImgSizes($_POST['width'],$_POST['height']);

    Jetzt sollte bei deinem Alert im JS der oben gennante Satz ausgegeben werden.
     
    Die Schweine von heute sind unsere Schnitzel von morgen!

  14. #14
    Carrear Carrear ist offline Mitglied Brokat
    Registriert seit
    Dec 2004
    Ort
    Lehrte bei Hannover
    Beiträge
    435
    Ja okay, als Alert, aber wie schreib ich das woanders hin? Ich meine bei mir läuft es ja darauf hinaus, dass ich weder ein Alert ausgeben will, noch den Inhalt eines Divs verändern, sondern einem href-Tag um ein Bild herum soll bei erfolgreicher abfrage ZUSÄTLICH das Attribut class="lightbox" hinzugefügt werden und bei negativem Ergebnis der Abfrage soll eben nichts passieren.

    Achso und das ganze soll einmalig, nämlich beim Laden der Seite passieren.
    Geändert von sheel (14.12.11 um 16:16 Uhr) Grund: Doppel
     

  15. #15
    Avatar von Maniac
    Maniac Maniac ist offline Mitglied Smaragd
    Registriert seit
    Apr 2007
    Ort
    Augsburg/Gersthofen (Bayern)
    Beiträge
    1.204
    Dann in deiner PHP-Funktion true oder false zurückgeben.

    Im JS das abfragen und je nach Bedingung setzt du das Attribut für den a-Tag.

    sollte ungefähr so aussehen:
    Code :
    1
    2
    3
    4
    5
    6
    7
    8
    
    $(document).ready(function(){
       var imgWidth  = $('img').attr('width');
       var imgHeight = $('img').attr('height');
     
       $.post('datei.php', {height: imgHeight, width: imgWidth}, function(data){
           if(data == true) $('element').addClass('lightbox');
       });
    });
    Carrear bedankt sich. 
    Die Schweine von heute sind unsere Schnitzel von morgen!

Ähnliche Themen

  1. Live Stream einbinden und Anzeigegröße anpassen
    Von Matzner im Forum HTML & XHTML
    Antworten: 1
    Letzter Beitrag: 22.12.10, 15:48
  2. Antworten: 4
    Letzter Beitrag: 30.12.09, 13:17
  3. Antworten: 13
    Letzter Beitrag: 23.01.09, 00:14
  4. Tatsächliche Randbreite
    Von nhoj im Forum Javascript & Ajax
    Antworten: 2
    Letzter Beitrag: 09.08.07, 08:30
  5. Antworten: 2
    Letzter Beitrag: 06.06.07, 16:21