[PHP]Des petits problèmes dans mon script

Fermé
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 - 20 mai 2008 à 10:28
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 - 20 mai 2008 à 12:22
Bonjour,

J'ai deux petits soucis

Mon premier:

Je demande une photo avec ce script

if (isset($_FILES['fichier']) AND $_FILES['fichier']['error'] == 0)
{
// Test si le fichier n'est pas trop gros
if ($_FILES['fichier']['size'] <= 5000000)
{
// Test si l'extension est autorisée
$infosfichier = pathinfo($_FILES['fichier']['name']);
$extension_upload = $infosfichier['extension'];
$extensions_autorisees = array('jpg', 'jpeg', 'gif', 'png');
if (in_array($extension_upload, $extensions_autorisees))
{
// On peut valider le fichier et le stocker définitivement
move_uploaded_file($_FILES['fichier']['tmp_name'], 'C:/Documents and Settings/slelais/Bureau/site/'.$_FILES['fichier']['name']);
echo "L'envoi a bien été effectué !";
}
else
{
echo "cependant votre photo ne possède pas la bonne extension. Elle passera en jpg, jpeg, gif, png. ";
}
}
else
{
echo "cependant votre photo est tros grosse pas plus de 5 Mo. ";
}
}

Et hélas la photo même si elle est correcte ne se met pas dans mon répertoire j'aimerais savoir pourquoi svp.

Mon second problème:

Je cherche à mettre les données de mon formulaire qui est sur le net directement dans un classeur excel et sans de base de donnée. J'ai commencé mais j'ai un soucis ici

$excel=new COM("Excel.application"); //Instanciation de l'objet COM

Ca me met ca comme erreur :

Fatal error: Cannot instantiate non-existent class: com in /mnt/104/sdb/7/8/site.inter/stage/concours_ts.php on line 44

Voici mon script en entier pour le fichier excel si vous trouvez d'autres problèmes ....

define("FILENAME","C:/Documents and Settings/slelais/Bureau/site/phpexcel.xls");
if(file_exists(FILENAME)) // On vérifie que le fichier existe.
{
unlink(FILENAME); // Suppression du fichier précédemment créé s'il existe.
}
$excel=new COM("Excel.application"); //Instanciation de l'objet COM
$excel->sheetsinnewworkbook=1;//1 seule feuille de calcul dans le document
$excel->Workbooks->Add();//Ajout d'un classeur
$book=$excel->Workbooks(1);//$book contient le classeur actif
$sheet=$book->Worksheets(1);//$sheet contient la feuille active (comme son nom l'indique, feuille en anglais)
$sheet->Name="phpexcel.xls";//Attribution d'un nom à la feuille

$cell->EntireColumn->AutoFit; // La largeur de la colonne s'adapte en fonction de l'intérieur de la cellule

$cell=$sheet->Range('B1'); // On sélectionne la case B1
$cell->value=nom; // On met la valeur dans la cellule B1, peu importe le type.
$cell=$sheet->Range('C1');
$cell->value=prenom;
$cell=$sheet->Range('D1');
$cell->value=naissance;
$cell=$sheet->Range('E1');
$cell->value=lieu;
$cell=$sheet->Range('F1');
$cell->value=dpt;
$cell=$sheet->Range('G1');
$cell->value=adresse;
$cell=$sheet->Range('H1');
$cell->value=telephone;
$cell=$sheet->Range('I1');
$cell->value=telecopie;
$cell=$sheet->Range('J1');
$cell->value=portable;
$cell=$sheet->Range('K1');
$cell->value=mail;
$cell=$sheet->Range('L1');
$cell->value=classe;
$cell=$sheet->Range('M1');
$cell->value=option;
$cell=$sheet->Range('N1');
$cell->value=anne;
$cell=$sheet->Range('O1');
$cell->value=classe2;
$cell=$sheet->Range('P1');
$cell->value=option2;
$cell=$sheet->Range('Q1');
$cell->value=annee2;
$cell=$sheet->Range('R1');
$cell->value=classe3;
$cell=$sheet->Range('S1');
$cell->value=option3;
$cell=$sheet->Range('T1');
$cell->value=annee3;
$cell=$sheet->Range('U1');
$cell->value=classe4;
$cell=$sheet->Range('V1');
$cell->value=option4;
$cell=$sheet->Range('W1');
$cell->value=annee4;
$cell=$sheet->Range('X1');
$cell->value=classe5;
$cell=$sheet->Range('Y1');
$cell->value=option5;
$cell=$sheet->Range('Z1');
$cell->value=annee5;
$cell=$sheet->Range('AA1');
$cell->value=classe6;
$cell=$sheet->Range('AB1');
$cell->value=option6;
$cell=$sheet->Range('AC1');
$cell->value=annee6;
$cell=$sheet->Range('AD1');
$cell->value=classe7;
$cell=$sheet->Range('AE1');
$cell->value=option7;
$cell=$sheet->Range('AF1');
$cell->value=annee7;
$cell=$sheet->Range('AG1');
$cell->value=classe8;
$cell=$sheet->Range('AH1');
$cell->value=option8;
$cell=$sheet->Range('AI1');
$cell->value=annee8;
$cell=$sheet->Range('AJ1');
$cell->value=mention;
$cell=$sheet->Range('AK1');
$cell->value=annee9;
$cell=$sheet->Range('AL1');
$cell->value=mention2;
$cell=$sheet->Range('AM1');
$cell->value=annee10;

