Vous n'êtes pas identifié(e).
Bonjour à tous,
Je suis nouveau sur le forum et j'espère que vous pourrez m'aider dans mon projet.
Je vous explique mon problème:
J'ai un serveur sur mon réseau local sur lequel est installé:
- Un serveur web Apache/2.2.16
- Un PhpMyAdmin v.3.2.5 qui gère une base MySQL: 5.1.49
Mon projet:
Je voudrais créer une page qui serait uniquement accessible depuis mon réseau local, qui me permettrait via un formulaire:
- d’envoyer un fichier sur mon serveur dans un répertoire choisi nommé «applis» se trouvant à la racine du site et de l’enregistrer dans la bdd
- d’y associer en plus un nom via un champs de saisie de texte
Sous ce formulaire, j’aimerai que soit listé tous les fichiers qui ont été envoyés sur le serveur et présents dans le répertoire «applis» chacun étant identifié dans l’ordre suivant avec un numéro, le nom du fichier (cliquable et donc téléchargeable), le nom associé au fichier, une date et l’heure de l’upload.
J’aimerai aussi qu’au bout de chaque ligne figure un bouton supprimer pour supprimer l’upload en question de la bdd.
Enfin les fichiers doivent apparaitre par ordre décroissant, c’est à dire le dernier upload en haut de liste.
En fait, je vais m’en servir pour installer facilement des applications android trouvés sur le net sur mon mobile via cette page internet via mon réseau local. Le but étant d’envoyer une appli android sur le serveur via cette page depuis mon pc puis de m’y connecter via le browser de mon mobile pour lancer l’installation et cliquant sur le lien de l’appli.
J’ai cherché sur pas mal de forum comment implémenter tout ceci et en fait comme je suis débutant rien ne fonctionne.
J’ai déjà inséré dans ma page index.html le formulaire suivant que j’ai trouvé sur le net:
<form enctype="multipart/form-data" action="upload.php" method="post">
<input type="hidden" name="MAX_FILE_SIZE" value="30000" />
Envoyez une appli:
<input type="file" name="appli"/>
<input type="text" size="20" value="Nom du client" name="client"/>
<input type="submit" value="Envoyer l'appli"/>
</form>
et j’ai créé un fichier upload.php qui n’a pas l’air de fonctionner avec ma base de donnée...
En clair, ca fait une semaine que je suis dessus et là, je suis complètement pommé... J’aimerai donc avoir l’aide de quelqu'un pour reprendre entièrement et clairement étape par étape ce que je dois faire pour réaliser ce projet.
Merci d’avance à tous pour votre aide.
Hors ligne
Saluton,
De mon point de vue, la première chose à faire serait de te calmer car tu m'a l'air tout stressounet.
Je sors hors d'haleine de la lecture de ton post.
Enregistrer des fichiers dans une base de données (colonne de type BLOB, j'imagine) est rarement une bonne idée. Il vaut mieux enregistrer le fichier dans un dossier du serveur et garder dans une colonne de la table de la BD l'URL du fichier.
Pour pouvoir te guider il nous faudrait, a minima, le résultat d'un SHOW CREATE TABLE nom_de_la_table et le code du script upload.php
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci pour ta réponse rapide, c’est vrai que ce problème me stresse un peu.
Donc je vais essayer de me dé-stresser un peu et d’être plus cool.
En fait pour ce qui est de la gestion des fichiers au travers de la base de donnée, je ne sais pas absolument pas comment cela peut se gérer. Tu me parles de BLOB et pour être honnete avec toi je ne sais pas du tout de quoi il s'agit...
Je suis vraiment novice en la matière.
J’ai créé dans phpmyadmin la table suivante:
CREATE TABLE `applis_tbl` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`client` varchar(255) NOT NULL,
`appli` tinytext NOT NULL,
`date` varchar(10) NOT NULL,
`heure` varchar(5) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `id_2` (`id`),
KEY `id` (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=2 DEFAULT CHARSET=latin1
En fait je crois, que pas mal de choses sont fausses dans cette table car je sais même pas si les format choisi sont justes. Donc il faudrait peu etre la recréer entièrement...
Pour mon fichier upload.php j’ai juste créer la connection et appelé les labels du fichier index.html:
<?php
define("HOST", "localhost");
define("username", "rempli");
define("PASSWORD", "rempli");
define("DATABASE", "Android.applis_tbl");
/* Connection à la base
********************************************************************/
$serveur = mysql_connect (HOST, username, PASSWORD);
/* Sélection de la base
********************************************************************/
mysql_select_db (DATABASE);
if (!$serveur)
{
die('Non connecté : ' . mysql_error());
}
else
{
echo "Enregistrement de l'appli...<br />";
$query = "INSERT INTO applis_tbl ( VALUES ('','.$client','.$appli','','')";
$req = mysql_query($query);
echo "Appli enregistrée correctement<br />";
}
?>
Quand j’essaye de faire un enregistrement, le formulaire semble bien se connecter a la base mais il n’y a aucun enregistrement...
Enfin voilà, tu as tout ce que j’ai fait, merci pour ton coup de main.
Hors ligne
Dans ta description de table il y a plusieurs problèmes:
id étant une PRIMARY KEY AUTOINCREMENT l'index UNIQUE ajouté ne sert à rien une PRIMARY KEY étant, par définition, UNIQUE.
Comment et où comptes-tu enregistrer le lien vers le fichier uploadé ?
Dans ta requête tu ne dis pas quelles colonnes sont visées par les VALUES et d'autre part, toutes les colonnes sont définies comme NOT NULL mais sans valeur DEFAULT.
Donc, en l'état, ta requête INSERT ne pourra qu'échouer.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Ok pour l'histoire de la primary key je comprend le problème.
Pour ce qui est des liens vers les fichiers uploadé je n'avais pas du tout pensé à ça donc j'ai carrément rien prévu pour gérer ça.
Les applis devront être enregistrés a la racine du site dans le répertoire /applis/
Pour ce qui est de la requête je ne suis pas sur de comprendre. Je suis désolé, j'ai très peu de connaissance de tout ceci.
En fait, je pense qu'on devrait y aller étape par étape en commençant par créer la base de données.
Peux-tu me dire en fait directement ce que tu ferais pour créer une base de donnée adapté au projet?
Je pense que je comprendrais mieux mes erreurs en faisant la comparaison de ce que j'ai fait et ce que tu penses qu'il faut que je fasse et on gagnera plus de temps.
En tout cas, merci beaucoup pour ton aide.
Hors ligne
Je crois que tu devrais étudier ce tutoriel de chez nos amis du site "comment ça marche".
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Ok merci pour le lien, j'ai commencé à lire et apparemment je suis tellement novice que je suis obligé d'aller voir ailleurs ce que certaines notions veulent dire.
Donc je pense que j'ai tellement de trucs a apprendre sur le sujet que ca va me prendre facilement plus d'une semaine et comme il faut que je bosse sur d'autres trucs je pense que je vais plutôt laisser tomber par manque de temps... :s
En tout cas d'avoir essayé de m'aider.
Hors ligne
Bonjour,
Bon finalement j'ai bien avancé hier soir puisque maintenant j'arrive a uploader un fichier dans un répertoire cible et d'enregistrer son url ainsi que le nom du formulaire.
En clair j'ai refait ma base sql comme ceci:
Depuis mon formulaire j'arrive a uploader mon fichier dans le répertoire choisi et la base enregistre bien toutes les données heure de l'upload comprise.
Maintenant, je cherche à afficher toutes les données contenues dans la base sous forme de tableau et là je vois pas bien d'où viens mon problème:
J'ai inséré ce code dans ma page index:
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
$query = "SELECT * FROM applis_tbl ORDER BY date DESC";
$result = mysql_query($query);
/* Recuperation des resultats/
while($row = mysql_fetch_row($result)){
$Num = $row['id'];
$Nomapp = $row['nom_appli'];
$Urlapp = $row['url_appli'];
$Nomclient = $row['nom_client'];
$Date = $row['date'];
echo "<tr>\n
<td>'.$Num.'</td>\n
<td><a href=\'$Urlapp'\>'$Nomapp'</a></td>\n
<td>.$Urlapp.</td>\n
<td>.$Nomclient</td>\n
<td>"$Date"</td>\n
</tr>\n";
}
/* Deconnexion de la base de donnees/
mysql_close();
avec ce code j'obtiens bien un tableau mais les données ne s'affichent pas. Il affiche que le texte contenu dans la partie echo entre les balises <td>...
De plus je ne sais pas quel est la bonne syntaxe pour faire appel aux variables $quelquechose dans les <td>
Vous voyez où est mon erreur?
Merci.
Hors ligne
Comme tu le vois avec la colorisation du code, pour un commentaire monoligne c'est // et non /*
/* doit trouver un */ fermant.
Bon il y a davantage à dire sur ton code, mais corrige déjà cela.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Sache pour commencer que date est un mot réservé dans beaucoup de langage, notamment SQL.
L'utiliser comme nom de colonne n'est donc pas trop conseiller
Quant au SELECT *, ce vieux billet de l'ami Fredoche t'illustrera ce que j'en pense.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Merci pour tes remarques.
J'ai donc modifié dans ma base la colonne "date" par "dateup" et remplacé le * par chaques champs comme ceci et ca ne marche toujours pas.
Je pense que le problème viens plus de mon echo mais je trouve pas.... grrrr
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
$query = "SELECT id,nom_appli,url_appli,nom_client,dateup FROM applis_tbl ORDER BY date DESC";
$result = mysql_query($query);
while($row = mysql_fetch_row($result)){
$Num = $row['id'];
$Nomapp = $row['nom_appli'];
$Urlapp = $row['url_appli'];
$Nomclient = $row['nom_client'];
$Date = $row['dateup'];
echo "<tr>\n
<td>'.$Num.'</td>\n
<td><a href=\'$Urlapp'\>'$Nomapp'</a></td>\n
<td>.$Urlapp.</td>\n
<td>.$Nomclient</td>\n
<td>"$Date"</td>\n
</tr>\n";
}
mysql_close();
?>
</tr>
</table>
Merci pour le coup de main!
Hors ligne
Le premier <tr> au-dessus de <?php est en trop.
Et, "ça ne marche toujours pas", n'est pas un diagnostic très éclairant pour nous.
Précise un peu, STP, la nature des dysfonctionnements observés.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
$bdd = Android; devient $bdd = "Android";
a++
Hors ligne
Oui désolé, je vais essayer d'être plus précis.
Alors avec ce code:
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
$query = "SELECT id,nom_appli,url_appli,nom_client,dateup FROM applis_tbl ORDER BY date DESC";
$result = mysql_query($query);
while($row = mysql_fetch_row($result)){
$Num = $row['id'];
$Nomapp = $row['nom_appli'];
$Urlapp = $row['url_appli'];
$Nomclient = $row['nom_client'];
$Date = $row['dateup'];
echo "<tr>\n
<td>'.$Num.'</td>\n
<td><a href=\'$Urlapp'\>'$Nomapp'</a></td>\n
<td>.$Urlapp.</td>\n
<td>.$Nomclient</td>\n
<td>"$Date"</td>\n
</tr>\n";
}
mysql_close();
?>
</tr>
</table>
j'obtiens ceci dans ma page:
\n \n \n \n \n \n \n"; } mysql_close(); ?>
N° Nom appli URL client date upload
'.$Num.' '$Nomapp' .$Urlapp. .$Nomclient "$Date"
A la place des variables $Num etc, je devrais avoir tous les champs rempli avec les données de ma base mais ca me renvoi uniquement le nom des variables...
Et a la première ligne juste au dessus de mon tableau s'affiche la ligne bizarre "\n \n \n \n \n \n \n"; } mysql_close(); ?>"
Vous voyez d'où vient le problème?
Hors ligne
Essaye avec ça à la place des lignes 30 à 36
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Aie je pense que le problème doit se situer ailleurs car j'ai le même comportement avec ton code qu'avec l'ancien...
Le bout de code: %S%s%s%s%s%s%s",$cr,$Num,$cr,$Urlapp,$Nomapp,$cr,$Urlapp,$cr,$Nomclient,$cr,$Date,$cr); } mysql_close(); ?> apparait juste au dessus du tableau. Bizarre ça...
Et dans le tableau j'ai %s qui apparait à la place des données.
Voilà le code que j'ai mis:
mysql_connect($host, $user,$passwd) or die("erreur de connexion au serveur");
mysql_select_db($bdd) or die("erreur de connexion a la base de donnees");
$query = "SELECT id,nom_appli,url_appli,nom_client,dateup FROM applis_tbl ORDER BY date DESC";
$result = mysql_query($query);
while($row = mysql_fetch_row($result)){
$Num = $row['id'];
$Nomapp = $row['nom_appli'];
$Urlapp = $row['url_appli'];
$Nomclient = $row['nom_client'];
$Date = $row['dateup'];
$cr="\n";
printf("<tr>%S<td>%s</td>%s<td><a href='%s'>%s</a></td>%s<td>%s</td>%s<td>%s</td>%s<td>%s</td>%s</tr>%s",$cr,$Num,$cr,$Urlapp,$Nomapp,$cr,$Urlapp,$cr,$Nomclient,$cr,$Date,$cr);
}
mysql_close();
?>
</tr>
</table>
Hors ligne
Exacte quand je fais, voir code source dans le navigateur, toute la portion de code commençant par <?php jusqu'a printf("<tr> est en rose et semble ne pas être interpretré...
et juste après "printf("<tr>" le code est ensuite de couleur normale. Bizarre qu'il reprenne l'interpretation au milieu des balises php...
Y'a t il une déclaration a faire au début de la page html pour l'utilisation du php?
Hors ligne
non ce code est inclu dans mon index.html
Hors ligne
ah je crois que je viens de comprendre.
En gros je suis un boulet!
Dans un .html on peut mettre du html et du javascript et non du php.
Le php ne peut etre interpreté par le serveur que si celui-ci est contenu dans un fichier .php!
C'est bien ça? ah je crois que je progresse...
Mais comment faire l'appel de la partie de code php qui m'intéresse depuis la page index.html?
Hors ligne
Tu peux mettre du HTML dans un fichier PHP cela ne gène pas.
Je te conseillerai donc de plutôt renommer ton fichier.
D'autant plus qu'un serveur quand il pointe sur un dossier recherche index.html et si pas trouvé il recherche index.php
Donc pas de soucis.
Hors ligne
Dans un .html on peut mettre du html et du javascript et non du php.
Le php ne peut etre interpreté par le serveur que si celui-ci est contenu dans un fichier .php!
Pas forcément, tout dépend comment est configuré le serveur.
Gloire à qui n'ayant pas d'idéal sacro-saint,
Se borne à ne pas trop emmerder ses voisins. G. Brassens Don Juan 1976.
Avĉjo MoKo kantas
La chaîne YouTube MoKo Papy
Hors ligne
Bonsoir,
Mais comment faire l'appel de la partie de code php qui m'intéresse depuis la page index.html?
La seule façon d'appeler du php via une page html c'est par une fonction js dans un contexte ajax (sinon j'en vois pas l'intérêt). Dans ce cas, oublie [form]...[/form] sinon ca va te refresh ton resultat si l'appel se fait via un bouton.
POO PHP+Ajax en MVC avec PDO et Bases de données épaisses : What else?
Hors ligne
Bon j'ai changé la page en index.php le tableau est maintenant correctement affiché mais les données de ma base de donnée toujours pas affichées...
Donc j'ai repris le même code de connection à la base que mon formulaire d'upload qui lui fonctionne.
Je suppose que le problème doit commencer à partir du while mais ne trouve toujours pas pourquoi les données ne sont toujours pas affichés dnas le tableau..
$serveur = mysql_connect (HOST, username, PASSWORD);
mysql_select_db (DATABASE);
if (!$serveur)
{
die('Non connecté : ' . mysql_error());
}
else
{
$query = "SELECT * FROM applis_tbl ORDER BY date DESC";
$result = mysql_query($query);
while($row = mysql_fetch_row($result)){
$Num = $row[0];
$Nomapp = $row[1];
$Urlapp = $row[2];
$Nomclient = $row[3];
$Date = $row[4];
$cr="\n";
printf("<tr>%s<td>%s</td>%s<td><a href=%s>%s</a></td>%s<td>%s</td>%s<td>%s</td>%s<td>%s</td>%s</tr>%s",
$cr,$Num,$cr,$Urlapp,$Nomapp,$cr,$Urlapp,$cr,$Nomclient,$cr,$Date,$cr);
}
}
mysql_close();
?>
</table>
Hors ligne