Beste,

Ik heb sinds jaar en dag een website die ik ooit gemaakt heb uit interesse en hobby. Nu is mijn server (Synology) geüpdatet naar een nieuwere php versie en werkt mijn website niet meer. Ik heb van alles geprobeerd maar mijn kennis is niet toereikend... Wie zou mij kunnen helpen om mijn website weer aan de eisen van deze tijd te kunnen maken.

Het betreft onderstaande code waar ik tegen aanloop. Het betreft een php bestand van vele, maar deze geeft foutmeldingen...

Alvast bedankt voor diegene die er naar wil kijken en er aandacht aan besteed!

Groet,

Marc

<?
// met deze 2 variabelen kun je het aantal kolommen en de kolombreedte wijzigen:
$aantalkolommen=3;
$kolombreedte="205px";

//db connectie
include('connectie.php');

//username halen uit url
$array = array('<', '>', '\\', '/', '=', '.blommetje.nl');
$request_url=$_SERVER['HTTP_HOST'];
$username=str_replace($array, "", $request_url);

// selecties maken
if ($username == "www") {
    $userid = 1;
} else {
    $sql = mysqli_query($conn, "SELECT id, gebrnaam FROM users WHERE gebrnaam ='$username'");
    while ($res = mysqli_fetch_assoc($sql)) {
        trigger_error(mysqli_error());
    }

    if (mysqli_num_rows($sql) == 0) {
        header("Location: aanmeld.php");
        exit;
    } else {
        while ($row = mysqli_fetch_assoc($sql)) {
            $userid = $row['id'];
        }
        $username = $row['gebrnaam'];
    }
}

//start de opbouw van de linkpagina
$linkcode="<div class=\"linktank\"><div class=\"linkcontainer\">";

//link aantallen en afbreekwaarden bepalen
$breaksmade=-0;
$makebreak=0;
$count=0;
$counttotal=0;

$sqlll= mysqli_query($connection, "SELECT COUNT(lid) as total FROM links WHERE uid ='$userid'");
if (!($temp_2 =  mysqli_query($sqlll,$conn)))
	showerror();
	$aantallen = mysqli_fetch_array($temp_2);
	
if ($aantallen['total'] == 0)
{
	include('geenlinksgevonden.php');
}

//categorien in de geselecteerde linkdir vinden
$sqll= mysqli_query($conn, "SELECT DISTINCT cat FROM links WHERE uid ='$userid' GROUP BY cat ");
if (!($temp =  mysqli_query($sqll,$conn)))
	showerror();
	$aantalcats=mysqli_num_rows($temp);

	//kolommen
	$totalrows= $aantallen['total'] + $aantalcats;
	$splitvalue= ceil($totalrows/$aantalkolommen);

	// voor elke categorie een apart blok bouwen
	while ($groep = mysqli_fetch_array($temp))
	{
		$category=$groep["cat"];

		// voor elk blok de links selecteren & html code schrijven
		$sql= mysqli_query($conn, "SELECT * FROM links WHERE cat = '$category'  AND uid ='$userid' ORDER BY naam ");
		if (!($result =  mysqli_query($sql,$connection)))
			showerror();
			$count++;
			$counttotal++;								

			//categorie kop
			$linkcode.="<div class=\"list1\">".$category."</div><div>";
			while ($row = mysqli_fetch_array($result) )
			{
				$count++;
				$counttotal++;								

				//link
				$linkcode.="<a target=\"_blank\" href=\"".$row["link"]."\">".$row["naam"]."</a><br>";
				if ($count >= $splitvalue)
				{
					$makebreak=1;
				}
			}
			if ($makebreak==1)
			{ 

				// einde?
				if ($counttotal == $totalrows)
				{
					$linkcode.= "</div><br>";
				}

				//nog een kolom		
				else 
				{ 
					$linkcode.= "</div></div><div class=\"linkcontainer\">";
					$makebreak=0;
					$count=0;
					$breaksmade++;
				}
			}
			else
			{

			//einde categorie
			$linkcode.= "</div><br>";
			}
		}	

		//niet genoeg kolommen maar wel genoeg categorien correctie:
		if ($breaksmade < $aantalkolommen && $aantalcats >=$aantalkolommen)
		{
			function str_replace_count($search,$replace,$subject,$times) 
		{
	 	$subject_original=$subject;
	  	$len=strlen($search);   
	   	$pos=0;
	   	for ($i=1;$i<=$times;$i++) 
		{
			$pos=strpos($subject,$search,$pos);
		   	if($pos!==false) 
			{               
				$subject=substr($subject_original,0,$pos);
			   	$subject.=$replace;
			   	$subject.=substr($subject_original,$pos+$len);
			   	$subject_original=$subject;
		   	}
			else
			{
				break;
		   	}
	   	}
	   	return($subject);
	}
	$extrabreaks =$aantalkolommen-$breaksmade;
	$linkcode = str_replace_count("</div><br>",  "</div></div><div class=\"linkcontainer\">",  $linkcode, ($extrabreaks-1));
}
?>
<style type="text/css">
<!--
.list1 {
	font-weight:bold;
	background-color:#0060ac;
	/* background-color: #E96516; */
	color: #ffffff;
	text-align:center;
	/* letter-spacing: 1px; */
	line-height: 17pt;
	margin-bottom: 5px;
	border-radius: 10px 10px 10px 10px;
	/* border:2px solid #E96516; */
}

.linktank {
width:<? echo ($aantalkolommen*$kolombreedte)+($aantalkolommen*14) ?>px;
}

.linkcontainer {
	float:left;
	margin:0px 5px;
	line-height: 13pt;
	width:<? echo $kolombreedte;?>;
}
-->
</style>
<?php echo "<br clear=\"all\">".$linkcode.""; ?>
Je moet wel eerst een project aanmaken met je website erin. Dan scant Netbeans de structuur van je code in bij het inladen van het project. Je hebt dan een overzicht van variabelen, functies en classes. De errors zijn verder ook niet heel cryptisch en gewoon Engels-talig en met Google Translate naar Nederlands te vertalen.
Er zit wel een verschil tussen Warnings of Fatal errors.
Warnings zijn relatief makkelijk op te lossen door te checken of de variabele die je gebruikt daadwerkelijk bestaat.
Zo gebruik je bijv $userid op meerdere plaatsen, maar aangezien je $userid niet hebt voor-gedefinieerd, kan het goed dat $userid niet bestaat. Dit kun je controleren met if(isset($userid)) {}

Ook zie ik een aantal if-statements zonder accolades. Het is mogelijk in PHP, maar dan voert ie alleen de eerste regel uit, terwijl je er meerdere onder hebt staan. Wen jezelf aan altijd accolades te gebruiken.

Ik neem aan dat userid een integer is? Dan horen er geen haakjes om heen. Door de haakjes wordt het gezien als string en als je kolom is ingesteld als integer dan matched dit niet.

Persoonlijk zou ik de variabele ook buiten de haakjes houden.
Dus niet $groet = "Welkom $naam!"; maar $ groet = "Welkom " . $naam . "!";

Loop je code even rustig door op alle punten en lees de foutmeldingen goed. Als je nog ergens tegenaan loopt dan horen we het graag.

Reageren