Problem ze składnią / działaniem kodu

0

Witam. Tworzę wsparcie dla działań magazynowych. Chodzi o to żeby po pobraniu materiału z magazynu wysyłał się mail z informacją dla kogo i co zostało pobrane (w postaci listy).
Od strony bazy wszystko jest ok, natomiast w kodzie jest błąd/błędy, bo mail się nie wysyła. Proszę o pomoc.

<?php session_start();
require_once('db/db.php');
?>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
	
<?php

$klient = mysqli_real_escape_string($connect, $_POST['klient']);



function klient_nazwa()
{
global $connect;
$wynik3='';
$query3="SELECT klient_id FROM klienci WHERE id='".$_POST['klient']."'";
$result3=mysqli_query($connect, $query3);

if($result3)
{
while($dat3=mysqli_fetch_assoc($result3))
$wynik3.=''.$dat3['klient_id'].'';
}
return $wynik3;
}



function klient_mail()
{
global $connect;
$wynik3='';
$query3="SELECT adres_mail FROM klienci WHERE id='".$_POST['klient']."'";
$result3=mysqli_query($connect, $query3);

if($result3)
{
while($dat3=mysqli_fetch_assoc($result3))
$wynik3.=''.$dat3['adres_mail'].'';
}
return $wynik3;
}


// odbieramy dane z formularza 
$data_pobr = mysqli_real_escape_string($connect, $_POST['data_pobr']);
$nr_zlec = mysqli_real_escape_string($connect, $_POST['nr_zlec']);
$klient2 = (''.klient_nazwa().'');
$nr_pobr = (''.date("Ymd").$klient.'');
$indeks = mysqli_real_escape_string($connect, $_POST['material']);
$ilosc = mysqli_real_escape_string($connect, $_POST['ilosc']);
$opis = mysqli_real_escape_string($connect, $_POST['opis']);
$uwagi_pobr = mysqli_real_escape_string($connect, $_POST['uwagi_pobr']);



if($indeks && $ilosc && $klient)
		// 1 jeżeli wpisano jw i czy na stanie jest więcej lub tyle samo sztuk materiałów jak na pobraniu
		{
		$rekordy = mysqli_query($connect, "SELECT indeks, stan FROM magazyn WHERE indeks='$indeks' AND stan >= $ilosc LIMIT 1");
		//2 jeżeli materialy istnieją w bazie w wystarczającej ilości
    	if(mysqli_num_rows($rekordy)==1)
		// aktualizuje stan
		{
		mysqli_query($connect, "UPDATE magazyn SET stan=stan-$ilosc WHERE indeks='$indeks'");
		// dodajemy rekord do tabeli pobrania
		$ins = mysqli_query($connect, "INSERT INTO pobrania (data_pobr, nr_pobr, nr_zlec, klient, material, ilosc, opis, uwagi_pobr)
	 	VALUES('$data_pobr','$nr_pobr','$nr_zlec','$klient2','$indeks','$ilosc','$opis','$uwagi_pobr')");
    // zapisujemy zmienne sesyjne
		$_SESSION['nr_zlec']=$nr_zlec;
	  $_SESSION['klient']=$klient;

		$lista='';
		$mail_info = mysqli_query($connect,"SELECT nr_pobr,material,ilosc,opis,uwagi_pobr FROM pobrania WHERE nr_pobr='$nr_pobr'");
		if(mysqli_num_rows($mail_info) >= 1 && klient_mail() != '')
		//3
		{
		while ($row=mysqli_fetch_assoc($mail_info))
		$lista.='' .$row['material']. ' ' .$row['ilosc']. ' ' .$row['opis']. '<br>DPD: ' .$row['uwagi_pobr']. '';
		return $lista;

		$headers_1  = 'MIME-Version: 1.0' . '\r\n';
		$headers_1 .= 'Content-type: text/html; charset=utf-8' . '\r\n';
		$headers_1 .= 'From: <[email protected]>' . '\r\n';

		$wiadomosc_1 = '<div style="font-size: 18px; font-family: arial, Helvetica, serif;">Witam<br><br>Wysyłamy do '.$klient2. ' części jak niżej:<br>' .$lista. '</div>';
		// 
		$tytul = ''.$klient2.' - potwierdzenie wysyłki';
		$mail_cust_1 = mail(klient_mail(), $tytul, $wiadomosc_1, $headers_1);
		
      //4
			if($ins) {
	 header('Location: http://' . $_SERVER['HTTP_HOST'] . '/wys.php');
	 echo "</body></html>";
	 //end4
	 }
    else
	 //5
	 {
	 echo "<h2>Nie udało się dodać materiału.</h2>";
	 echo "<meta http-equiv=\"refresh\" content=\"4; URL=wys.php\">";
	 echo "</body></html>";
    //end5
	 }
     			//3
				} else
						//6
						{
            		echo "<h1>Brak maila w bazie.</h1>";
						echo "</body></html>";
						//end6
        				}

		//end2
		} else
		//7
		{
		echo "<h1>Błąd - brak materiału w bazie.</h1>";
		echo "</body></html>";
		//end7
		}
	//end1
	}

?>
0

natomiast w kodzie jest błąd/błędy a jakież to błędy pehapowy kawalerze?

0

Gdybym wiedział jaki jest błąd to bym go poprawił...Wiem, że trzeba ustawić raportowanie błędów, ale nie wiem jak i gdzie to zrobić.

3

Ja tam patrząc na ten kod nie wiem co on ma robić. Jest jakaś pętla while a za nią return. Za returnem ma się wysłać maila?
Rozbij sobie ten kod na funkcje po bożemu. Niech będzie funkcja która wysyła mail. Funkcja która pobiera jakieś dane itd. Jak kod będzie czytelny to sobie sam problemy rozwiążesz.
Acha no i do wysyłania maili pewnie lepiej użyć jakiejś biblioteki typu Swift mailer lub PHPmailer.
No i testuj sobie partiami typu samo wysłanie maila itp.

1

Dzięki jurek1980. Przemyślałem to wszystko od początku i zrobiłem zupełnie inaczej.

1 użytkowników online, w tym zalogowanych: 0, gości: 1