Bonjour,
Cela fait un moment que je tourne autour, ce doit pourtant être simple et pourtant.
Je constitue en fonction de certains critère une requête
Code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| // Initialisation du type de traitement
if(empty($_SESSION['session_remplacer']))
{
$traitement="INSERT ";
}
else
{
$traitement="UPDATE ";
}
// Lecture de la table de destination pour récupérer le nom des entêtes de colonne
$table_reception = $_SESSION['session_table_reception'];
$result = mysql_query("SHOW COLUMNS FROM $table_reception");
while ($ligne = mysql_fetch_array($result))
{
$tab_champ[]=$ligne[0];
}
$num = mysql_num_rows($result);
// Lecture de la table d'origine
$prefixe = "../temp/";
$fileinput = $prefixe.$_SESSION['session_table_importe'];
if(file_exists($fileinput))
{
$file = fopen($fileinput, "r");
$sql = fread($file, filesize($fileinput));
fclose($file);
$inst = explode("\n", $sql);
$n = count($inst);
for($i=0;$i<$n;$i++)
{
$req = $traitement.$table_reception." SET ";
$reqident = " WHERE ";
if(trim($inst[$i])!="")
{
// J'éclate l'enregistrement de la table d'origine
$champorigin = explode(";", $inst[$i]);
$j=0;
$requete = "";
$ident = "";
// pour chaque champ de la table de destination
while ($j < $num)
{
if(isset($choisi[$j]) || isset($trt[$j]))
{
$y = $origin[$j];
$champorigin[$y]= str_replace('"', "", $champorigin[$y]);
$champorigin[$y]= utf8_decode($champorigin[$y]);
$champorigin[$y]= addslashes($champorigin[$y]);
// s'il a été choisi
if(isset($choisi[$j]) && !isset($trt[$j]))
{
// je prends le n° du champ d'origine correspondant
$requete.=$tab_champ[$j]." = '".$champorigin[$y]."',";
}
// s'il est identifiant
if(isset($trt[$j]))
{
// je prends le n° du champ d'origine correspondant
$ident.=$tab_champ[$j]." = '".$champorigin[$y]."',";
}
}
$j++;
}
$req.= $requete;
$req[strlen($req)-1] = "";
if(!empty($ident))
{
$reqident.= $ident;
$req.= $reqident;
//$req.= $ident;
$req[strlen($req)-1] = "";
}
// Mise à jour de l'enregistrement
echo $req;
mysql_query("$req") or die("$req".mysql_error());
} |
Mon echo en fin de script m'affiche lorsque je suis en "update"
Citation:
|
UPDATE tb_activite SET libelle = 'Bénévole' WHERE activite_id='1'
|
Puis j'ai l'erreur suivante sur ma requête :
Citation:
|
UPDATE tb_activite SET libelle = 'Bénévole' WHERE activite_id = '1'
|
Pour en faire le contrôle, je veux copier la requête dans phpmyadmin afin de comprendre ce qui ne fonctionne pas.
Je sélectionne donc sur mon écran ceci :
Citation:
|
UPDATE tb_activite SET libelle = 'Bénévole' WHERE activite_id='1'
|
Et je fais coller dans phpmyadmin dans "Exécuter une ou des requêtes sur la base xxx"
Le résultat du copier/coller n'est que
Citation:
|
UPDATE tb_activite SET libelle = 'Bénévole'
|
Il ne veux pas prendre
Se peut-il qu'un caractère caché empêche le copier coller de s'effectuer correctement ?
Merci d'avance