Problème avec la fonction copy en php
waldner77
Messages postés
196
Statut
Membre
-
lol -
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...
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:
- Problème avec la fonction copy en php
- Fonction si et - Guide
- Exact audio copy - Télécharger - Conversion & Extraction
- Super copy - Télécharger - Gestion de fichiers
- Easy php - Télécharger - Divers Web & Internet
- Copy protect - Télécharger - Chiffrement
17 réponses
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.
//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.
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
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
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">
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
bon, oublie ça, j'ai dis une connerie. Ensuite j'ai corrigé quelques erreurs de syntaxe:
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.
<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.
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
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
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
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
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
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
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);
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);
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 \\
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 \\
merci beaucoup pour l'explication ne je savait pas du tout, comme sa je ne vais plus faire l'erreur.
MERKI MERKI MERKI
MERKI MERKI MERKI
comme sa je ne vais plus faire l'erreur.
Faut pas dire ça ! J'ai beau le savoir, je me trompe encore ;-)
Faut pas dire ça ! J'ai beau le savoir, je me trompe encore ;-)