[PHP] Amélioration de script (each() ?)

Amélioration de script (each() ?) [PHP] - PHP - Programmation

Marsh Posté le 07-08-2003 à 02:55:00    

Voila, c'est encore moi, alors cette fois, j'ai ça comme script :
 

 # UPDATING *ALL* THE TABLES
  $sql_query = "UPDATE `quotes` SET `author` = '".$login_new."' WHERE `author` = '".$login."'";
  $sql_res = mysql_query($sql_query);
  $sql_query = "UPDATE `quotes_users` SET `login` = '".$login_new."' WHERE `login` = '".$login."'";
  $sql_res = mysql_query($sql_query);
  $sql_query = "UPDATE `quotes_lastvisit` SET `login` = '".$login_new."' WHERE `login` = '".$login."'";
  $sql_res = mysql_query($sql_query);


 
et j'aimerai pour que ça soit plus propre utiliser une sorte de boucle a laquelle je fournirai qu'un tableau associant table/clef a changer.
J'ai cru comprendre qu'il fallai utiliser each(), mais je ne vois pas comment ...


Message édité par The_chosen_one le 07-08-2003 à 16:22:25
Reply

Marsh Posté le 07-08-2003 à 02:55:00   

Reply

Marsh Posté le 07-08-2003 à 14:55:49    

 # UPDATING *ALL* THE TABLES
  $sql_query = "UPDATE `quotes` SET `author` = '$login_new' WHERE `author` = '$login'";
  $mysql_query = mysql_query($sql_query);
  $sql_query = "UPDATE `quotes_users` SET `login` = '$login_new' WHERE `login` = '$login'";
  $mysql_query = mysql_query($sql_query);
  $sql_query = "UPDATE `quotes_lastvisit` SET `login` = '$login_new' WHERE `login` = '$login'";
  $mysql_query = mysql_query($sql_query);


 
déjà ça.. [:sinclaire]


---------------
yvele n'est plus.
Reply

Marsh Posté le 07-08-2003 à 16:21:56    

OUPS ! on voit kil etait 3h du mat !

Reply

Marsh Posté le 07-08-2003 à 16:22:53    

heu ... c'etait ça le pb?
sinon, c'est quoi ?

Reply

Marsh Posté le 07-08-2003 à 16:26:00    

reset ($TonTableau);
while (list($key,$val) = each $TonTableau))
{
   echo "$key => $val<br />";
}


 
utilisé comme ceci, c'est tres pratique pour parcourir un tableau..  :)  
 
edit: va voir par > ici < pour plus de details


Message édité par Mr yvele le 07-08-2003 à 16:26:41

---------------
yvele n'est plus.
Reply

Marsh Posté le 07-08-2003 à 16:30:39    

donc ca me donnera un truc comme ca :


reset($list_tables);
while (list($table, $value) = each($list_tables)) {
    $sql_query = "UPDATE `".$table."` SET `".$value."` = '".$login_new."' WHERE `".$value."` = '".$login."'";  
    $sql_res = mysql_query($sql_query);  
}


 
merci :)
sinon, c'était quoi le pb ?


Message édité par The_chosen_one le 07-08-2003 à 16:31:21
Reply

Marsh Posté le 07-08-2003 à 16:33:55    

The_chosen_one a écrit :

sinon, c'était quoi le pb ?


 
pourquoi tu fais des truc comme ça? :

$char = "blabla ".$var." blabla";


 
je vois pas l'interet, soit tu fais ça :

$char = 'blabla '.$var.' blabla';


 
soit ça :

$char = "blabla $var blabla";


 
c'est plus simple et plus pratique non?  :)


Message édité par Mr yvele le 07-08-2003 à 16:34:36

---------------
yvele n'est plus.
Reply

Marsh Posté le 07-08-2003 à 16:37:14    

Mr yvele a écrit :


 
pourquoi tu fais des truc comme ça? :

$char = "blabla ".$var." blabla";


 
je vois pas l'interet, soit tu fais ça :

$char = 'blabla '.$var.' blabla';


 
soit ça :

$char = "blabla $var blabla";


 
c'est plus simple et plus pratique non?  :)


 
je vois pas la diference entre les 2 premiers, par contre par rapport au n°3 : je trouve que la concatenation est plus propre avec le '.' De plus ça permet de retrouver les variables plus facilement.

Reply

Marsh Posté le 07-08-2003 à 16:41:29    

The_chosen_one a écrit :


 
je vois pas la diference entre les 2 premiers, par contre par rapport au n°3 : je trouve que la concatenation est plus propre avec le '.' De plus ça permet de retrouver les variables plus facilement.


 
Pour faire vite :
les chaines entre double quotes sont analysée, afin de rechercher d'eventuelles variables.. alors que les chaines entre simple quotes ne sont pas analysés..
 
donc ' ' est plus rapide à executer que " "
mais bon, la on chipote  :D  
 
 
(PS: moi je prefere largement la 2eme proposition avec les "blabla $var blabla".. mais bon [:sinclaire] )


---------------
yvele n'est plus.
Reply

Marsh Posté le 07-08-2003 à 16:48:18    

Mr yvele a écrit :


 
Pour faire vite :
les chaines entre double quotes sont analysée, afin de rechercher d'eventuelles variables.. alors que les chaines entre simple quotes ne sont pas analysés..
 
donc ' ' est plus rapide à executer que " "
mais bon, la on chipote  :D  
 
 
(PS: moi je prefere largement la 2eme proposition avec les "blabla $var blabla".. mais bon [:sinclaire] )


 
mais dans ce cas la mon editeur ne colorie pas la variable et je trouve pas ca propre :D je chipote aussi
 
par contre pour le coup des "" et '' je connaissai pas la difference, merci :jap:

Reply

Marsh Posté le 07-08-2003 à 16:48:18   

Reply

Marsh Posté le 08-08-2003 à 00:10:20    

Mr yvele a écrit :

reset ($TonTableau);
while (list($key,$val) = each $TonTableau))
{
   echo "$key => $val<br />";
}




 
 
On peut faire comme cela aussi:
 

Code :
  1. foreach($tableau as $key => $val) {
  2.     echo '<p>'.$key.' = > '.$val.'</p>'."\n";
  3. }


 
Le travail est effectué sur une copie du tableau.

Reply

Marsh Posté le 08-08-2003 à 00:17:39    

El_ShAmAn___ a écrit :


Le travail est effectué sur une copie du tableau.


 
quel travail :??:  
tu parles du pointeur interne?
 
je vois pas l'utilitée de bosser sur une copie.. puisqu'on veut juste lire.. [:sinclaire]  
explique moi stp :)


---------------
yvele n'est plus.
Reply

Marsh Posté le 08-08-2003 à 01:41:41    

Mr yvele a écrit :


 
quel travail :??:  
tu parles du pointeur interne?
 
je vois pas l'utilitée de bosser sur une copie.. puisqu'on veut juste lire.. [:sinclaire]  
explique moi stp :)  


 
 
http://fr2.php.net/manual/fr/contr [...] oreach.php
 
 
Ben une copie du tableau est faite, et c'est sur cette copie que la boucle va parcourir les éléments.
 
Pour l'intérêt d'avoir une copie... je ne sais pas trop... Ne pas modifier le pointeur interne ?? :D
 
En fait, j'avais pas fait gaffe que « each » bidouillait directement sur le tableau et pas sur une copie  :whistle:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed