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...
Configuration: Windows Vista
Firefox 3.0.10

17 réponses

  1. 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
  2. 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
  3. 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
  4. waldner77 Messages postés 196 Statut Membre 4
     
    comment sa je ne comprend pas trop ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. waldner77 Messages postés 196 Statut Membre 4
     
    je ne voit pas du tout ou il faut l'utiliser ces pour sa
    0
  7. 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
  8. 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
  9. 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
    1. 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
  10. 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
  11. waldner77 Messages postés 196 Statut Membre 4
     
    pardon je veux dire dans l'autre répertoire
    0
  12. 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
  13. 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
  14. 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
  15. 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
  16. 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