Probleme de unserialize mise a jour de donnée serialize

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Probleme de unserialize mise a jour de donnée serialize

Re: Probleme de unserialize mise a jour de donnée serialize

par Zebu » 26 sept. 2011, 11:33

Il est vrais que j'ai besoin d'un développeur, certes je suis seul et je cherche a communiquer au sujet de mon site internet et de ma programmation pour connaitre la marche à suivre en cas de soucis. Il est vrais que je suis embêté par les délais de livraison, je vais donc augmenter ce délai pour avoir plus de temps et travailler correctement.

Re: Probleme de unserialize mise a jour de donnée serialize

par Cyrano » 26 sept. 2011, 03:57

Zebu, je t'ai déjà fait une observation du même ordre sur un autre post, traitant exactement le même sujet : tu ne lis les réponses qu'en diagonale, tu ne réponds pas aux questions et tu ne cherches pas : en clair, tu as l'air d'attendre qu'un gogo fasse le code à ta place. Je n'ai rien dit quand tu as ouvert ce nouveau sujet, mais garde à l'esprit que tu vas rapidement te faire repérer et surtout cataloguer comme un profiteur opportuniste. On aime pas beaucoup ça ici, ce n'est pas l'esprit de ce forum.

Ici, c'est un forum d'entraide et ceux qui sont un peu expérimentés aident volontiers et gracieusement ceux qui apprennent et butent sur des problèmes. Mais il ne faudrait pas pour autant penser qu'on est stupides. Autant ça peut être motivant et gratifiant de voir un débutant progresser, écouter, faire des efforts et réussir petit à petit, autant c'est très énervant de voir certains comportements arrogants de gens qui de toute évidences prennent sans la moindre intention de rendre quoi que ce soit de toutes manières. Personne ici ne te doit rien et tes délais n'intéressent personne. Si tu a pris des engagements que tu sais n'être pas en mesure de tenir, il ne faut t'en prendre qu'à toi-même et assumer tes propres choix. Ça implique aussi d'assumer le fait qu'on ne te dit pas forcément n'importe quoi et que si tu prenais la peine de lire et relire si nécessaire les réponses qui te sont faites puis y réfléchir un tout petit peu avant de te précipiter pour poser une nouvelle question, peut-être bien que tu comprendrais pourquoi on t'indique certains éléments ou pourquoi on te poses certaines questions et tu apprendrais bien davantage de choses. Si tu ne veux pas comprendre ça, personne ne t'y forcera, il te restera toujours la solution de faire appel à un professionnel qui se fera un plaisir de te faire ton code... moyennant finance ça va de soi, mais ça, c'est ton problème. :evil:

Re: Probleme de unserialize mise a jour de donnée serialize

par AB » 26 sept. 2011, 01:59

... Propose moi ta solution avec in_array().
... uid est un identifiant unique. propose moi ta solution sans faire while.
Merci.
Tu pourrais pas un peu chercher non ?

Je t'ai donné les indications, maintenant c'est à toi de faire des propositions !

Ta première boucle
foreach($friend_No as $friend_No => $friend_Nos_value)
     {
                if($array_No == $friend_Nos_value)  {}
     }
sert à tester si $array_No fait partie du tableau $friend_No et je te dis que tu pourrais utiliser la fonction in_array à la place. L'idée ne t'es pas venue te taper "in_array" dans google ? parce qu'en première ligne tu aurais trouvé ce lien http://php.net/manual/fr/function.in-array.php

Concernant le fait de ne pas faire de while, tu n'aurais pas une idée ?

