dupliquer un contenu.

Mammouth du PHP | 702 Messages

19 juin 2012, 10:27

Bonjour à tous,

j'ai un soucis en fait lorsque je souhauites dupliquer des enregistrements mysql qui ont un dénominateur commun.

voici le soucis, je fais donc un while mais comme achaque boucle il y a de nouveaux élémets alors il ne s'arrête jamais;

moi je souhaiterais juste qu'il duplique ceux déjà existant pas ceux qui sont entrés par le while.

voici mon code.
<?php 
$sql = 'SELECT * FROM scenarii where code_s="'.mysql_real_escape_string($_GET['code_s']).'"';
$result = mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
?>
                  <?php
      $user = mysql_fetch_assoc($result)
      
        ?><?php while(isset($user['code_s']))  { ?><?php
$sql = 'INSERT INTO scenarii SET  
code_s = "'.mysql_real_escape_string($user['code_s']).' (copie)'.'",
action = "'.mysql_real_escape_string($user['action']).' (copie)'.'",
titre = "'.mysql_real_escape_string($user['titre']).' (copie)'.'",
jour = "'.mysql_real_escape_string($user['jour']).'"' ;
                    


mysql_query($sql) or die(__LINE__.mysql_error().$sql);


}
header('Location: ' . $_SERVER['HTTP_REFERER'] );
?>
Connaissez vous un moyen de procéder?

Par avance merci.

ViPHP
ViPHP | 2577 Messages

19 juin 2012, 11:10

Tu fais une boucle infini sur isset($user['code_s'] qui reste vrai puisque entre 2 passages tu ne fais pas de nouvelle lecture
<?php
     while ($user = mysql_fetch_assoc($result) {    // c'est la la boucle sur la lecture
         if (isset($user['code_s']))  { 
...
         }
    }
?>

Mammouth du PHP | 702 Messages

19 juin 2012, 11:11

j'ai rajouté une condition mais la ca ne duplique plus rien je penses que c'est a cause de la concaténation sans grande certirude.
<?php 
$sql = 'SELECT * FROM scenarii where code_s="'.mysql_real_escape_string($_GET['code_s']).'"';
$result = mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
?>
                  <?php
      $user = mysql_fetch_assoc($result)
      
        ?><?php while(isset($user['code_s']) AND $user['code_s']== "'".$_GET['code_s']."'")  { ?><?php
$sql = 'INSERT INTO scenarii SET  
code_s = "'.mysql_real_escape_string($user['code_s']).' (copie)'.'",
action = "'.mysql_real_escape_string($user['action']).' (copie)'.'",
titre = "'.mysql_real_escape_string($user['titre']).' (copie)'.'",
jour = "'.mysql_real_escape_string($user['jour']).'"' ;
                    


mysql_query($sql) or die(__LINE__.mysql_error().$sql);


}
header('Location: ' . $_SERVER['HTTP_REFERER'] );
?>
Qu'en dites vous?

Mammouth du PHP | 702 Messages

19 juin 2012, 11:15

j'ai essayé avec le modèle que tu m'as proprosé:
<?php 
$sql = 'SELECT * FROM scenarii where code_s="'.mysql_real_escape_string($_GET['code_s']).'"';
$result = mysql_query($sql) or die(__LINE__.mysql_error().$sql); 
?>
                  <?php
      $user = mysql_fetch_assoc($result)
      
        ?>
		<?php while(isset($user['code_s'])){  ?><?php
if (isset($user['code_s']) AND $user['code_s']== "'".$_GET['code_s']."'")  { 
$sql = 'INSERT INTO scenarii SET  
code_s = "'.mysql_real_escape_string($user['code_s']).' (copie)'.'",
action = "'.mysql_real_escape_string($user['action']).' (copie)'.'",
titre = "'.mysql_real_escape_string($user['titre']).' (copie)'.'",
jour = "'.mysql_real_escape_string($user['jour']).'"' ;
                    


mysql_query($sql) or die(__LINE__.mysql_error().$sql);
}

}
header('Location: ' . $_SERVER['HTTP_REFERER'] );
?>
mais la j'ai le mysql time out des 30 secondes.