$cell=$sheet->Range('B2'); // On sélectionne la case B2
$cell->value=$_POST['nom']; // On met la valeur de $POST_['variable'] dans la cellule B1, peu importe le type.
$cell=$sheet->Range('C2');
$cell->value=$_POST['prenom'];
$cell=$sheet->Range('D2');
$cell->value=$_POST['naissance'];
$cell=$sheet->Range('E2');
$cell->value=$_POST['lieu'];
$cell=$sheet->Range('F2');
$cell->value=$_POST['dpt'];
$cell=$sheet->Range('G2');
$cell->value=$_POST['adresse'];
$cell=$sheet->Range('H2');
$cell->value=$_POST['telephone'];
$cell=$sheet->Range('I2');
$cell->value=$_POST['telecopie'];
$cell=$sheet->Range('J2');
$cell->value=$_POST['portable'];
$cell=$sheet->Range('K2');
$cell->value=$_POST['mail'];
$cell=$sheet->Range('L2');
$cell->value=$_POST['classe'];
$cell=$sheet->Range('M2');
$cell->value=$_POST['option'];
$cell=$sheet->Range('N2');
$cell->value=$_POST['anne'];
$cell=$sheet->Range('O2');
$cell->value=$_POST['classe2'];
$cell=$sheet->Range('P2');
$cell->value=$_POST['option2'];
$cell=$sheet->Range('Q2');
$cell->value=$_POST['annee2'];
$cell=$sheet->Range('R2');
$cell->value=$_POST['classe3'];
$cell=$sheet->Range('S2');
$cell->value=$_POST['option3'];
$cell=$sheet->Range('T2');
$cell->value=$_POST['annee3'];
$cell=$sheet->Range('U2');
$cell->value=$_POST['classe4'];
$cell=$sheet->Range('V2');
$cell->value=$_POST['option4'];
$cell=$sheet->Range('W2');
$cell->value=$_POST['annee4'];
$cell=$sheet->Range('X2');
$cell->value=$_POST['classe5'];
$cell=$sheet->Range('Y2');
$cell->value=$_POST['option5'];
$cell=$sheet->Range('Z2');
$cell->value=$_POST['annee5'];
$cell=$sheet->Range('AA2');
$cell->value=$_POST['classe6'];
$cell=$sheet->Range('AB2');
$cell->value=$_POST['option6'];
$cell=$sheet->Range('AC2');
$cell->value=$_POST['annee6'];
$cell=$sheet->Range('AD2');
$cell->value=$_POST['classe7'];
$cell=$sheet->Range('AE2');
$cell->value=$_POST['option7'];
$cell=$sheet->Range('AF2');
$cell->value=$_POST['annee7'];
$cell=$sheet->Range('AG2');
$cell->value=$_POST['classe8'];
$cell=$sheet->Range('AH2');
$cell->value=$_POST['option8'];
$cell=$sheet->Range('AI2');
$cell->value=$_POST['annee8'];
$cell=$sheet->Range('AJ2');
$cell->value=$_POST['mention'];
$cell=$sheet->Range('AK2');
$cell->value=$_POST['annee9'];
$cell=$sheet->Range('AL2');
$cell->value=$_POST['mention2'];
$cell=$sheet->Range('AM2');
$cell->value=$_POST['annee10'];


$book->saveas(FILENAME);//Sauvegarde du fichier
unset($sheet);//Libération de $sheet
unset($book);//Libération de $book
$excel->Workbooks->Close();//Fermeture du classeur
$excel->Quit();//On quitte Excel
unset($excel);//Libération de l'instance $excel

Je vous implores svp

Merci d'avance pour votre aide
A voir également:

16 réponses

Mimiste Messages postés 1149 Date d'inscription samedi 17 mai 2008 Statut Membre Dernière intervention 6 mars 2016 206
20 mai 2008 à 10:42
Salut

Pour le premier probleme

C:/Documents and Settings/slelais/Bureau/site/'.$_FILES['fichier']['name']

Tu essai d'enregistrer quelque chose dans une adresse locale, c'est impossible. Tu doit utiliser une adresse par rapport a la racine du ftp de ton serveur genre "/site/"

