Plaatje tonen voor elke variabelen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Zack Smulders

Zack Smulders

09/01/2014 16:26:01
Quote Anchor link
Hallo allemaal,

Ik ben een beginner met PHP en probeer meestal net zolang tot het lukt. Nu loop ik echter tegen een probleem aan waar ik niet uit kom, wat ik ook probeer. In dit geval gaat het om een PHP probleem in een WordPress omgeving.

Ik heb een aantal variabelen (warm, koud, regen, droog, sneeuw) en wil dat als deze gelden, er een plaatje getoond wordt.

Ik heb deze code wat als output heeft warm.jpg droog.jpg etc.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
function temperatuur() {
                global $post;
                $situatie = get_the_term_list( $post->ID, 'product_cat', '', '.jpg ', '.jpg' );
                echo $situatie;
            }


Echter, in plaats van echo $situatie wil ik iets als echo '<img src="http://www.site.nl/images/ .$situatie"> waardoor het plaatje getoond wordt. Of meerdere, omdat het warm en droog kan zijn.

Wat dus niet lukt.

Ik krijg het niet voorelkaar om uberhaupt een plaatje te tonen en de url ingeven lukt me ook niet. Daarnaast weet ik ook niet of dit de manier is om
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
.jpg
aan de categorie toe te voegen.....

Kan iemand me op weg helpen? Het lukt me dus om output te genereren, maar niet om hier een image van te maken.

Alvast bedankt en nog de beste wensen.

Zack
 
PHP hulp

PHP hulp

05/05/2024 14:47:57
 
Willem vp

Willem vp

09/01/2014 16:31:55
Quote Anchor link
echo '<img src="http://www.site.nl/images/ .$situatie">' zal niet werken, omdat de te echo'en string tussen enkele quotes staat. Variabelen worden dan niet geëxpandeerd. Als je dubbele quotes gebruikt, werkt het wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<img src='http://www.site.nl/images/$situatie'>";
?>
 
Zack Smulders

Zack Smulders

09/01/2014 16:41:34
Quote Anchor link
Hi Willem,

Jeetje het is niet de eerste keer dat ik in de mist ga met ' of ". Heb het aangepast, maar mis in het geheel nu nog een oplossing om het per variable te krijgen.

De output wordt nu: http://www.site.nl/images/warm.jpgdroog.jpg

Maar zou moeten worden http://www.site.nl/images/warm.jpg en http://www.site.nl/images/droog.jpg

Weet jij hoe dit moet?

Bvd
 
Willem vp

Willem vp

09/01/2014 17:02:36
Quote Anchor link
Ik weet niet precies wat get_the_term_list() doet, maar op basis van de functienaam vermoed ik dat hij een lijst geeft van alle plaatjes. Als ik ervan uit mag gaan dat alle plaatjes getoond moeten worden en de plaatjes gescheiden worden door een spatie, zou je zoiets kunnen doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function temperatuur() {
   global $post;
   $situatie = get_the_term_list( $post->ID, 'product_cat', '', '.jpg ', '.jpg' );
   foreach (explode(' ',$situatie) as $plaatje) {
      echo "<img src='http://www.site.nl/images/$plaatje'>";
   }

   echo $situatie;
}

?>
 
Zack Smulders

Zack Smulders

09/01/2014 18:06:09
Quote Anchor link
Bedankt Willem.

In dit geval geeft get_the_term_list() een aantal specifieke eigenschappen terug. In mijn geval droog, warm etc.

Op een of andere manier werkt bovenstaande code wel om alle eigenschappen te tonen, en hier .jpg achter te zetten maar helaas nog steeds als tekst en niet als image.

Nog een idee?
 
Frank Nietbelangrijk

Frank Nietbelangrijk

09/01/2014 19:04:44
Quote Anchor link
Hallo Zack,

kleine aanpassing op de code van Willem:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
function temperatuur() {
   global $post;
   $situatie = get_the_term_list( $post->ID, 'product_cat', '', '.jpg ', '.jpg' );
   foreach (explode(' ',$situatie) as $plaatje) {
      echo '<img src="http://www.site.nl/images/' . $plaatje . '.jpg" />"';
   }

   echo $situatie;
}

?>


Als het nu nog niet lukt kun je dan misschien even de bron van de pagina bekijken zodat je de HTML ziet en dan even het stukje met de <img .... /> tonen?
Gewijzigd op 09/01/2014 19:05:31 door Frank Nietbelangrijk
 
Willem vp

Willem vp

09/01/2014 19:50:35
Quote Anchor link
@Frank,

Waarom denk je dat jouw code wel werkt en de mijne niet?
 
D B

D B

