2010-09-02 4 views
1

merci de votre visite. J'ai une très longue liste d'articles, les utilisateurs cliquent sur une image (un signe plus) pour ajouter l'article à leur liste personnelle. Au moment où ils cliquent sur le + il charge un "add-item.php? Itemid = *" qui traite le code ci-dessous puis les redirige vers leur propre liste, je l'ai fait rediriger vers la liste globale mais alors il n'était pas clair à l'utilisateur si l'article a été ajouté à sa liste. comment pourrais-je faire tout mettre à jour la base de données sans aller nulle part, je pense que javascript mais je n'ai jamais écrit. Toute aide serait géniale !! :)Comment mettre à jour une base de données mysql sans recharger la page

<?php 
ini_set('display_errors', 'On'); 
error_reporting(E_ALL); 

$bucketlist=MYSQL_QUERY("SELECT * FROM membersbuckets where userid = $userid AND bucketid = $bucketid") 
or die(mysql_error()); 

      $bucketlist=mysql_fetch_array($bucketlist) ; 

      if($bucketlist < 1) { 

      mysql_query("INSERT INTO membersbuckets (memberbucketid, userid, bucketid, complete) 
      VALUES ('', '$userid', '$bucketid', '0')"); 
      echo "Adding item to your bucketlist..."; 
      echo "<meta http-equiv='Refresh' content='2; URL=mybucketlist.php'/>"; 
      } 
      else { 
      echo "This item is already on your list, redirecting you to your list"; 
      echo "<meta http-equiv='Refresh' content='2; URL=mybucketlist.php'/>"; 
      } 
?> 

Merci d'avance! :)

Répondre

3

Vous avez besoin d'AJAX, comme tous les ont dit. Puisque vous ne l'avez jamais écrit de javascript, voici le guide complet pour vous -

  • Au lieu de votre <a href="add-item.php?itemid='.$itemId.'" > Add Item </a> écrire <a onclick="addItemToUsersList('.$itemId.')" > Add </a>

  • Pour utiliser AJAX, l'utilisation jquery comme Angelo a suggéré. Télécharger et ajouter ce qui suit

    <script type="text/javascript" src="http://path/to/jquery-latest.min.js"></script> 
    <script type="text/javasript"> 
    
    function addItemToUsersList(itemId) 
    { 
        $.ajax({ 
         'url': 'path/to/add-item.php', 
         'type': 'GET', 
         'dataType': 'json', 
         'data': {itemid: itemId}, 
         'success': function(data) 
         { 
          if(data.status) 
          { 
           if(data.added) 
           { 
             $("span#success"+itemId).attr("innerHTML","Item added to your personal list"); 
           } 
           else 
           { 
             $("span#success"+itemId).attr("innerHTML","This item is already on your list"); 
           } 
          } 
         }, 
         'beforeSend': function() 
         { 
           $("span#success"+itemId).attr("innerHTML","Adding item to your bucketlist..."); 
         }, 
          'error': function(data) 
          { 
          // this is what happens if the request fails. 
          $("span#success"+itemId).attr("innerHTML","An error occureed"); 
         } 
    }); 
            } 
        </script> 
    
  • Et enfin dans votre fichier path/to/add-item.php écrire le code pour ajouter des éléments. Le paramètre itemId sera disponible ici sous la forme $_GET['itemId']. Ju st retour des valeurs d'état appropriées en utilisant json_encode -

    if($bucketlist < 1) 
    { 
        mysql_query("INSERT INTO membersbuckets (memberbucketid, userid, bucketid, complete) 
        VALUES ('', '$userid', '$_GET['itemId]', '0')"); 
         return json_encode(array("status" => true, "added" => true)); 
    } 
    else 
    { 
         return json_encode(array("status" => true, "added" => false)); 
    } 
    
+1

sandeepan, d'abord merci pour une réponse si profonde! J'ai téléchargé (et téléchargé) une copie de jquery ... ajouté un lien vers le fichier jquery et ajouté le script de fonction entre les balises de tête. Bien que le lien d'ajout soit la couleur du lien, et que le survol change de couleur comme un lien Propper, il ne fait rien ... J'ai créé une copie de page de test avec laquelle je joue - http: //olbl.co.uk/showbucketsTEST.php. Pouvez-vous voir ce que j'ai mal fait? Merci! :) – Dan

+0

Merci pour ma première meilleure réponse ... J'ai vérifié votre page de test. Il donne l'erreur '302 Moved Temporarily'. Aller à l'URL http://olbl.co.uk/member-bucketadd-execTEST.php?itemId=25 et voir. Il redirige vers votre page de connexion. Un fichier de traitement AJAX ne doit pas être protégé par une connexion. Supprimez la redirection et cela fonctionnera bien –

+0

Une petite correction ici ... le code peut être protégé mais la redirection est supprimée. Renvoyer un tableau json à la place et afficher un message comme les autres cas –

3

Vous obtiendrez cela via JavaScript en utilisant quelque chose appelé "AJAX". Une requête JavaScript et XML asynchrone permet à JavaScript d'envoyer une requête à une autre page et d'en obtenir les résultats.

Donc en utilisant ajax, vous iriez à l'URL que vous vouliez, et vous pourriez afficher le message à un utilisateur.

J'utilise une bibliothèque appelée jQuery pour obtenir quelque chose comme ça fait

$.ajax({ 
    'url': 'path/to/add-item.php', 
    'type': 'GET', 
    'dataType': 'json', 
    'data': {itemid: xx}, 
    'success': function(data) { 
     // what happens if the request was completed properly 
    }, 
    'error': function(data) { 
     // what happens if the request fails. 
    } 
    }); 

Notez que simplement parce qu'une demande complète bien, ne signifie pas que l'article a été ajouté au besoin.

Je vous suggère de lire ce qui suit pour bien comprendre comment l'adapter à vos besoins.

http://json.org/

http://api.jquery.com/jQuery.ajax/

http://ca3.php.net/json_encode

1

http://jquery.com/ serait mes suggestions. Vous allez devoir effectuer des appels AJAX sur le serveur pour qu'il interagisse avec votre base de données, puis obtenir un résultat et afficher ces informations à l'utilisateur. Je préfère JQuery car il simplifie beaucoup de ces appels et la documentation est assez bonne. Il y a des tonnes de tutoriels pour les bases.

Une simple recherche google révèle un assez grand nombre http://www.google.com/search?q=jquery+ajax+tutorial

0

Vous peut vraiment vouloir utiliser Javascript dans votre projet! Voir, parce que vous dites que vous ne voulez pas naviguer hors de la page actuelle et que vous voulez donner un petit message sur la page en cours en disant une confirmation à l'utilisateur .. alors vous devez utiliser quelque chose appelé AJAX-Asynchronous Javascript and XML . C'est un ajout de PHP et Javascript. En utilisant AJAX vous pouvez mettre à jour la page actuellement chargée sans l'actualiser. Ici HTML ne se connecte pas ou ne demande pas le serveur mais c'est le Javascript. Donc vous pouvez réaliser -> [comment je ferais tout mettre à jour la base de données sans aller nulle part] ..

Et en ce qui concerne AJAX et Javascript, ils sont très simples! Juste besoin d'apprendre la syntaxe de base d'entre eux et den sur vous pouvez aller plus loin !!!

références u peut se référer à:

-> Le meilleur livre pour u se référer est -

professionnel Ajax Nicholas C.Zakas, Jeremy McPeak, Joe Fawcett

+0

Les blocs de code ne sont pas des citations. Veuillez utiliser blockquote ('>') à la place. – ADTC

Questions connexes