Et puis
C'est vrais j'ai désérialiser deux fois le tableau, j’aurais pu faire autrement (quand j'ai le temps, je le fais)
...sous entends que quand tu as le temps tu vas à l'essentiel, mais si tu n'as pas le temps tu fais des détours pour compliquer les choses ???

Quant aux noms que tu donne à tes variables tu fais tout pour t'embrouiller : quand tu désérialise le tableau de la colonne "friends" pourquoi appelles-tu la variable $friend_No ?

cette partie de ton code devrait être quelque chose comme
//... requête
$friends = unserialize($row["friends"]);

if (in_array(...,...))// remplacer les points par les bonnes valeurs
{
      $friend_New = array();
      foreach($friends as  $value)      
      {
             if($value != $array_No)  
             {
                   $friend_New[] = $value;
             }
      }

      $friends = serialize($friend_New);
      $query2 ="UPDATE users SET friends = '".$friends."' WHERE uid = $uid" ;
      $result2=mysql_query($query2)or die(mysql_error()); 

}
On est pas là pour faire ton code à ta place, et si tu n'as pas le temps d'apprendre alors trouves-toi une autre occupation :wink:

Re: Probleme de unserialize mise a jour de donnée serialize

par Zebu » 25 sept. 2011, 22:10

C'est vrais j'ai désérialiser deux fois le tableau, j’aurais pu faire autrement (quand j'ai le temps, je le fais) il suffit de donner la meme valeur a friend_No a friend_old. Propose moi ta solution avec in_array().
uid est un identifiant unique. propose moi ta solution sans faire while.
je garde les echo pour visualiser les valeurs car le site est en phase de développement.
Merci.

Re: Probleme de unserialize mise a jour de donnée serialize

par AB » 24 sept. 2011, 22:27

Et toi AB ne sois pas jaloux de moi. j'essaie toujours de comprendre mais je dois terminer le site dans 10 jours, alors ça ne me laisse pas beaucoup de temps. Mais ne t’inquiète pas que j'ai compris.
Il va couler encore pas mal d'eau sous les ponts avant que je sois "jaloux" de ton code :wink:

- On peut savoir pourquoi tu désérialise deux fois le même tableau ( unserialize($row["friends"]); ) ?

- Et puis pour trouver si une valeur appartient à un tableau on peut utiliser in_array()

- Par ailleurs si uid est un identifiant unique (ce qui semble être le cas) alors pas besoin de faire un while pour récupérer plusieurs lignes puisque tu n'en cherche qu'une.

- Et enfin dernière chose, pourquoi gardes-tu les echo dans ton code, dans ce cas de figure cela ne sert qu'en phase de développement pour visualiser les valeurs.

Re: Probleme de unserialize mise a jour de donnée serialize

par Zebu » 23 sept. 2011, 20:17

Tu propose quoi Mazarini as tu une solution plus performante ?

Re: Probleme de unserialize mise a jour de donnée serialize

par Zebu » 23 sept. 2011, 20:15

Ca fonctionne a merveille waw. Je peux effacer un ami de ma liste d'amis en deserializan les données qui proviennent de la database, en effaçant les données qu'on veux effacer, sérialiser et renvoyer tout ce la dans l'enregistrement de la base de donnée. Si vous voulez je peux vous donner le code de la page complète, qui permet d'ajouter, accepter, mettre en file d'attente, les amis. j'ai travailler deux jours dessus.
Et toi AB ne sois pas jaloux de moi. j'essaie toujours de comprendre mais je dois terminer le site dans 10 jours, alors ça ne me laisse pas beaucoup de temps. Mais ne t’inquiète pas que j'ai compris.

Re: Probleme de unserialize mise a jour de donnée serialize

par Mazarini » 23 sept. 2011, 08:59

En fait, un array_keys() suivi d'un unset() du post du tableau trouvé serai surement mieux.

Re: Probleme de unserialize mise a jour de donnée serialize

par AB » 22 sept. 2011, 19:54

Tu as mélangé le code de Mazarini qui était presque complet, avec mon exemple qui n'était que partiel pour te faire comprendre le fonctionnement...

Bref c'est un peu n'importe quoi et tu as bien de la chance que cela fonctionne... Faudrait essayer de comprendre sinon tu n'avanceras pas bien loin. Il y a des tutos pour débuter dans phpdebutant.org , developpez.net et des tutos plus ciblés sur ce site. Ce n'est pas un luxe d'en faire quelques uns avant de faire du code.

Re: Probleme de unserialize mise a jour de donnée serialize

par Zebu » 22 sept. 2011, 18:27

Voiçi le code complet correspondant à ce morceau de code qui est un systeme de suppression d'ami de la friendlist du site Internet.
  if(isset($_GET["del"])) {

$array_No=($_GET["del"]);
      $query ="SELECT friends FROM users WHERE uid=$uid" ;
      $result1=mysql_query($query)or die(mysql_error());      
      while($row = mysql_fetch_array($result1)){
      $friend_No = unserialize($row["friends"]);
                   foreach($friend_No as $friend_No => $friend_Nos_value)
              {
     	echo "Clé :" .$friend_No. " Valeur : ".$friend_Nos_value."<br />\n";

		if($array_No == $friend_Nos_value)  {
      $friend_old = unserialize($row["friends"]);  
      $friend_New = array();
      foreach($friend_old as $key => $value)      
      {
             echo "Clé :" .$key. " Valeur : ".$value."<br />\n";
             if($value <> $array_No)  
             {
                   $friend_New[] = $value;
             }
      }
      $friends = serialize($friend_New);
      $query2 ="UPDATE users SET friends = '".$friends."' WHERE uid = $uid" ;
      $result2=mysql_query($query2)or die(mysql_error()); 
                    }      
               }                      
	   }
}

Re: Probleme de unserialize mise a jour de donnée serialize

par Zebu » 22 sept. 2011, 18:18

Ton code marche bien merci beaucoup, ça me fais gagner du temps pour le développement du reste du site Internet. C'est la première fois que je travail avec la sérialisation. Tu es un expert, tu me rend un grand service pour ce morceau de code.
Salut

Re: Probleme de unserialize mise a jour de donnée serialize

par AB » 22 sept. 2011, 16:16

Pour visualiser rapidement un tableau durant le développement tu peux faire :
echo '<pre>';
print_r($mon_tableau);
echo '</pre>';
Quand tu fais :
foreach($friend_No as $key => $friend_Nos_value)
{
if($friend_No == $array_No)
tu compare un tableau à une variable (c'est comme comparer un tiroir à un document) or il faudrait comparer les valeurs du tableau à cette variable :
foreach($friend_No as $key => $friend_Nos_value)
{
if($array_No == $friend_Nos_value)

Re: Probleme de unserialize mise a jour de donnée serialize

par Mazarini » 22 sept. 2011, 16:08

      $friend_old = unserialize($row["friends"]);  
      $friend_New = array();
      foreach($friend_old as $key => $value)       
      {
             echo "Clé :" .$key. " Valeur : ".$value."<br />\n";
             if($value <> $array_No)  
             {
                   $friend_New[] = $value;
             }
      }
      $friends = serialize($friend_New);
      $query2 ="UPDATE users SET friends = '".$friends."' WHERE uid = $uid" ;
      $result2=mysql_query($query2)or die(mysql_error());    

Re: Probleme de unserialize mise a jour de donnée serialize

par zeus » 22 sept. 2011, 12:57

Modération :
Zebu, merci d'utiliser les balises [php] quand tu postes du code PHP pour que ça soit lisible (plus de détails ici)

Si tu ne tiens pas compte de cet avertissement, le sujet pourrait être fermé

Re: Probleme de unserialize mise a jour de donnée serialize

par Zebu » 22 sept. 2011, 12:39

J'ai modifié le code et ça marche mais pas tout a fait. au lieu de m'effacer l'enregistrement du tableau, il m'ajoute le même enregistrement, comment faire pour effacer cet enregistrement.
if(isset($_GET["del"])) {

$friend_No=($_GET["del"]);
$array_No=($_GET["del"]);
        $query ="SELECT friends FROM users WHERE uid=$uid" ;
        $result=mysql_query($query)or die(mysql_error());      
        while($row = mysql_fetch_array($result)){
        $friend_No = unserialize($row["friends"]);

                   foreach($friend_No as $key => $friend_Nos_value)
              {
     echo "Clé :" .$key. " Valeur : ".$friend_Nos_value."<br />\n";

if($friend_No == $array_No)  {
                                $friend_No[] = $friend_Nos_value;
        $friend_Noq = serialize($friend_No);
						$query2 ="UPDATE users SET friends = '".$friend_Noq."' WHERE uid = $uid" ;
  //                         $query2 ="DELETE FROM users WHERE uid=$uid AND friends=$friend_Nos_value";
                                $result2=mysql_query($query2)or die(mysql_error());    
              }      
          }                      
     }
}