09/01/2014 19:52:42
Quote Anchor link
De code van Frank is wat netter, maar ik denk niet dat die wel zal werken

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?
      echo '<img src="http://www.site.nl/images/' . $plaatje . '.jpg" />"';
?>


Volgens mij moeten die dubbele quotes aan het eind weg...
 
Willem vp

Willem vp

09/01/2014 19:58:04
Quote Anchor link
D B op 09/01/2014 19:52:42:
De code van Frank is wat netter

Daarover verschillen we dan van mening... ;-)

Door al dat gegoochel met quotes en concatenaties is het veel lastiger om te zien of je quotes matchen. Frank bewijst dat al meteen met dat ene regeltje dat hij tikt...
 
Erwin H

Erwin H

09/01/2014 20:03:36
Quote Anchor link
Voor de goede lezer staat er een ander verschil in dan alleen die ene extra dubbele quote. Frank plakt er nog een extentie aan, terwijl Willem dat niet doet. De vraag is: wat is goed. Als ik de posts van de TS goed lees hoeft die extra extentie er niet bij, maar helemaal zeker kan ik het ook niet zeggen.
 
Willem vp

Willem vp

09/01/2014 20:05:32
Quote Anchor link
Volgens de originele post zou de get-functie "warm.jpg droog.jpg" teruggeven. Met dat als aanname is het dus niet nodig (en zelfs fout) er een extensie aan te plakken. Tenzij het plaatje op de server "warm.jpg.jpg" heet...
Gewijzigd op 09/01/2014 20:06:35 door Willem vp
 
Zack Smulders

Zack Smulders

09/01/2014 22:48:23
Quote Anchor link
Bedankt heren, de oplossing van Willem werkte uiteindelijk (en die van Frank zal ook wel werken).

Ik moest er alleen een strip_tags overheen gooien omdat WordPress van alles met de variabelen deed.

Bedankt in elk geval!
 
Michael -

Michael -

10/01/2014 08:55:28
Quote Anchor link
Willem vp op 09/01/2014 16:31:55:
echo '<img src="http://www.site.nl/images/ .$situatie">' zal niet werken, omdat de te echo'en string tussen enkele quotes staat. Variabelen worden dan niet geëxpandeerd. Als je dubbele quotes gebruikt, werkt het wel:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo "<img src='http://www.site.nl/images/$situatie'>";
?>


Zack Smulders op 09/01/2014 16:41:34:
Hi Willem,

Jeetje het is niet de eerste keer dat ik in de mist ga met ' of ". Heb het aangepast, maar mis in het geheel nu nog een oplossing om het per variable te krijgen.

De output wordt nu: http://www.site.nl/images/warm.jpgdroog.jpg

Maar zou moeten worden http://www.site.nl/images/warm.jpg en http://www.site.nl/images/droog.jpg

Weet jij hoe dit moet?

Bvd


Of je dubbele of enkele quotes gebruikt, maakt niet uit. Zelf gebruik ik enkele omdat dit makkelijker is met HTML, maar met veel tekst waar de enkele quotes in voorkomt gebruik ik dubbele quotes (echo "'s morgens";) om escapen (echo '\'s morgens';) te voorkomen.
Daarnaast zou ik altijd variabelen buiten quotes houden. Dus niet zoals het voorbeeld van Willem.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
echo 'Hallo $naam'; // binnen quotes
echo 'Hallo ' . $naam; // buiten quotes

echo "<img src='http://www.site.nl/images/$situatie'>"; // binnen quotes
echo '<img src="http://www.site.nl/images/' . $situatie . '">'; // buiten quotes
?>
Gewijzigd op 10/01/2014 08:57:24 door Michael -
 
Erwin H

Erwin H

10/01/2014 09:20:44
Quote Anchor link
@Michael

Enkele en dubbele quotes maken wel uit. Dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'Hallo $naam'; // binnen quotes
?>

zal letterlijk Hallo $naam op het scherm zetten, aangezien er geen parameter expansion zal worden toegepast als je enkele quotes gebruikt. Variabelen worden dus niet gezien.
 
Michael -

Michael -

10/01/2014 09:33:54
Quote Anchor link
Erwin H op 10/01/2014 09:20:44:
@Michael

Enkele en dubbele quotes maken wel uit. Dit:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
echo 'Hallo $naam'; // binnen quotes
?>

zal letterlijk Hallo $naam op het scherm zetten, aangezien er geen parameter expansion zal worden toegepast als je enkele quotes gebruikt. Variabelen worden dus niet gezien.

Bedankt voor de toelichting. Slecht voorbeeld :) Gewoon niet binnen quotes.
Daarbij bedoel ik dat quotes het niet uitmaken in de zin of ik echo "Hoi " . $naam of echo 'Hoi ' . $naam gebruik. (TS geeft aan hier steeds mee in de 'fout' te gaan)
Geeft in ieder geval aan dat het voorbeeld van Willem wat de TS zegt over te hebben genomen (echo "<img src='http://www.site.nl/images/$situatie'>";) onjuist is.
 
