Autor Zpráva
4NDR3
Profil
Ahoj, neví někdo ke mám chybu? Potřeboval bych aby když by nebyl vyplněný autor, tak aby se tam vložilo "Anonym", v MySqlu mám nastavenou defaultní hodnotu na Anonym, a když to zapíšu ručně do SQL tak to normál funguje.

<?PHP

require 'connect.php';

$Autor= $_POST['jmeno']; 
$text = $_POST['text']; 



    
if ($text == "") {
  header("HTTP/1.1 301 Moved Permanently"); 
  header("Location: http://nothall.mablog.eu/mamvpici/"); 
  header("Connection: close"); 
    
    echo "Nevyplnil jste text!";
}

else {

if ($Autor == " ") {
mysql_query("INSERT INTO `text`(`Text`) VALUES ('$text')");


  header("HTTP/1.1 301 Moved Permanently"); 
  header("Location: http://nothall.mablog.eu/mamvpici/"); 
  header("Connection: close"); 
}
else
{

mysql_query("INSERT INTO text(Autor,Text)  VALUES('$Autor','$text')");


  header("HTTP/1.1 301 Moved Permanently"); 
  header("Location: http://nothall.mablog.eu/mamvpici/"); 
  header("Connection: close"); 
}

}








?>
jenikkozak
Profil
Na 21. řádku porovnáváš, zda je autor roven mezeře, ne prázdnému řetězci.
4NDR3
Profil
Jak to tedy mám napsat? Promiň jsem začátečník jak v PHP tak v MySql :-(
Joker
Profil
4NDR3:
Mezera znamená mezeru, prázdný řetězec se zapíše jako prázdný řetězec "".

Lepší by ale bylo použít funkci empty, která je přímo stavěná na kontrolu prázdné hodnoty (jen pozor u polí, kde má projít nula, protože řetězec "0" se taky bere jako prázdná hodnota).
Situaci, kdy hodnota v $_POST nebude, by ale bylo dobré řešit i při přebírání, aby skript negeneroval zbytečně chybové hlášky.
Dělalo by se to úplně obyčejně přes if (empty($_POST['jmeno'])) … else …, nebo kratší varianta téhož:
$Autor = empty($_POST['jmeno']) ? "" : $_POST['jmeno'];

Ještě jedna poznámka, pokud se ve skriptu dělá přesměrování hlavičkou a skript už pak dál nemá pokračovat, je dobré na místo, kde už dál nemá pokračovat, vložit exit();
4NDR3
Profil
Oukej děkuji, vyzkouším :)

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0