Problème avec la fonction copy en php

waldner77 Messages postés 196 Statut Membre -  
 lol -
Bonjour,
voila j'ai une erreur avec la fonction copy et je ne ces pas comment je pourrais le résoudre.
je met mon code avec svp aidez moi

***********************************
************test.php*****************
***********************************
<html>
<head>
<title>Creation de la table</title>
</head>
<body>
<div align="center">
<form method="post" action="test2.php" ">


<?php
// Notez que !== n'existait pas avant 4.0.0-RC2
echo "<CENTER><H4> Aujourd'hui le " . date('d/m/Y à H:m:s ')."</H4>";
if ($handle = opendir('A_DIFFUSER')) {

echo '<select name="valeur[]" size=30 multiple>';
/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
if($file != ".." && $file != ".")
{
echo "<option> $file\n </option>"; //multiselect
}
}
echo '</SELECT></CENTER>';

closedir($handle);
}
?>
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'enregistrement';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT nom,prenom FROM membre';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );



echo '<select name="valeur[]" size=30 multiple>';
/* Ceci est la façon correcte de traverser un dossier. */


while($row = mysql_fetch_row($result)){
$Nom = $row[0];
$prenom = $row[1];
echo '<option>'.$Nom. ' ' .$prenom.'</option>';
}

echo '</SELECT></CENTER>';
// Deconnexion de la base de donnees
mysql_close();
?>
<input type="submit" value="Valider">
</form>
</div>
</body>
</html>

************************
*******test2.php**********
************************
<html>
<body>

<?php


if(isset($_POST['valeur']) && !empty($_POST['valeur']))
{ echo "toto";
$Col1_Array = $_POST['valeur'];
foreach($Col1_Array as $select)
{
//affichage des valeurs sélectionnées

echo "$select";
copy( "C:\wamp\www\test projet\test3\A_DIFFUSER\.$select" , "C:\wamp\www\test projet\test3\A VERIFIER\.$select")
echo "toto";
}
}
}

?>
</body>
</html>

et voila le résultat de mon erreur

totoSEL20080-21 (-).pdf
Warning: copy(C:\wamp\www est projet est3\A_DIFFUSER\.SEL20080-21 (-).pdf) [function.copy]: failed to open stream: Invalid argument in C:\wamp\www\test projet\test3\test2.php on line 15
totoSEL20080-4X (B).pdf
Warning: copy(C:\wamp\www est projet est3\A_DIFFUSER\.SEL20080-4X (B).pdf) [function.copy]: failed to open stream: Invalid argument in C:\wamp\www\test projet\test3\test2.php on line 15
totoSEL20080-6 (A).pdf
etc...
A voir également:

17 réponses

Ozimandias Messages postés 528 Statut Membre 46
 
Et comme ça:

//affichage des valeurs sélectionnées

echo $select;
echo( "C:\wamp\www\test projet\test3\A_DIFFUSER\\".$select , "C:\wamp\www\test projet\test3\A VERIFIER\\".$select);
echo "toto";

Il faut doubler le \ sinon le " n'est pas pris en compte et il considère $select comme une chaine de carac et non comme une variable.
0
waldner77 Messages postés 196 Statut Membre 4
 
maintenant sa me fait sa
totoSEL20080-19 (A).pdf
Warning: copy(C:\wamp\www est projet est3\A_DIFFUSER\SEL20080-19 (A).pdf) [function.copy]: failed to open stream: Invalid argument in C:\wamp\www\test projet\test3\test2.php on line 15
totoSEL20080-20 (A).pdf
Warning: copy(C:\wamp\www est projet est3\A_DIFFUSER\SEL20080-20 (A).pdf) [function.copy]: failed to open stream: Invalid argument in C:\wamp\www\test projet\test3\test2.php on line 15
totoSEL20080-21 (-).pdf
Warning: copy(C:\wamp\www est projet est3\A_DIFFUSER\SEL20080-21 (-).pdf) [function.copy]: failed to open stream: Invalid argument in C:\wamp\www\test projet\test3\test2.php on line 15
totoSEL20080-4X (B).pdf
0
Ozimandias Messages postés 528 Statut Membre 46
 
Oups, j'avais pas vu ça... Si ton formulaire envoie des fichiers, il doit y avoir dans la balise d'ouverture de formulaire enctype="multipart/form-data">
0
waldner77 Messages postés 196 Statut Membre 4
 
comment sa je ne comprend pas trop ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
waldner77 Messages postés 196 Statut Membre 4
 
je ne voit pas du tout ou il faut l'utiliser ces pour sa
0
Ozimandias Messages postés 528 Statut Membre 46
 
bon, oublie ça, j'ai dis une connerie. Ensuite j'ai corrigé quelques erreurs de syntaxe:

<html>
<head>
<title>Creation de la table</title>
</head>
<body>
<div align="center">
<form method="post" action="test2.php" ">


<?php
// Notez que !== n'existait pas avant 4.0.0-RC2
echo "<CENTER><H4> Aujourd'hui le " . date('d/m/Y à H:m:s ')."</H4>";
if ($handle = opendir('A_DIFFUSER')) {

echo '<select name="valeur[]" size=30 multiple>';
/* Ceci est la façon correcte de traverser un dossier. */
while (false !== ($file = readdir($handle))) {
if($file != ".." && $file != ".")
{
echo "<option> $file\n </option>"; //multiselect
}
}
echo '</SELECT></CENTER>';

closedir($handle);
}
?>
<?php
// information pour la connection à le DB
$host = 'localhost';
$user = 'root';
$pass = '';
$db = 'enregistrement';