Pour le second probleme il faut qu'une version d'excel soit installée sur le serveur pour que l'appel fonctionne

new COM("Excel.application");

D'ou l'erreur : Cannot instantiate non-existent class

Doit y avoir mieu comme methode pour utiliser excel je pense
0
JuB0 Messages postés 654 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 6 mai 2012 81
20 mai 2008 à 10:50
move_uploaded_file($_FILES['fichier']['tmp_name'], 'C:/Documents and Settings/slelais/Bureau/site/'.$_FILES['fichier']['name']);
-> Les espaces dans les chemins il n'aime pas ...

move_uploaded_file($_FILES['fichier']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].$_FILES['fichier']['name']);
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 10:52
ok alors pour le premier problème est ce que tu pense que si je met

http://127.0.0.1/site/

ca va fonctionner?

et pour la seconde comment je fais pour vérifier si le serveur possède excel comme logiciel vu que j'éberge chez free lol

en tout cas merci pour ta rapidité!

Après ces deux problèmes j'aurais autre chose à te demander si ca te dérange pas toujours avec ce script

En attendant je voulais savoir ce que tu voulais dire par :

Doit y avoir mieu comme methode pour utiliser excel je pense
0
JuB0 Messages postés 654 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 6 mai 2012 81
20 mai 2008 à 11:04
Avec PHP, il faut réfléchir coté serveur.
En effet le code que tu vas creer va être éxécuté coté serveur !
Pour ça il existe des variables prédéfinies : https://www.php.net/manual/fr/reserved.variables.php qui te permettent d'utiliser le système de fichiers du serveur, sans en connaitre l'emplacement.
Avec $_SERVER['DOCUMENT_ROOT'] tu obtiens le chemin de la page PHP en train d'être éxécutée.

Essaies avec ça si ça marche.
move_uploaded_file($_FILES['fichier']['tmp_name'], $_SERVER['DOCUMENT_ROOT'].$_FILES['fichier']['name']);

Ju
0

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

Posez votre question
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 11:07
Voila ce qu'il me repond :

Warning: move_uploaded_file(/mnt/104/sdb/7/8/site.interimages.jpg) [function.move-uploaded-file]: failed to open stream: Permission denied in /mnt/104/sdb/7/8/site.inter/stage/concours_ts.php on line 24

Warning: move_uploaded_file() [function.move-uploaded-file]: Unable to move '/mnt/104/sdb/7/8/site.inter/phpMDTD7R' to '/mnt/104/sdb/7/8/site.interimages.jpg' in /mnt/104/sdb/7/8/site.inter/stage/concours_ts.php on line 24
0
JuB0 Messages postés 654 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 6 mai 2012 81
20 mai 2008 à 11:13
Evidement .....
J'ai oublié un "/" dans le path.

move_uploaded_file($_FILES['fichier']['tmp_name'], $_SERVER['DOCUMENT_ROOT']."/".$_FILES['fichier']['name']);
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 11:17
Effectivement plus d'erreurs par contre je ne trouve pas mon fichier je devrais le voir dans quoi?
0
JuB0 Messages postés 654 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 6 mai 2012 81
20 mai 2008 à 11:20
Tu sais ce que renvoie la variable $_SERVER['DOCUMENT_ROOT'] ?
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 11:22
$_SERVER est un tableau contenant des informations comme les en-têtes, dossiers et chemins du script.

C'est ca?

d'accord mais alors comment je fais pour mes photos? lol
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 11:42
j'ai dit quelque chose de mal?

Je comprend pas ce que tu veu me faire comprendre!
0
JuB0 Messages postés 654 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 6 mai 2012 81
20 mai 2008 à 11:51
Fais un echo $_SERVER['DOCUMENT_ROOT'] et tu sauras où est passé ton fichier ...
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 11:55
je l'ai déja fait mais j'y accède comment vu que j'héberge chez free?
0
JuB0 Messages postés 654 Date d'inscription jeudi 27 décembre 2007 Statut Membre Dernière intervention 6 mai 2012 81
20 mai 2008 à 11:58
..........????????????????????
Comment as tu uploadé ton script sur free ?
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 11:59
par le ftp

je ne le vois toujours pas que ce soit a la racine du site / que ce soit a /site/ ou a echo"$_SERVER['DOCUMENT_ROOT']"
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 12:08
normal?
0
drogba7213 Messages postés 1524 Date d'inscription mardi 14 août 2007 Statut Membre Dernière intervention 3 avril 2010 21
20 mai 2008 à 12:22
il vient d'apparaitre a la racine du site et ca me met 9h49 est ce qu'il est possible qu'un fichier qui fait 3Ko
mette 3heure pour se charger?

Ca m'ettonnerait quand meme.

Svp répondez moi
0