prob avec code

pilepoil
Invité n'ayant pas de compte PHPfrance

15 oct. 2006, 12:44

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

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

15 oct. 2006, 13:21

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.

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

pilepoile
Invité n'ayant pas de compte PHPfrance

16 oct. 2006, 05:05

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 !

ViPHP
ViPHP | 1961 Messages

16 oct. 2006, 08:15

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>';
}
?>
Deux choses sont infinies, l'Univers et la sottise humaine!!
Mais je ne suis pas sur de ce que j'affirme au sujet de l'Univers.

A. Einstein

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 oct. 2006, 09:48

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();
}?>

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

pilepoil
Invité n'ayant pas de compte PHPfrance

17 oct. 2006, 02:17

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 !