// connection à la DB
$link = mysql_connect ($host,$user,$pass) or die ('Erreur : '.mysql_error() );
mysql_select_db($db) or die ('Erreur :'.mysql_error());

// requête SQL qui compte le nombre total d'enregistrement dans la table et qui
//récupère tous les enregistrements
$select = 'SELECT nom,prenom FROM membre';
$result = mysql_query($select,$link) or die ('Erreur : '.mysql_error() );



echo '<select name="valeur[]" size=30 multiple>';
/* Ceci est la façon correcte de traverser un dossier. */


while($row = mysql_fetch_row($result)){
$Nom = $row[0];
$prenom = $row[1];
echo '<option>'.$Nom. ' ' .$prenom.'</option>';
}

echo '</SELECT></CENTER>';
// Deconnexion de la base de donnees
mysql_close();
?>
<input type="submit" value="Valider">
</form>
</div>
</body>
</html>

************************
*******test2.php**********
************************
<html>
<body>

<?php


if(isset($_POST['valeur']) && !empty($_POST['valeur']))
{ echo "toto";
$Col1_Array = $_POST['valeur'];
foreach($Col1_Array as $select)
{
//affichage des valeurs sélectionnées

echo "$select";
copy( "C:\wamp\www\test projet\test3\A_DIFFUSER\\".$select , "C:\wamp\www\test projet\test3\A VERIFIER\\".$select);
echo "toto";
}
}

?>
</body>
</html> 



Pour finir, ton erreur te dis que:
- soit le dossier que tu cherches à ouvrir n'existe pas
- soit le chemin que tu as entré n'est pas le bon
- soit tu n'as pas les droits pour écrire dans ce dossier.
0
waldner77 Messages postés 196 Statut Membre 4
 
1- bas le chemin il est bon car il affiche le contenue du listage de mon répertoire.
2-le dossier il est présent car on arrive a lire a l'intérieur.
3-je ne cherche pas a l'écrire mais a copier le fichier pdf dans un autre répertoire, grace au multiselect

donc la je suis complètement perdu a 100%

merci encore pour le coup de main c'était gentil de ta part
0
le père
 
Bonjour

Il vaut mieux utiliser des simples quotes, car entre doubles quotes d'autres combinaisons sont interprétées comme le \t (dans \test)

copy( 'C:\wamp\www\test projet\test3\A_DIFFUSER\\'.$select , 'C:\wamp\www\test projet\test3\A VERIFIER\\'.$select);

regarde bien le chemin dans le message d'erreur, c'est C:\wamp\www est projet est3 au lieu de C:\wamp\www \test projet \test3
0
Ozimandias Messages postés 528 Statut Membre 46
 
Joli... bien vu en plus j'ai fait la même connerie ya pas longtemps... j'aurais du m'en apercevoir.


[mode respect on] j' m'incline devant ta clairvoyance [mode respect off]
0
waldner77 Messages postés 196 Statut Membre 4
 
j'ai trouver la solution.
il faut m'être a chaque fois une double quotes.
voila mon copy
copy( "C:\\wamp\\www\\test projet\\test3\\A_DIFFUSER\\".$select , "C:\\wamp\\www\\test projet\\test3\\A VERIFIER\\".$select);

et grace a sa j'ai pu copier sur l'autre fichier.

merci pour le coup main
0
waldner77 Messages postés 196 Statut Membre 4
 
pardon je veux dire dans l'autre répertoire
0
le père
 
As-tu compris pourquoi il fallait les doubler, ou as-tu fait ça au pif ?
Tu n'avais pas besoin de tous les doubler...
copy( "C:\wamp\www\\test projet\\test3\A_DIFFUSER\\".$select , "C:\wamp\www\\test projet\\test3\A VERIFIER\\".$select);
0
waldner77 Messages postés 196 Statut Membre 4
 
j'ai fait sa au piff mais je pence qe c'est a cause de l'espace qui a entre test projet
0
le père
 
Aucun rapport avec l'espace :-)

c'est parce que le \ sert à introduire certains caractères spéciaux dans les chaînes à guillemets doubles : \n, \r, \t... voir la liste : https://www.php.net/manual/fr/language.types.string.php#language.types.string.syntax.double
Dans les chaînes à guillemets simples, il n'y a que le \' et le \\
0
waldner77 Messages postés 196 Statut Membre 4
 
merci beaucoup pour l'explication ne je savait pas du tout, comme sa je ne vais plus faire l'erreur.

MERKI MERKI MERKI
0
le père
 
comme sa je ne vais plus faire l'erreur.
Faut pas dire ça ! J'ai beau le savoir, je me trompe encore ;-)
0
waldner77 Messages postés 196 Statut Membre 4
 
je suis tout a fait d'accord avec toi mais je pense que je ne vais pas refaire l'erreur pendant un moment.

MERKI encore
0
lol
 
windows developpeurs... LOL
0