Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] jak sprawdzic czy tablica jest pusta ?
Forum PHP.pl > Forum > Przedszkole
Matiash
witam, mam taki skrypt ktory pobiera z formularza dane i zapisuje je do pliku txt.
  1. dziekujemy operacja powiodla sie
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  <?php
  9.  foreach ($_POST["tytul"] as $klucz) {
  10.  echo 'tytuł: '.$klucz.'<br>';
  11.  $nazwapliku = $_REQUEST['sciezka'];
  12.  $ss=fopen($nazwapliku."tytul.txt","a");
  13.  fputs($ss,chr(10).$klucz.chr(10));
  14.  fclose($ss);
  15.  
  16.  
  17. }
  18.  ?>


Jedank pola w formularzu sa opcjonalne i gdy ktos nie wpisze nic to wywala:
Warning: Invalid argument supplied for foreach() in /home.11/t/r/e/trekeart/www/up.php on line 9

Jak sprawdzic czy przesyalne dane sa puste czy nie ? Dziekuje za pomoc.
Hazel
Nie kumam, co chciałeś osiągnąć, pisząc ten kod.
Pętli foreach jako pierwszy argument musisz podać tablicę, a nie jej element...
A do sprawdzenia, czy pole jest puste, czy nie, używasz po prostu na przykład funkcji empty()...
Matiash
moze przedstawie dwa pliki:
upload.php
  1. <?php
  2. $currentdir=getcwd();
  3.  
  4. $currentdir= "./pliki/".date('dmyHis')."/";
  5. mkdir($currentdir ,0777);//tworzymy katalog
  6. $plik=fopen($currentdir."opis.txt","w+");
  7. fputs($plik,"Imię i nazwisko:".chr(10).$_POST['imie'].chr(10).chr(10)."Adres email:".chr(10).$_POST['email'].chr(10).chr(10)."Kategoria:".chr(10).$_POST['kategoria'].chr(10).chr(10)."Tytuł:".chr(10).$_POST['tytul'].chr(10).chr(10)."Treść wiadomości:".chr(10).$_POST['tresc'].chr(10).chr(10)."Dodano: ".chr(10).date("d F Y, H:i"));
  8. fclose($plik); 
  9. //tabela
  10. echo '<div align="center">';
  11. echo '<table width="634" cellspacing="0" cellpadding="0" class="border" bgcolor="#FFFFFF" style="text-align: left">';
  12. echo '<tr>';
  13. echo '<td colspan="2" align="center">';
  14. echo "Dziękujemy. Aby sfinalizować operację kliknij \"dalej\".<br />";
  15. echo "Jeżeli przesyłasz zdjęcia, możesz również krótko je opisać (a nawet jest to wskazane). ";
  16. echo '</td>';
  17. echo '</tr>'; 
  18. echo'<form action="up.php" method="post">';
  19. foreach($_FILES as $file) {
  20. chmod($currentdir, 0755);
  21. $wynik = strtr($file['name'], 'ĘÓĄŚŁŻŹŃęóąśłżźćń ', 'EOASLZZCNeoaslzzcn_');
  22.  
  23. if ($file['size'] < 204800) { // rozmiar podaje się w bajtach, 204800 B = 200 KB
  24. if ( move_uploaded_file($file['tmp_name'],$currentdir.$wynik) ) {
  25. chmod($currentdir.$wynik, 0644);
  26. echo '<tr>';
  27. echo '<td>';
  28. echo "$wynik";
  29. echo '<br>';
  30. $img = imagecreatefromjpeg($currentdir.$wynik);
  31. $width = imagesx($img);
  32. $height = imagesy($img);
  33. $width_mini = 250;
  34. $wynikObliczen = round(($height*$width_mini)/$width);
  35. $height_mini = $wynikObliczen;
  36. $img_mini = imagecreatetruecolor($width_mini, $height_mini);
  37. imagecopyresampled($img_mini, $img, 0, 0, 0, 0, $width_mini , $height_mini, $width , $height);
  38. if(imagejpeg($img_mini,$currentdir."mini_".$wynik, 80))
  39. print '';
  40. else
  41. print'błąd';
  42. imagedestroy($img);
  43. imagedestroy($img_mini);
  44. echo "<img src=".$currentdir."mini_".$wynik."><br>";
  45.  
  46. echo '</td>';
  47. echo '<td width="327">';
  48. echo 'tytuł/opis zdjęcia (pole opcjonalne)';
  49. echo'<br>';
  50. echo'<textarea cols=30 rows=4 name="tytul[]"></textarea></td>';
  51. echo '</tr>';
  52. } 
  53. } else {
  54. echo '<tr>';
  55. echo '<td colspan="2">';
  56. echo "rozmiar zdjęcia <strong>$wynik</strong> jest zbyt duży, klikając dalej zdjęcie <strong>$wynik</strong> nie zostanie uwzględnione";
  57. }
  58. echo '</td>';
  59. echo '</tr>';
  60.  
  61.  
  62.  
  63.  
  64. }
  65. echo '<tr>';
  66. echo '<td colspan="2" align="center">';
  67. echo "<input type='hidden' name='sciezka' value='$currentdir' />";
  68. echo'<input type="submit" name="wgraj" value="dalej" />';
  69. echo'</form>';
  70. echo '</td>';
  71. echo '</tr>';
  72. echo '</table>';
  73. echo '</div>';
  74.  
  75.  
  76. ?>



oraz up.php
  1. dziekujemy operacja powiodla sie
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  <?php
  9.  foreach ($_POST["tytul"] as $klucz) {
  10.  echo 'tytuł: '.$klucz.'<br>';
  11.  $nazwapliku = $_REQUEST['sciezka'];
  12.  $ss=fopen($nazwapliku."tytul.txt","a");
  13.  fputs($ss,chr(10).$klucz.chr(10));
  14.  fclose($ss);
  15.  
  16.  
  17. }
  18.  ?>


Jak widac przekazuje tablice,
  1. <?php
  2. echo'<textarea cols=30 rows=4 name="tytul[]"></textarea></td>';
  3. ?>
, jednak pole w formularzu jest opcjonalne i nie zawsze ktos tam wpisze tytyl zdjecia. Jak zrobic zeby nie wywalalo tego bledu: Warning: Invalid argument supplied for foreach() in /home.11/t/r/e/trekeart/www/up.php on line 9
Hazel
Najprościej zastosować instrukcję warunkową...
Jeśli $_POST['tytul'] jest puste to w ogóle nie wykonuje pętli...
[php]
if(!$_POST['tytul'])
{
// co jeśli pole pozostało puste?
}
else
{
//pętla
}
Matiash
np.

  1. <?php
  2. if(empty($_POST["tytul"])) {
  3. echo "dziekujemy operacja powiodla sie";
  4. }else{
  5. foreach ($_POST["tytul"] as $klucz) {
  6. echo 'tytuł: '.$klucz.'<br>';
  7. $nazwapliku = $_REQUEST['sciezka'];
  8. $ss=fopen($nazwapliku."tytul.txt","a");
  9. fputs($ss,chr(10).$klucz.chr(10));
  10. fclose($ss);
  11.  
  12.  
  13.  }
  14.  }
  15. ?>
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.