[PHP et JS] Boucle sans fin, non éxécution du script avec FF

Eléphant du PHP | 73 Messages

26 juin 2007, 12:57

Bonjour,

J'ai une colle à vous poser :

le code commence comme ça :
onclick="supprPret('<?php echo $produit->getId() ?>')
j'apelle donc le script suivant (l'appel se fait correctement).

Code : Tout sélectionner

function supprPret(Produit_id) { if (window.confirm("Voulez-vous supprimer le pret "+Produit_id+"?")){ document.formSupprPret.f_produit_id.value = Produit_id; document.formSupprPret.submit(); } }
Alors là j'ai deux résultat différents :

Sous firefox ça ne fait rien du tout .. :(

Sous ie ça charge bien mon formulaire qui fait appel a une autre page qui fait elle même appel a une fonction d'une de mes classe pour effectuer un update sur ma base de donnée.

Le problème c'est que ça charge sans fin... !!

Le formulaire appelé est le suivant :
	<form name="formSupprPret" onsubmit= action='controller_principal.php' method='post'>
			<input name='f_module' type='hidden' value='listepret'/>
			<input name='f_action' type='hidden' value='supprPret'/>
			<input name='f_produit_id' type='hidden' value=''/>
	   </form>
(il submit vers une page qui fait une inclusion de deux autres page mais spa important pour le problème ^^).

Donc dans mon fichier liste_prets.php

j'ai :
$pretDAO = new PretDAO();
$t_pret = $pretDAO->PretDAO();
$SpretDAO = new PretDAO();

if ($r_action == 'supprPret')
{
        //ça n'affiche pas le echo ... :(
	echo("passe1");
	$t_Spret = $SpretDAO->suppressionPret($_POST['f_produit_id']);
}

je passe en paramètre l'id du produit (pour bien retrouver l'id du produit qui était en prêt).

Et finallement j'éxécute cette requête :

Code : Tout sélectionner

"UPDATE \"GEC_PRETS\" SET GEC_PRET_STATUT = '0' WHERE GEC_PRETS.GEC_PRODUIT_NUMERO = ".$produit_id;

Quelqu'un voit il d'ou pourrait venir le problème siou plait ?

ps : avec une autre fonction JS j'ai aussi un problème sous FF mais pas sous ie donc ...
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

26 juin 2007, 13:56

Si c'est un soucis javascript, sous firefox, tu peux afficher la console des erreurs js en tapant " javascript: " dans la barre d'url :)

Sinon, je te recommande de virer le " onsubmit= " de ton formulaire si tu ne mets rien dedans...

S'il n'affiche pas ton echo "passe1", c'est qu'il n'entre pas dans le if... d'où vient la variable $r_action et quelle est sa valeur ? Ne serait ce pas plustot $_POST['f_action'] qu'il te faudrait tester ? ;)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 73 Messages

27 juin 2007, 11:41

Effectivement le onsubmit ne servait à rien (la honte j'ai fait un copier/coller) je l'ai enlever.

la variable $r_action est en fait le résultat de ceci :
if(isset($_POST['f_action']))
{	
	$r_action = $_POST['f_action'];
}
tu as donc raison mais vu que tu ne pouvait pas le savoir effectivement ce sont les même valeurs (bien jouer d'avoir vu ça ^^).

Grâce à la commande "javascript: "
je voit effectivement des erreurs : overlib is not define et nd is not define

Je ne voit absolument pas à quoi ça correspond.
ps : j'ai tester sur plusieurs postes différents et j'ai toujours la même erreur.

Je ne voit donc toujours pas d'ou vient le problème
:cry:
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 juin 2007, 11:55

Je pense que ce sont d'autres erreurs javascripts indépendantes de ce traitement.. ca devrait pas jouer normalement, mais ca ne fera pas de mal de les corriger ;)

Bon on va essayer d'avancer pas à pas :)

Ton formulaire est envoyé à la page 'controller_principal.php' et tu donnes le code de liste_prets.php. Es-tu sur que ce script est bien appellé (ou inclu) par le premier ? (en gros, si tu mets un echo tout au début, est ce qu'il apparait ? :))

Que donne un print_r($_POST) dans liste_prets.php ? est ce que tu récupères bien tes valeurs ? (IE et FF)

Si tout est bon, affiche les valeurs que tu testes pour savoir pourquoi tu n'entre pas dans le if :

echo "Test : -" .($r_action=='supprPret') . "-<br />"; // on affiche le résultat du test : "-1-" cest ok, "--" c'est faux :)
echo "-$r_action-" . "<br />"; // les tirets te permettront de repérer des espaces indésirables

Et normalement si tout ça passe bien, ton echo("passe1") devrait au moins s'afficher :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Invité
Invité n'ayant pas de compte PHPfrance

27 juin 2007, 14:09

Tu as encore raison ce sont bien des erreurs javascripts indépendantes !

De fait l'erreur est située ici :

Code : Tout sélectionner

<img src='images/ico_poubelle.gif' alt='Suppression' onclick="supprProduit('<?php echo $produit->getId() ?>' , '<?php echo $produit->getPRODUIT_NOM() ?>')" onmouteover="overlib('Suppression du produit')" onmouseout="nd()"/>

Le problème c'est que je ne voit pas ou est l'erreur :(

5 minutes sont passées ...

j'ai comprit !

dans le header de ma page (que j'inclut) je demande à avoir ceci :

<script type="text/javascript" src="js/overlib.js" language="JavaScript" ></script>

sauf que ça ne fonctionnait pas ! j'ai changer l'emplacement de mon fichier overlib et maintenant ça fonctionne.

Donc déja le problème avec le javascript est corrigé bien que la fonction overlib ne passe pas sou FF je peut maintenant supprimer.

Je pense que cette "petite" erreur était zappé par ie et pas par FF (c'est fou non ?!)

voilà :D

merci encore
ps : les deux ou trois petites astuces que tu as donné vont m'être bien utiles ;)

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

27 juin 2007, 16:07

Cool :)

Tiens, une petite dernière pour la route, mais tu l'as probablement déjà corrigé, dans le code ci-dessus : ;)
onmouteover="overlib('Suppression du produit')"
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

Eléphant du PHP | 73 Messages

27 juin 2007, 16:14

vivi c'est fait tu as gérer mici :D
nouveau dans le monde du php
Maître du phpinfo() ce n'est pas rien tout de même xD