Page 1 sur 1

prob avec code

Posté : 15 oct. 2006, 12:44
par pilepoil
Bonjour,

J'ai un problème avec ce bout de code :
<?php
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
echo '<input type="submit" name="sur" value="ok" />';
echo '</form>';

if(isset($_POST['sur'])) {


$Fi = fopen($Data_Path, "w+");
	
	fwrite($Fi,"");
	fclose($Fi);
	
	echo "<script type=\"text/javascript\" src=\"sup.js\"></script>";
echo "<input type=\"button\" value=\"Cliquez ici\" onClick=\"sup(1)\">";
	exit();

}
?>
Ce code fonctionne correctement mais le prob c'est qu'il s'exécute en 2 phases : d'abord le premier bouton efface un fichier puis consécutivement un second apparait. Ensuite le second bouton lance le code javascript.

En fait j'amerais savoir comment fusionner ces 2 phases de manière à ce qu'un seul bouton fasse le tout.

N'y connaissant rien en javascript c'est pas facile !

THANKS

Re: prob avec code

Posté : 15 oct. 2006, 13:21
par Truc
Salut,
Essaie comme ceci :
A placer dans le <head>
<script type="text/javascript" src="sup.js"></script>
Le code devient :
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<input type="submit" name="sur" value="ok" onclick="sup(1);">
</form>
<?php
if(isset($_POST['sur'])) {
$Fi = fopen($Data_Path, "w+");
	
	fwrite($Fi,"");
	fclose($Fi);	
	exit();
}
?>
Mais ne sachant pas vraiment ce qu'est censé faire la focntion "sup()" il se peut que rien ne se passera comme ceci :?

En attente de plus d'informations.

Posté : 16 oct. 2006, 05:05
par pilepoile
Salut truc,

Jamais un code m'aura autant pris la tête que celui-là. J'ai dû essayer une bonne trentaine de choses, dont la tienne évidemment, et aucune n'aboutit au résultat voulu (excepté la méthode en 2 phases).

Bon il faut préciser que ce bout de code s'inscrit dans un code plus vaste. Par exemple si je fais ce que tu précaunises, la fonction if(isset($_POST['sur']) n'est même pas prise en compte et le script efface le contenu du fichier $Data_Path automatiquement à chaque refresh de page. De plus l'appel au javascript ne produit plus l'effet voulu (il faut que le fichier $Data_Path se vide en premier pour que ça fonctionne). Bref galère.

Pour bien faire il faudrait que je te montre les 4 fichiers...mais je n'ai pas envie de t'embêter avec ça non plus !

Posté : 16 oct. 2006, 08:15
par Ajoloca
Bonjour,

Et comme ceci?
if(isset($_POST['sur'])) {
$Fi = fopen($Data_Path, "w+");
    fwrite($Fi,"");
    fclose($Fi);
    echo "<script type=\"text/javascript\" src=\"sup.js\"></script>";
echo "<input type=\"button\" value=\"Cliquez ici\" onClick=\"sup(1)\">";
    exit();
}
else{
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
echo '<input type="submit" name="sur" value="ok" />';
echo '</form>';
}
?>

Posté : 16 oct. 2006, 09:48
par Truc
Là il y a toujours deux boutons :?

@pilepoile
Le test (isset) doit bien remplir ses fonctions le script à l'interieur ne peut être exécuté si la condition n'est pas verifiée.

Essaie en écrivant le code JS comme ceci :
<form action="<?php echo $_SERVER['PHP_SELF'];?>" method="POST">
<input type="submit" name="sur" value="ok" >
</form>
<?php
if(isset($_POST['sur'])) {
$Fi = fopen($Data_Path, "w+");
    
    fwrite($Fi,"");
    fclose($Fi);
    ?>    
    <script type="text/javascript" src="sup.js"></script>
    <script type="text/javascript">sup(1);</script> 
    <?php   
    exit();
}?>

Posté : 17 oct. 2006, 02:17
par pilepoil
Ouf ! Résolu !

Comme ça j'obtient exactement ce que je veux :
echo '<form action="'.$_SERVER['PHP_SELF'].'" method="POST">';
echo '<input type="submit" name="ur" value="cliquez ici" />';
echo '</form>';

foreach($Data['Info'] as $Key => $Var){
if($Key > 0){
if(isset($_POST['ur'])) {
$Html_Onload = " onload='sup(". $Key .");'";
$Html_Upjs = "<script type=\"text/javascript\" src=\"sup.js\"></script>";
break;
}
}
}
Sinon "sup(1)" n'est pas à proprement parlé une fonction. ça sert à désigné le bouton. S'il y avait eu par exemple 3 boutons radio, sup(1) aurait appelé le 1er bouton, sup(2) le 2ie, et sup(3) le 3ie ;)

Pas facile mais résolu quand même :D

Merci à vous !