2015-05-02 17 views
5

Stworzyłem ten prosty przykład PHP, aby rozpocząć moje badanie.Przykład użycia IF w PHP

To Index.html:

<!DOCTYPE html> 
<html> 
<head> 
    <title>Prova</title> 
</head> 
<body> 
<form action="script.php" method="get"/> 
<table> 
    <tr> 
     <td>Cognome</td> 
     <td><input type="text" name="cognome" id="cognome"/></td> 
    </tr> 
</table> 
<table> 
    <tr> 
     <td><input type="submit" value="Invia"/></td> 
    </tr> 
</table> 
</form> 
</body> 
</html> 

To script.php:

<?php 
    $cognome = $_REQUEST['cognome']; 
    if ($cognome = "Giacomo") 
     { 
     echo "<p><img src='Giacomo.jpg'<p>/>"; 
     } 
    else 
     { 
     echo "<img src='IMG.jpg'<p>/>"; 
     } 
?> 

swój bieg, ale jeśli piszę Giacomo pokazać Giacomo.jpg i image.jpg. Chcę tylko Giacomo.jpg.

Dzięki

+3

Podobnie jak odpowiedź poniżej, błędy HTML powinny być "

". – chris85

+0

Formularz jest wysyłany jako żądanie GET, więc powinieneś użyć zmiennej '$ _GET'. Używanie zmiennej '$ _REQUEST' może powodować niezamierzone problemy (chyba że specjalnie zaprojektujesz swój kod jako agnostyczny). –

Odpowiedz

4

Jesteś przypisywania $cognome = "Giacomo" w rachunku if (który jest oceniany na true po to), należy porównać z == lub === Zamiast:

if ($cognome === "Giacomo") 
    echo "<p><img src='Giacomo.jpg'></p>"; 
else 
    echo "<p><img src='IMG.jpg'></p>"; 

PS: Powinno to być <p></p> i <img >.

+0

ok notulysse teraz można zobaczyć tylko jedno zdjęcie. Ale na końcu obrazu pojawia się ";} else {echo" tej części kodu. Czemu? –

+0

@Frik: istnieje tylko jedna linia postępująca po każdym 'if/else', więc pominąłem nawiasy klamrowe. – potashin

1

Trzeba użyć == dla porównania, nie = i należy naprawić HTML znaczniki tak:

<?php 
    $cognome = $_REQUEST['cognome']; 
    if ($cognome == "Giacomo") 
    { 
    echo "<p><img src='Giacomo.jpg'></p>"; 
    } 
    else 
    { 
    echo "<p><img src='IMG.jpg'></p>"; 
    } 
?> 
2

mieć co najmniej dwie opcje:

1) Użyj operatora === lub ==

<?php 
    $cognome = $_REQUEST['cognome']; 
    if ($cognome === "Giacomo") 
    { 
    echo "<p><img src='Giacomo.jpg'<p>/>"; 
    } else { 
    echo "<img src='IMG.jpg'<p>/>"; 
    } 
?> 

2) Użyj funkcji strcmp:

<?php 
    $cognome = $_REQUEST['cognome']; 
    if (strcmp($cognome,"Giacomo") === 0) 
    { 
    echo "<p><img src='Giacomo.jpg'<p>/>"; 
    } else { 
    echo "<img src='IMG.jpg'<p>/>"; 
    } 
?> 

Mam nadzieję, że pomogłem wam w tym.

+0

Ahh, jeśli używasz operatora "=", przypisujesz wartość do zmiennej. –

1

Jak notulysses wymienionych korzystając $cognome = "Giacomo" ustawi zmienną (nawet w instrukcji if) z powodu pojedynczego =

Korzystanie == jest oceną, używane na pytanie i porównać wartości z dwóch obiektów po obu stronach ==, ale porównuje tylko wartość, a nie typ.

Porównywanie wartości i typu odbywa się za pomocą === Tak na przykład;

$number1 = 5; 
$number2 = "5"; //notice the quotes 
if ($number1 == $number2) { echo "true"; } else { echo "false"; } 
// this will echo true 

Jednak

$number1 = 5; 
$number2 = "5"; 
if ($number1 === $number2) { echo "true"; } else { echo "false"; } 
// this will echo false` 

Powodem tego jest $number1 oceniana jest jako liczba, podczas $number2 jest ciągiem powodu cytatów.

Inną rzeczą widzę w kodzie jest

echo "<img src='IMG.jpg'<p>/>"; 

powinny być

echo "<p><img src='IMG.jpg' /></p>"; 

I to samo w stosunku do drugiego obrazu.