mapnaam wil maar niet veranderen.

Status
Niet open voor verdere reacties.

Beetsma

Gebruiker
Lid geworden
28 mrt 2012
Berichten
83
hoi allemaal,

Ik heb een scriptje geschreven waarmee de naam van een record kan worden veranderd van de database, deze record wordt gebruikt om in te loggen zodat members hun bestanden kunnen uploaden. Dus ze hebben hun eigen mapje die wordt aangemaakt zodra ze zich aanmelden.

Het veranderen van de record gaat prima alleen wil ik graag ook dat de mapnaam wordt aangepast als de gebruikersnaam wordt aangepast.
Dit will alleen niet lukken.

Het script:

PHP:
<!DOCTYPE HTML>

<?php
Include("../snijtechftp/globals_on.php");
include 'connection.php';

if (!isset ($_POST['submit'])){



       
		$q ="SELECT * FROM members WHERE ID = $id";
		$result = mysql_query($q);
		$person = mysql_fetch_array ($result);
	    $oud=$person['username'];
	
       

?>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css" />
</head>
<body>
				<div id="stylized" class="myform">
				<form id="form" name="invullen" method="post" action="aanpassen.php"/>
				<h1>aanpassen</h1>
				<p>Gebruikersnaam en wachtwoord aanpassen</p>

				<label>gebruikersnaam
				<span class="small"></span>
				</label>
				<input type="text" name="username" value="<?php echo $person['username']; ?>" />

				<label>wachtwoord
				<span class="small"></span>
				</label>
				<input type="text" name="password" value="<?php echo $person['password']; ?>" />

				<input type="hidden" name="id" value="<?php echo $_GET['id'];?> "/>
			        <input type="hidden" name="oud" value="<?php echo $oud;?> "/>
				
				<button type="submit" name="submit"> aanpassen</button>
				
				

				</form>
				</div>

</body>
				
<?php
}
if (isset($_POST['submit'])){

$toName = "/../snijtech/bestandsbeheer/bestuur/$_POST[username]";
rename ("/../snijtech/bestandsbeheer/bestuur/$oud" ,"$toName");


$u = "UPDATE members SET username ='$_POST[username]', password='$_POST[password]' WHERE ID = $_POST[id]";
mysql_query ($u) or die (mysql_error());

echo "<body background='achtergrondhoofd2.jpg'><h2><center>gebruiker is succesvol aangepast!<a href='index.php'><br> Ga terug </a></h2> </center>";
} else {"vul de velden goed in"; 
}
?>

Als iemand de fout ziet , andere fouten of suggesties heeft hoor ik dat graag.

met vriendelijke groet,
Beetsma.
 
Laatst bewerkt:
Ik weet niet zeker of dit de oplossing is maar wie weet, daarnaast heb ik nog wat andere aanpassingen gedaan:

  • De slash(/) bij input field en link weg gehaald, dit is volgens de w3
  • Variable naam aangepast voor beter leesbaarheid
  • Op het moment dat je een if statement bij html gebruikt kun je het beste gebruik maken van : en op het eind endif; dit is makkelijker om de code te lezen dan de {
  • einde </html> toegevoegd deze stond er niet in. deze staat nu ook buiten een statement zodat je pagina altijd correct wordt afgelosten volgens de w3 standaarden.

Verder moet je eigenlijk de tag <center></center> eruit halen dit heb ik nog niet gedaan maar je kan dit beter oplossen met css

Indien je nog opmerkingen hebt of vragen hoor ik dat graag :) Succes met de code!

PHP:
<!DOCTYPE HTML>
<?php
include("../snijtechftp/globals_on.php");
include 'connection.php';
 
if (!isset ($_POST['submit'])){
// $query in plaats van q zie verder onderaan voor opmerking waarom
        $query ="SELECT * FROM members WHERE ID = $id";
        $result = mysql_query($query);
        $person = mysql_fetch_array ($result);
        $oud=$person['username'];
?>
<html>
<head>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<body>
                <div id="stylized" class="myform">
                <form id="form" name="invullen" method="post" action="aanpassen.php">
                <h1>aanpassen</h1>
                <p>Gebruikersnaam en wachtwoord aanpassen</p>
                <label>gebruikersnaam
                <span class="small"></span>
                </label>
<!-- username -->
                <input type="text" name="username" value="<?php echo $person['username']; ?>">
                <label>wachtwoord
                <span class="small"></span>
                </label>
<!-- password -->
                <input type="text" name="password" value="<?php echo $person['password']; ?>">
                <input type="hidden" name="id" value="<?php echo $_GET['id']; ?> ">
                    <input type="hidden" name="oud" value="<?php echo $oud; ?> ">
                <button type="submit" name="submit"> aanpassen</button>
                </form>
                </div>              
<?php
}
if (isset($_POST['submit'])) :
//verkrijg post oude gebruikersnaam van formulier (dit was je vergeten)
$oud = $_POST['oud'] 

