Forums Développement Multimédia

Aller au contenu

Problèmes AJAX & PHP

CODE Ajax JQuery EaseJs

4 réponses à ce sujet

#1 Ghost52

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 01 September 2011 - 16:40 PM

Bonjour à tous,

voilà je galère sur ça depuis plusieurs heures et je fais appel à vous pour m'aider.
J'ai un input dans un formulaire qui détermine la position de mon article :

<input name="pos" type="text" size="2" OnChange="update('<?PHP echo $line['id']; ?>');" />

Quand on change le contenu de ce input, j'aimerais mettre à jours ma BDD en envoyant une requête. J'ai donc utilisé des codes d'un collègue, voilà mon index.js :

function getXMLHTTP(){
                var xhr=null;
                if(window.XMLHttpRequest) // Firefox et autres
                        xhr = new XMLHttpRequest();
                else if(window.ActiveXObject){ // Internet Explorer
                try {
                        xhr = new ActiveXObject("Msxml2.XMLHTTP");
                } catch (e) {
                        try {
                                xhr = new ActiveXObject("Microsoft.XMLHTTP");
                        } catch (e1) {
                                xhr = null;
                        }
                }
                } else { // XMLHttpRequest non support? par le navigateur
                alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");
                }
                return xhr;
        }

function update(iden) {
        var valeur = document.getElementById("pos").value;
        alert("Iden : "+iden+" & Valeur : "+valeur);
        var xhr = getXMLHTTP();
        if(xhr){
                xhr.open("GET","update.php?type=js&iden="+iden+"valeur="+valeur,true);
                xhr.onreadystatechange=function() {
                        if(xhr.readyState==4&&xhr.responseXML) {
                }
        };
        // envoi de la requete
        xhr.send(null)
        }
        return;
}

On envoi le tout sur un update.php :

<?PHP

        session_start();
        include('connect.php');
        $page = $_GET["page"]
        $type = $_GET["type"];
       
if($type = "js") {
       
        $pos = $_GET['valeur'];
        $sql = "update nouvelles set position = ".$pos." where id = ".$iden.";";
        $req = mysql_query($sql);
       
}

?>

Au début de ma page j'appelle mon index.js de cette façon :

<script language="javascript" charset="iso-8859-1" src="index.js"></script>
 

Mais rien n'y fait lorsque je change mon contenu input rien ne se passe, n'ayant jamais fait vrmt d'Ajax je ne comprends pas d'où peut venir le problème ...

Je vous remercie d'avance pour votre aide, Cordialement.

#2 Ghost52

    Ceinture Blanche

  • Members
  • Pip
  • 2 messages

Posté 02 September 2011 - 08:47 AM

Sur le forum du site du zéro, un membre me conseil d'utiliser JQuery pour me faciliter la vie mais n'y connaissant rien et ne comprenant pas grd chose aux tutaux sur internet je suis totalement coincé.

Des suggestions pour pallier à mon problème ?

Merci d'avance.

#3 glurp

    Modérateur

  • Moderateur
  • PipPipPipPipPipPipPipPip
  • 1260 messages

Posté 24 March 2012 - 10:01 AM

Salut Ghost52,

Ta requête SQL ne respecte pas la casse des mots clés, ça devrait être :
$sql = "UPDATE nouvelles SET position = ".$pos." where id = ".$iden.";";

Attention également que si $pos peut contenir un décimal, tu dois l'entourer de guillemets :
$sql = "UPDATE nouvelles SET position = \"".$pos."\" where id = ".$iden.";";

Ensuite, oui, JQuery peut te faciliter grandement la vie en terme de comptabilité navigateur.
Ce n'est pas bien compliqué de faire un appel Ajax

$.ajax( {
"url": "update.php?type=js&iden="+iden+"valeur="+valeur,
"type": "GET",
"dataType": "text",
"success":function() { },
"error":function() { },
"complete":function() { },
});
 


#4 pol2095

  • Members
  • PipPipPipPipPipPipPipPip
  • 1794 messages

Posté 24 March 2012 - 10:20 AM

dans onreadystatechange il me semble qu'il manque un crochet

#5 dcz.switcher

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 2532 messages

Posté 24 March 2012 - 11:54 AM

Salut,

Avec jQuery, voici comment tu pourrais faire

Code dans la balise HEAD

<script type="text/javascript" src="../jquery-1.7.1.min.js"></script>
<script type="text/javascript">
$(document).ready(function() {
  console.log("ready") ;
  $('#pos').on("change", function(e){
   //requete ajax ici suivant l'exemple donné par glurp
 
   var newText = $(e.target).val() ;
   console.log("ajax : newText = " + newText ) ;
  } ) ;

});
</script>
 

notes :
- l'evenement "change" sera diffusé lorsque le champ perdra le focus
- l'instruction "console.log()" affiche un message dans la console javascript que tu trouves sous Google Chrome par exemple dans Outils / Outils de développement

Essayer jQuery c'est l'adopter !
"Ce que l'on conçoit bien s'énonce clairement et les mots pour le dire arrivent aisément"

embryon de site



1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP