Goeiedag beste mensen...
Ik heb een bestandje profiel.php op mijn site staan,
maar nu wil ik dus een edit_profiel.php maken!

Ik heb nu een stukje code voor het editen van mijn 'email' en dacht
ik ga het even testen, maar hij geeft een blanco page aan..
Zou iemand mij hiermee kunnen helpen??

Als er code nodig is van mijn database structuur of van profiel.php dan hoor ik het wel.

Mvg,
Reduan Kurtaj



<?php
session_start(); /* Start de sessie.*/

    /* Errors weergeven.*/
    ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

include('conn.php');/* Maakt verbinding met de database.*/

    /* SQL debug*/
    define('DEBUG_MODE',true);  // true == aan, false == uit

	/* Functie voor SQL debug*/
    function showSQLError($sql,$error,$text='Error')
    {
        if (DEBUG_MODE)
        {
            return  '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
        }
        else
        {
            return $text;
        }
    }     

/*Kijk of de formulier is verzonden, zoniet dan krijg je de foutmelding.*/
  if (!isset($_POST['action'])) {
} 
  else {
    trigger_error('FOUT: $sql,$error,$text');
  }
	
	case 'Edit_email':
	
	/* Voor de zekerheid het 1 en ander beveiligen*/
    $email = mysql_real_escape_string(htmlentities(trim($_POST['email'])));
    $sql = "UPDATE users 
              SET email = '".$email."' 
              WHERE id = ".$_SESSION['id'].";";
  if(!$res = mysql_query($sql))
{
    echo showSQLError($sql, mysql_error());
	}
	else
	{
              echo 'profiel is geupdate';
          }
		  
    if($_SESSION['id'] == $rij['id']){
echo 
    '
	<tr><td>      
    <form action="" method="post">
    <input type="text" name="email"></td><td>
    <input type="submit" name="update" value="update"></td>  
    </form>
	</td></tr>
	';
}
    else
	{ 
trigger_error('FOUT: $sql,$error,$text ');
	}
?>

<?php
switch ($_REQUEST['action'])
?>

Waar komt die action vandaan?
Zet regel 6 en 7 boven je include() neer. Voor hetzelfde geld zit er een fout in je conn.php waardoor je alsnog een blanco scherm krijgt bij het uitvoeren van je script.

Verder wat opmerkingen:
- Waarom $_REQUEST en niet expliciet $_POST of $_GET?
- Waarom die(). Niemand gaat dood als er iets fout wordt gedaan, dus handel dit netjes af met een nette if-else structuur.
- Zorg voor nette foutafhandeling op lijn 40. Ook query's horen niet dood te gaan door die(), je hebt al een prachtige showSQLError() functie. Benut deze dan ook.

Ik ken je opbouw van je hele scripts niet, maar zou het niet handiger zijn om de showSQLError() in ieder geval globaal voor elke site in te laden, net als de debug-define, die prima in je configuratie-file zou passen.
Nu heb je heel veel dubbele code, vermoed ik.
Bedankt voor je reactie - Aar -

Ik heb 'geprobeerd' de foutafhandeling anders te doen via een tut hier op phphulp.
En denk dat je gelijk hebt om dat stukje showSQLerror() bij me
conn.php te zetten en dat dan te includen!!

En het aangepaste script staat nu gewoon in me 'hoofdbericht'

Mvg,
Reduan
Je gebruikt nog steeds niet je eigen functie voor de error.
- SanThe - op 13/01/2014 16:57:18

Je gebruikt nog steeds niet je eigen functie voor de error.


nu wel als 't goed is??
Nee.

trigger_error(mysql_error().'<br /> in query: '.$sql)

moet dan zij:
echo showSQLError($sql, mysql_error());
oke bedankt - SanThe -
gelijk even aangepast!!
maar ik krijg nog steeds geen fout melding van me script alleen dit:



Kan de pagina niet weergeven
 
  HTTP 500 
 
    
Meest waarschijnlijke oorzaken:
•Aan deze website wordt gewerkt.
•De website bevat een programmeerfout.
 


ik denk dat ik ergens een { of } ben vergeten maar weet niet waar!!
Ik zie een losse case 'Edit_email':
En geen switch.
De hele logica van je script is nu weg. Nog steeds wordt er op een 'action' parameter gechecked die helemaal niet in het form staat. Dat if statement heeft verder ook geen body, in de else wordt wel een fout getriggered. Daarna gaat het script echter waarschijnlijk wel gewoon verder en dus wordt dan nog wel die losstaande case gezien en als je die alleen weghaalt kom je alsnog in je update terecht.

Ik denk dat je beter even opnieuw kan beginnen.
Erwin H op 13/01/2014 17:24:43

Ik denk dat je beter even opnieuw kan beginnen.


Hoe en waarmee zou ik moeten beginnen, miss een voorbeeld van iets???
heb werkelijk geen idee meer :(

heb al op internet enzo gezocht maar kan niks bruikbaars vinden.

Mvg,
Reduani

Reageren