$toName = "/../snijtech/bestandsbeheer/bestuur/$_POST[username]";
rename ("/../snijtech/bestandsbeheer/bestuur/$oud" ,"$toName");
 
// inplaats van u heb ik er query van gemaakt dit is beter leesbaar je kan ook een andere naam kiezen voor query bijvoorbeeld : $updateUsername, is bij een query wel overdreven maar het kan.
$query = "UPDATE members SET username ='$_POST[username]', password='$_POST[password]' WHERE ID = $_POST[id]";
mysql_query ($query) or die (mysql_error());
?>
<body background='achtergrondhoofd2.jpg'><h2><center>gebruiker is succesvol aangepast!<a href='index.php'><br> Ga terug </a></h2> </center>
<?php else : ?>
 echo 'vul de velden goed in' ; 
<?php endif; ?>
?>
</body>
</html>
 
Laatst bewerkt:
  • De slash(/) bij input field en link weg gehaald, dit is volgens de w3
Het is een detail, maar dit klopt niet. Hij gebruikt het HTML5 doctype, daarbij mag je wel degelijk iedere tag afsluiten met een / (bij xhtml moest dit). Bij een HTML5 doctype is <br /> dus correct, maar <br> ook.
 
Hij gebruikt het HTML5 doctype, daarbij mag je wel degelijk iedere tag afsluiten met een / (bij xhtml moest dit). Bij een HTML5 doctype is <br /> dus correct, maar <br> ook.

je hebt inderdaad gelijk, was even in de war met html 4 traditioneel, daar wordt het namelijk afgeraden.
 
Zeer bedankt voor nog een reactie, ik zit alleen met een unexpected t variable op lijn 43
PHP:
$toName = "/../snijtech/bestandsbeheer/bestuur/$_POST[username]";

ik zie het zo 1 2 3 niet.

iemand suggesties?
 
$oud = $_POST['oud'] moet $oud = $_POST['oud']; zijn volgens mij (lijn 41).
 
oja had ik zelf ook kunnen vinden, bedankt !

het veranderen van de mapnaam werkt alleen nog niet ik krijg de volgende fout:


Warning: rename(../snijtechftp/bestandsbeheer/bestuur/test ,../snijtechftp/bestandsbeheer/bestuur/test2) [function.rename]: De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist. (code: 123) in C:\xampp\htdocs\test\aanpassen.php on line 44


Waarschijnlijk staat de mappenstructuur niet goed maar ik heb dat eens goed nagekeken en het moet goed staan.
 
doe anders dit eens, dan kan je zien hoe ze allebei verwijzen er vergelijken

misschien moet je wel de gehele mappen structuur wegzetten maar weet niet zeker

PHP:
$oud = $_POST['oud'] 
 
$toName = "/../snijtech/bestandsbeheer/bestuur/$_POST[username]";
$oldName = "/../snijtech/bestandsbeheer/bestuur/$oud"; 

echo "nieuwe pad". $toname."<br>";
echo "oude pad" .$oldName;

//eventueel als het dan zou kloppen kan je ook dit doen(wel de // weg halen als je er gebruik van wilt maken)
//rename($oldName, $toName);
 
Laatst bewerkt:
Hoi klaaspeter,

Ik heb je code geprobeerd maar krijg weer te zien dat de structuur van men mappen op 1 of andere manier niet goed staan.

De syntaxis van de bestandsnaam, mapnaam of volumenaam is onjuist. (code: 123) in C:\xampp\htdocs\test\aanpassen.php on line 44
 
heb je de twee echo's die ik had gemaakt ook goed vergeleken? misschien toch een klein spelfoutje ofzo,

Daarnaast probeer eens de volledige pad misschien dat dat werkt
 
Hoi klaas zat in je ene echo inderdaad een spelfout maar die is verholpen, heb nu ook het voledige pad gekozen maar alsnog de foutmelding.

zo ziet er nu uit:

$toName = "C:/xampp/htdocs/snijtechftp/bestandsbeheer/bestuur/$_POST[username]";
$oldName = "C:/xampp/htdocs/snijtechftp/bestandsbeheer/bestuur/$oud";


ik heb echt geen flauw idee wat ik fout doe.
 
Waar ik wel achter ben gekomen is dat waar het admin paneel staat ( om mapjes aan te maken en te wijzigen) in een andere map staat waar daadwerkelijk een map moet worden aangepast voor de duidelijk heid:

- Script admin paneel staat in : htdocs/test/aanpassen.php (rename functie)
- Rename functie moet map veranderen in htdocs/snijtechftp/bestuur

maakt het dan uit in welke map je script staat i.v.t welke mapnaam je wilt veranderen of maakt dit geen ene moer uit ?
 
het moet zo zijn volgens zie, zie de / die ik heb weggehaald voor de puntjes!
Daarnaast heb ik ook de na de / achter bestuurd ". weggezet anders komt namelijk de post niet binnen was ik vergeten
PHP:
$toName = "../snijtech/bestandsbeheer/bestuur/".$_POST['username'];
$oldName = "../snijtech/bestandsbeheer/bestuur/".$oud;
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan