PHP, Starrating pakt geen halve sterren

Status
Niet open voor verdere reacties.

luck7

Gebruiker
Lid geworden
10 feb 2009
Berichten
791
Beste forumleden,

Ik heb een WP plugin gedownload voor het maken van reviews.
De plugin biedt de mogelijkheid sterren te geven. van 0 t/m 5, inclusief halve sterren. Probleem is dat de plugin niet is afgemaakt. Er is wel een afbeelding van een halve ster aanwezig, in de code word hier echter geen rekening mee gehouden.

wie o wie kan mij verder helpen?
Dit is de code die berekent hoeveel volle, en lege sterren er moeten komen te staan.

PHP:
function rating_star($val){
    $rating="";     ;
    for($k=0;$k<$val;$k++){
        $rating .='<img src="'.plugins_url("wereviews/images/star.png").'" >';
    }
    for($k=0;$k<5-$val;$k++){
        $rating .='<img src="'.plugins_url("wereviews/images/star_gray.png").'" >';
    }


    return $rating;
}

Er mist dus een stuk dat controleert of er halve sterren aanwezig zijn. (Die worden overigens als x_5 opgeslagen)

Hier het stuk code met de mogelijkheid de sterren te kiezen:

PHP:
<select name="review_details[rating]">
        <option <?php if($review_details['rating']=="5")echo "selected='selected'";?> value="5">5 stars</option>
        <option <?php if($review_details['rating']=="4_5")echo "selected='selected'";?> value="4_5">4.5 stars</option>
        <option  <?php if($review_details['rating']=="4")echo "selected='selected'";?> value="4">4 stars</option>
        <option  <?php if($review_details['rating']=="3_5")echo "selected='selected'";?> value="3_5">3.5 stars</option>
        <option  <?php if($review_details['rating']=="3")echo "selected='selected'";?> value="3">3 stars</option>
        <option  <?php if($review_details['rating']=="2_5")echo "selected='selected'";?> value="2_5">2.5 stars</option>
        <option  <?php if($review_details['rating']=="2")echo "selected='selected'";?> value="2">2 stars</option>
        <option  <?php if($review_details['rating']=="1_5")echo "selected='selected'";?> value="1_5">1.5 stars</option>
        <option   <?php if($review_details['rating']=="1")echo "selected='selected'";?> value="1">1 star</option>
        <option  <?php if($review_details['rating']=="0_5")echo "selected='selected'";?> value="0_5">0.5 stars</option>
        <option   <?php if($review_details['rating']=="0")echo "selected='selected'";?> value="0">0 stars</option>
    </select>

ik ben zelf nieuw met PHP en kom er helaas dus niet uit.

Alvast bedankt voor de moeite!

Groet, Luck Hermsen
 
Laatst bewerkt:
Hallo Luck,

Je for loop werkt met hele getallen (integers) daarom komen de halve waardes niet uit de verf.
Aangezien je weinid ervaring hebt met PHP is de volgende oplossing (niet de mooiste maar misschien wel de makkelijkste) wat voor jou:

Ik ga ervan uit dat je rating ($val) opgeslagen is als 0_5, 1, 1_5, etc..

PHP:
function rating_star($val){
    $rating="";
    if($val == '0_5') {
        $rating .= '<img src="'.plugins_url("wereviews/images/halvestar.png").'" >';
        $rating .= '<img src="'.plugins_url("wereviews/images/halvestar_grijs.png").'" >';
        //etc voor de hele grijze sterren;
    }
    if($val == '1') {
        // hier de code voor 1 ster, zelfde als bovenstaand
    }
    //etc voor de andere waardes
    return $rating;
}
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan