<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>favorieten4-8</title>
<link rel="stylesheet" href="phpcursus.css" type="text/css" />
<link rel="shortcut icon" href="Images/hortensia.ico" />
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<meta name="keywords" content="cursus PHP" />
<meta name="description" content="Uitleg werken met PHP" />
<meta name="Autor" content="Solveg" />
<style type="text/css">
BODY    {scrollbar-3dlight-color:#999966;
         scrollbar-arrow-color:#996666;
         scrollbar-base-color:#999966;
         scrollbar-track-color:#996666;
         scrollbar-darkshadow-color:#999966;
         scrollbar-face-color:#996666;
         scrollbar-highlight-color:#999966;
         scrollbar-shadow-color:#996666}
</style>
<script language="JavaScript" type="text/JavaScript">
<!--
function MM_reloadPage(init) {  //reloads the window if Nav4 resized
  if (init==true) with (navigator) {if ((appName=="Netscape")&&(parseInt(appVersion)==4)) {
    document.MM_pgW=innerWidth; document.MM_pgH=innerHeight; onresize=MM_reloadPage; }}
  else if (innerWidth!=document.MM_pgW || innerHeight!=document.MM_pgH) location.reload();
}
MM_reloadPage(true);
//-->
</script>
</head>
<br />
<table width="65%" border="1" align="center" cellspacing="10" bordercolor="#000000" bgcolor="#999966" id="PHP">
  <tr bordercolor="#000000" bgcolor="#999999"> 
    <td width="72%" colspan="3"> <table width="100%" border="1" cellpadding="6" cellspacing="10" bordercolor="#000000" bgcolor="#996666">
        <tr> 
          <td><table width="100%" border="1" cellpadding="100" cellspacing="6" bordercolor="#000000" bgcolor="#996666">
              <tr bgcolor="#D6D6AD"> 
                <td width="6%" bordercolor="#000000" bgcolor="#D6D6AD"></td>
              </tr>
              <tr bgcolor="#D6D6AD">
                <td bordercolor="#000000" bgcolor="#D6D6AD"><p align="right"><a href="week4.php"><strong>Terug</strong></a> <strong><a href="show.php">Source</a></strong><img src="Images/hallosurfer.gif" alt="Hallo Surfer" width="113" height="117" /></p> 
                    
                  <?php require("functie4-8.php");
                   
if (IsSet(
$_POST['password']) && $_POST['password'] == "Sol") 
{ 
/* 
        password is in orde!! 
        als welke_actie geen waarde heeft, dan gewoon de favorietenpagina opmaken 
    */
/* 
als welke_actie geen waarde heeft, dan gewoon de favorietenpagina opmaken 
*/ 
if (IsSet($_POST['welke_actie'])) 
{ 
    if (
$_POST['welke_actie'] == "Wijzig") 
{ 
/* 
als verwijzing_wijzigen is afgesloten met een 
succesvolle aanpassing van het favorietenbestand 
wordt true teruggegeven, anders false 
*/ 
     
if (verwijzing_wijzigen($_POST['regel'])) 
{ 
    
pagina_opmaken(); 
} 
} 
// einde Wijzig 
    
elseif ($_POST['welke_actie'] == "Gooi weg") 
{ 
    
verwijzing_verwijderen($_POST['regel']); 
    
pagina_opmaken(); 
}
// einde Gooi weg 
    
elseif ($_POST['welke_actie'] == "Nieuw") 
{ 
/* 
in het formulier wordt de actie op Wijzig gezet, dus 
het vervolg van deze actie wordt afgehandeld in de tak Wijzig 
*/ 
        
wijzigingsformulier("", "", "", ""); 
} 
// einde Nieuw 
    
else // welke_actie heeft een onbekende waarde 
{ 
        
pagina_opmaken(); 
} 
} 
else 
// welke_actie heeft nog helemaal geen waarde gekregen 
{ 
    
pagina_opmaken(); 
}
// einde if IsSet welke_actie 
} // einde if password in orde  
else 
{ 
// password nog niet in orde bevonden 
    
if (IsSet($_POST['password'])) 
{ 
    echo 
'<p><h3><b>MIJN FAVORIETEN</b></h3></p>';    
    echo 
'<p>Mis... probeer het nog een keer! misschien is het wel "Sol"!!</p>'; 
} 
    else 
{ 
    
    echo 
'<p>Om verder te kunnen moet je hier het password invullen!</p>'; 
} 
    echo 
' 
        <form action="'
.$_SERVER['PHP_SELF'].'" method="post"> 
        <input type="password" name="password" size="10" maxlength="10" style="background-color:##D6D6AD;border-color:#996666;border-width:6;color:#333366;font-weight:bold;font-size:16"><br><br> 
        <input type="submit" name="submit" value="Sesam!" style="background-color:##D6D6AD;border-color:#996666;border-width:6;color:#333366;font-weight:bold;font-size:16"> 
        </form>'
; 
}  
?>
                  <div align="right"></div></td>
              </tr>
            </table></td>
        </tr>
      </table></td>
  </tr>
</table>
</body>
</html>
<?php echo "<?xml version=\"1.0\" encoding=\"iso-8859-1\"?".">"; ?>
<?php 
/* 
function pagina_opmaken() 
Maak een pagina met verwijzingen naar favorieten. 
*/ 
function pagina_opmaken() 
{ 
echo 
'<p><h3><b>MIJN FAVORIETEN</b></h3></p>';

// het bestand met de verwijzingen in een array inlezen 
    
$array_favorieten = file("favo.txt"); 
// de regelovergangen uit de tabel verwijderen, die worden bij het 
//wegschrijven van het bestand opnieuw toegevoegd 
    
for ($i=0; $i<count($array_favorieten); $i++) 
{ 
    
$array_favorieten[$i] = trim($array_favorieten[$i]); 
} 
// tellen hoeveel elementen er in de tabel zijn terechtgekomen 
    
$totaal = sizeof($array_favorieten); 
// als er geen verwijzingen zijn een melding geven 
    
if ($totaal == 0) 
{ 
    echo 
"<p>Er zijn geen verwijzingen aangetroffen in het bestand met favorieten.</p>"; 
} 
    else 
{ 
// een variabele om te bepalen of de naam van de rubriek getoond moet worden 
    
$rubriek_vorig = ""; 
// van elk element in de array een verwijzing maken 
     
foreach ($array_favorieten as $regel) 
{ 
// regel opsplitsen in rubriek, linknaam en linkurl 
// zoeken naar  de haakjes, let daarbij op de beginpositie voor het zoeken 
    
$vanaf1 = strpos($regel, '(', 0) + 1;     
    
$lengte1 = strpos($regel, ')', 0) - $vanaf1; 
    
$rubriek = substr($regel, $vanaf1, $lengte1); 

    
$vanaf2  = strpos($regel, '(', $vanaf1+$lengte1) + 1; 
    
$lengte2    = strpos($regel, ')', $vanaf2) - $vanaf2; 
    
$linknaam  = substr($regel, $vanaf2, $lengte2); 

    
$vanaf3  = strpos($regel, '(', $vanaf2+$lengte2) + 1; 
    
$lengte3    = strpos($regel, ')', $vanaf3) - $vanaf3; 
    
$linkurl = substr($regel, $vanaf3, $lengte3); 
//  rubriek alleen bij verandering tonen 
    
if ($rubriek != $rubriek_vorig) 
{ 
    echo 
'<p><b>' . $rubriek . '</b></p>'; 
    
$rubriek_vorig = $rubriek; 
} 
// de verwijzing zelf, voorzien van de knop Wijzig en gooiweg
     
echo '

        <form action="'
.$_SERVER['PHP_SELF'].'" method="post">
        <input type="submit" name="welke_actie" value="Wijzig" style="background-color:##D6D6AD;border-color:#996666;border-width:6;color:#333366;font-weight:bold;font-size:16">
        <input type="submit" name="welke_actie" value="Gooi weg" style="background-color:##D6D6AD;border-color:#996666;border-width:6;color:#333366;font-weight:bold;font-size:16">
        <input type="hidden" name="password" value="' 
. $_POST['password'] . '"> 
        <input type ="hidden" name="regel" value="' 
. $regel . '">
        <a target="_blank" href="' 
. $linkurl . '">' . $linknaam . '</a>
        </form><br>'
;  
} 
// einde foreach() 
} 
// einde if ($totaal == 0) 
    
echo ' 
        <form action="'
.$_SERVER['PHP_SELF'].'" method="post"> 
        <input type="hidden" name="password" value="' 
. $_POST['password'] . '"> 
        <input type="submit" name="welke_actie" value="Nieuw" style="background-color:##D6D6AD;border-color:#996666;border-width:6;color:#333366;font-weight:bold;font-size:16"></form>'
; 
} 


//einde pagina_opmaken() 

/* 
function verwijzing_wijzigen() 
Een bestaande verwijzing wijzigen of een nieuwe verwijzing toevoegen. 
$w_regel bevat de verwijzing die gewijzigd moet worden 
als $w_regel leeg is, gaat het om een nieuwe verwijzing 
De terugkeerwaarde van deze functie: 
true: de wijziging is helemaal afgerond, de favorietenpagina kan opnieuw getoond worden 
false: de wijziging is nog onderhanden 
*/ 
function verwijzing_wijzigen($w_regel) 
{ 
// de drie velden die een nieuwe inhoud zullen krijgen 
    
$w_rubriek = ""; 
    
$w_linknaam = ""; 
    
$w_linkurl = ""; 

// controleer of de rubriek ingevuld is 
    
if (IsSet($_POST['rubriek'])) 
{ 
        
$w_rubriek = $_POST['rubriek']; 
} 

// controleer of de linknaam ingevuld is 
    
if (IsSet($_POST['linknaam'])) 
{ 
        
$w_linknaam = $_POST['linknaam']; 
} 

// controleer of de linkurl ingevuld is 
    
if (IsSet($_POST['linkurl'])) 
{ 
        
$w_linkurl = $_POST['linkurl']; 
} 


// als alledrie de velden zijn ingevuld: bestand met favorieten aanpassen 
    
if ($w_rubriek != "" && $w_linknaam != "" && $w_linkurl != "") 
{ 
        
bestand_aanpassen($w_regel, $w_rubriek, $w_linknaam, $w_linkurl); 
        return 
true; 
} 

    
// als niet alledrie de velden ingevuld zijn: een melding en het formulier opnieuw tonen 
    
echo 'Alle velden moeten verplicht ingevuld worden!'; 
    
wijzigingsformulier($w_regel, $w_rubriek, $w_linknaam, $w_linkurl); 
    return 
false; 

} 
// einde verwijzing_wijzigen() 

 /* 
function verwijzing_verwijderen() 
Een verwijzing uit het bestand verwijderen. 
*/ 
function verwijzing_verwijderen($v_regel) 
{ 
// het bestand met de verwijzingen in een array inlezen 
    
$array_favorieten = file("favo.txt"); 

// de regelovergangen uit de tabel verwijderen, die worden bij 
// het wegschrijven van het bestand opnieuw toegevoegd 
    
for ($i=0; $i<count($array_favorieten); $i++) 
{ 
        
$array_favorieten[$i] = trim($array_favorieten[$i]); 
} 

// opzoeken welk element het in de tabel is 
    
$array_index  = array_search($v_regel, $array_favorieten); 

// de verwijzing verwijderen 
    
array_splice($array_favorieten, $array_index, 1); 

// de tabel samenvoegen tot een bestand 
    
$favo_bestand = implode("\r\n", $array_favorieten);  
    
// het bestand met favorieten wegschrijven 
    
$fh_favo = fopen("favo.txt", "w"); 
    if (
$fh_favo) 
{ 
        
fwrite($fh_favo, $favo_bestand); 
} 
    
fclose($fh_favo); 

} 
// einde verwijzing_verwijderen() 

/* 
function bestand_aanpassen () 
Het bestand met favorieten daadwerkelijk aanpassen. 
In $b_regel staat de oorspronkelijke verwijzing 
(leeg ingeval van een nieuwe verwijzing). 
In de andere drie variabelen staan eventueel aangepaste gegevens. 
*/ 
function bestand_aanpassen ($b_regel, $b_rubriek, $b_linknaam, $b_linkurl) 
{ 
// inhoud van de nieuwe verwijzing samenstellen 
    
$b_nieuwe_regel = '(' . $b_rubriek . ')(' . $b_linknaam . ')(' . $b_linkurl . ')'; 

// het bestand met de verwijzingen in een array inlezen 
    
$array_favorieten = file("favo.txt"); 

// de regelovergangen uit de tabel verwijderen, die worden bij het 
//wegschrijven van het bestand opnieuw toegevoegd 
    
for ($i=0; $i<count($array_favorieten); $i++) 
{ 
        
$array_favorieten[$i] = trim($array_favorieten[$i]); 
} 

// alleen voor bestaande elementen het origineel verwijderen 
    
if ($b_regel != "") 
{ 
// opzoeken welk element het in de array is 
        
$array_index  = array_search($b_regel, $array_favorieten); 

// de oude verwijzing verwijderen 
        
array_splice($array_favorieten, $array_index, 1); 
} 

// de vernieuwde verwijzing toevoegen 
    
array_push($array_favorieten, $b_nieuwe_regel); 

// de array sorteren zodat de favorieten in de goede volgorde getoond worden 
    
sort ($array_favorieten); 

// de array samenvoegen tot een bestand 
    
$favo_bestand = implode("\r\n", $array_favorieten);     
// het bestand met favorieten wegschrijven 
    
$fh_favo = fopen("favo.txt", "w"); 
    if (
$fh_favo) 
{ 
        
fwrite($fh_favo, $favo_bestand); 
} 
    
fclose($fh_favo); 
} 
// einde bestand_aanpassen () 



/* 
function wijzigingsformulier () 
Toon een formulier waarmee een verwijzing aangepast kan worden. 
In $f_regel staat de oorspronkelijke verwijzing 
(leeg ingeval van een nieuwe verwijzing). 
In de andere drie velden staan eventueel aangepaste gegevens. 
*/ 

function wijzigingsformulier ($f_regel, $f_rubriek, $f_linknaam, $f_linkurl) 
{ 
// oorspronkelijke verwijzing ontrafelen 
// voor een nieuwe link is er geen oorspronkelijke verwijzing 
    
if ($f_regel != "") 
{ 
        
$vanaf1 = strpos($f_regel, '(', 0) + 1;     
        
$lengte1 = strpos($f_regel, ')', 0) - $vanaf1; 
        
$rubriek = substr($f_regel, $vanaf1, $lengte1); 

        
$vanaf2 = strpos($f_regel, '(', $vanaf1+$lengte1) + 1; 
        
$lengte2 = strpos($f_regel, ')', $vanaf2) - $vanaf2; 
        
$linknaam = substr($f_regel, $vanaf2, $lengte2); 

        
$vanaf3 = strpos($f_regel, '(', $vanaf2+$lengte2) + 1; 
        
$lengte3 = strpos($f_regel, ')', $vanaf3) - $vanaf3; 
        
$linkurl = substr($f_regel, $vanaf3, $lengte3); 
} 

// bestaande inhoud van een veld laten zien, dat scheelt typewerk 
    
if ($f_rubriek == "") 
{ 
        
$f_rubriek = $rubriek; 
} 

    if (
$f_linknaam == "") 
{ 
        
$f_linknaam = $linknaam; 
} 

    if (
$f_linkurl == "") 
{ 
        
$f_linkurl = $linkurl; 
} 

// het formulier voor een wijziging naar het scherm schrijven 
    
echo ' 
        <form action="'
.$_SERVER['PHP_SELF'].'" method="post"> 
        <input type="hidden" name="password" value="' 
. $_POST['password'] . '"> 
        <input type ="hidden" name="regel" value="' 
. $f_regel . '"> 
        <p> 
        Rubriek:<br> 
        <input type="text" name="rubriek" size="50" maxlength="100" value="'
.$f_rubriek.'"><br> 
        Linknaam:<br> 
        <input type="text" name="linknaam" size="50" maxlength="100" value="'
.$f_linknaam.'"><br> 
        Link URL:<br> 
        <input type="text" name="linkurl" size="50" maxlength="255" value="'
.$f_linkurl.'"> 
        </p> 
        <p>Wijzig de inhoud van de rubriek en klik op Wijzig! Alle velden zijn verplicht.</p> 
        <p><input type="submit" name="welke_actie" value="Wijzig" ></p> 
        </form> 
        '
; 

} 
// einde wijzigingsformulier() 
?>