Erwin H

Erwin H

10/01/2014 09:38:26
Quote Anchor link
Nee, het voorbeeld van Willem is correct. Daar staan dubbele quotes omheen en dus zal de variabele wel worden meegenomen. De enkele quotes zijn voor het html atribuut.
 
Michael -

Michael -

10/01/2014 09:47:52
Quote Anchor link
Erwin H op 10/01/2014 09:38:26:
Nee, het voorbeeld van Willem is correct. Daar staan dubbele quotes omheen en dus zal de variabele wel worden meegenomen. De enkele quotes zijn voor het html atribuut.

Je hebt gelijk. Ik heb het even uitgeprobeerd. Ik was hier niet van op de hoogte omdat ik nooit variabelen binnen quotes gebruik.
 
Willem vp

Willem vp

10/01/2014 12:02:36
Quote Anchor link
Michael - op 10/01/2014 08:55:28:
Daarnaast zou ik altijd variabelen buiten quotes houden. Dus niet zoals het voorbeeld van Willem.

Ik heb geen idee waar het vandaan komt dat iedereen maar loopt te roepen dat variabelen buiten de quotes moeten. Waarschijnlijk is er ooit iemand geweest die uit een VBScript- of JavaScript-omgeving kwam, niet de behoefte had zich te verdiepen in de mogelijkheden die PHP biedt, en is iedereen hem gaan nadoen.

Hoe dan ook vind ik het ongepast als iedereen continu loopt te roepen dat je altijd je variabelen buiten de quotes moet houden. Laat de programmeur dat lekker zelf bepalen! Het is net wat je gewend bent en/of wat de opdrachtgever wil.

Het hoofdcriterium zou in mijn ogen moeten zijn of het de code leesbaarder maakt. Vooral wanneer je veel HTML of SQL-code moet echo'en, waar je strings hebt met veel quotes erin, verhoogt het m.i. de leesbaarheid enorm als je de variabelen juist bínnen de quotes houdt. Ik heb op dit forum regelmatig gezien dat er werkelijk uren aan hersenkracht werden verspild omdat door al dat geconcateneer de visuele entropie (wanorde) van het codebeeld zo was toegenomen dat niet meer eenvoudig te zien was welk quote'je waarbij hoorde. Het mooie van PHP is juist dat al dat gepiel niet meer hoeft, doordat het mogelijk is om variabelen binnen strings te expanderen. Bij VB/JavaScript is dat niet goed mogelijk, omdat dat sigil-loze talen zijn.

Een ander punt is dat het roepen dat je de variabelen buiten de quotes moet halen vaak niets toevoegt aan de discussie/oplossing. Het enige wat je ermee bereikt, naast verwatering van het onderwerp, is dat je de indruk wekt dat je niet kan programmeren. Beter gezegd: je kent de taal niet goed genoeg om in te schatten wat code doet die niet is opgemaakt op een manier die je gewend bent. Wanneer ik de geschiktheid van een sollicitant moet beoordelen, levert zoiets altijd minpunten op, want een programmeur moet het inzicht en improvisatievermogen hebben om zich aan te passen aan om het even welke programmeerstijl.

Ik zou dan ook heel graag zien dat iedereen stopt met dat kansloze geblaat over quotes en zich gaat richten op het oplossen van het probleem zelf.
Gewijzigd op 10/01/2014 12:08:28 door Willem vp
 
Erwin H

Erwin H

10/01/2014 12:24:36
Quote Anchor link
Willem vp op 10/01/2014 12:02:36:
Ik zou dan ook heel graag zien dat iedereen stopt met dat kansloze geblaat over quotes en zich gaat richten op het oplossen van het probleem zelf.

Eens!

Waarbij ik verder in het midden laat wat mijn voorkeur geniet :-)
 
Ward van der Put
Moderator

Ward van der Put

10/01/2014 12:48:16
Quote Anchor link
Things like "single quotes vs double quotes" are features of PHP itself to make programming easier and there are no reasons not use one way in preference to another. Such best practices are left solely on developer to decide. The only recommendation could be made to keep consistency within package and respect personal style of other developers.Best Practices in de PEAR Coding Standards
 
Michael -

Michael -

10/01/2014 12:58:55
Quote Anchor link
Willem vp op 10/01/2014 12:02:36:
Michael - op 10/01/2014 08:55:28:
Daarnaast zou ik altijd variabelen buiten quotes houden. Dus niet zoals het voorbeeld van Willem.

Bla

Ik zeg ook 'zou ik', niet moet. Verder blijft het inderdaad een mening-/voorkeur verschil.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.