Récupérer des lignes de texte pour la bdd

Fermé
Utilisateur anonyme - 3 oct. 2011 à 02:45
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 - 5 oct. 2011 à 09:01
Bonjour,

j'ai trouvé cette vidéo : http://simpledev.fr/tutoriels/tuto/recuperation-de-donnees-depuis-un-fichier-texte-en-php/145

Je voudrai réaliser la même chose sauf que ça passerai par un formulaire...

Mais je m'arrache les cheveux, une idée ?

formulaire :

<form action="insert.php" method="post">
<table border="0" bordercolor="#000000" style="background-color:" width="auto" align="center">
	<tr>
		<td>Nom : </td>
		<td><input type="text" name="author" size="35" value="Aranud"/></td>
	</tr>
	<tr>
		<td>Date : </td>
		<td><input type="text" name="date" size="35" value="<?php $date = date("Y-m-d"); Print("$date");?>"/></td>
	</tr>
	<tr>
		<td>Liste : </td>
		<td><TEXTAREA rows="25" name="liste" cols="50" value="<?php echo $lignes ?>"></TEXTAREA></td>
	</tr>
	<tr>
		<td>Classer comme : </td>
		<td><input type="radio" name="classified" value="B"/>Malware<br/>
		<input type="radio" name="classified" value="U"/>Inconnu<br/>
    <input type="radio" name="classified" value="G"/>Inoffensif<br/></td>
	</tr>
	<tr>
	<td></td>
		<td><input type="submit" value="Soumettre"/></td>
	</tr>
	  
	</table>



insert :

<?php
require("config.php");
if(!empty($_post));
{
extract($_post);
$lignes = $_POST['liste'];
$author = $_POST['author'];
$date = $_POST['date'];
$classified = $_POST['classified'];

}


foreach($lignes as $ligne){
$ligne=explode("*",$ligne);
$sql="INSERT INTO md5 (author, md5, name, description, date, classified) VALUES('$author','$ligne[0]','$ligne[1]','$ligne[2]','$date','$classified')";
$req=mysql_query($sql);


}

mysql_close();

?>


Merci beaucoup !!!!!

4 réponses

Utilisateur anonyme
3 oct. 2011 à 10:50
Bonjour,

$lignes = $_POST['liste'];

cela signifie que vous récupérez un texte que vous mettez dans la variable $lignes, ce n'est pas un tableau, juste une chaine de caractères, vous êtes d'accord, donc le foreach($lignes as $ligne) ne va pas vous renvoyer les lignes saisies dans la zone de texte, mais à priori chaque caractère de la chaîne $lignes

Il faudrait que
$lignes = split($_POST['liste'],"\n"); (sous linux), à condition que vous mettiez des retours chariots dans le textatea
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
3 oct. 2011 à 16:58
de plus, en php la casse des variable est importante alors mets $_POST au lieu de $_post

autre remarques:

foreach($lignes as $ligne){
$ligne=explode("*",$ligne);
$sql="INSERT INTO md5


- comme dit neoprog67 $lignes n'est pas un array donc tu ne peut pas le parcourir par foreach
- $ligne=explode("*",$ligne); ce qui voudrait dire que dans chaque ligne il y a en plus des * qui te servent a découper en sous array ?
- tu nomme ta table md5 ce n'est pas très judicieux ce mot étant le nom d'une fonction php
0
Utilisateur anonyme
3 oct. 2011 à 19:30
Merci de vos commentaires je vais tenter ça cette nuit quand je rentrerai chez moi.

oui en faite j'ai un programme qui génère les MD5 des fichiers par une *
par exemple

lemd5 *lenomfichier
lemd5*lenomdufichier2
....

donc je vais découper par l'étoile.Le but étant de référencer les programme de la machine par les MD5 (qui est aussi la clé primaire)

Merci encore
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
4 oct. 2011 à 22:31
si j'ai bien compris ton programme genere les lemd5 *lenomfichier
lemd5*lenomdufichier2 et les enregistre dans un fichier .txt
et tu veux lire ce fichier ligne par ligne et afficher dans un formulaire pour ensuite enregistrer dans la BDD avec le classement "malware" etc..

si c'est le cas voici une solution:
<?php
//on lit de contenu du fichier txt
//suposons qu'il se nomme liste_fichiers.txt et qu'il est dans le même repertoire que ce script php
$lignes_fichiers=file('liste_fichiers.txt'); //la fonction file lit le fichier et met dans un array ligne par ligne
//on va afficher chaque ligne dans le formulaire mais grace à un compteur on changera à chaque insertion dans la BDD pour passer à la ligne suivante

if(isset($_POST['compteur'])){
	$cpt=$_POST['compteur']); //recup du numéro precedent
	if($cpt < sizeof($lignes_fichiers)){
		$cpt ++; //tant qu'on a pas atteint la fin du fichier txt on passe à ligne suivante
	}else{
		echo "Fin du fichier atteint";
	}
}else{
	//au premier affichage
	$cpt=0; //l'index de l'array commence à 0  (égal première ligne)
}


if(isset($_POST['soumettre']));
{
	require("config.php");

	$lignes = $_POST['liste'];
	$author = $_POST['author'];
	$date = $_POST['date'];
	$classified = $_POST['classified'];
	//insertion dans la BDD
	$ligne=explode("*",$ligne); //array
	$sql="INSERT INTO md5 (author, md5, name, description, date, classified) VALUES('$author','$ligne[0]','$ligne[1]','$ligne[2]','$date','$classified')";
	$req=mysql_query($sql);

	mysql_close();
}



?>

Traitement de la ligne: <b><?php echo $cpt+1; ?> </b>en cours<br />
<form action="insert.php" method="post">
<table border="0" bordercolor="#000000" style="background-color:" width="auto" align="center">
	<tr>
		<td>Nom : </td>
		<td><input type="text" name="author" size="35" value="Aranud"/></td>
	</tr>
	<tr>
		<td>Date : </td>
		<td><input type="text" name="date" size="35" value="<?php $date = date("Y-m-d"); echo $date;?>"/></td>
	</tr>
	<tr>
		<td>Liste : </td>
		<!-- on affiche la ligne correspondante au compteur $cpt -->
		<td><TEXTAREA rows="25" name="liste" cols="50" value="<?php if($cpt < sizeof($lignes_fichiers)) {echo $lignes_fichiers[$cpt]} ?>"></TEXTAREA></td>
	</tr>
	<tr>
		<td>Classer comme : </td>
		<td>
			<input type="radio" name="classified" value="B"/>Malware<br/>
			<input type="radio" name="classified" value="U"/>Inconnu<br/>
			<input type="radio" name="classified" value="G"/>Inoffensif<br/></td>
	</tr>
	<tr>
	<td></td>
		<td><input name="soumettre" type="submit" value="Soumettre"/></td>
		<!-- par ce champ caché on va transmettre le numéro compteur en cours d'insertion -->
		<td><input name="compteur" type="hidden" value="<?php echo $cpt; ?>"/></td>
	</tr>
	  
	</table>
0
Utilisateur anonyme
5 oct. 2011 à 00:56
lu merci pour ton commentaire, mais ça ne sera pas un fichier, car nous seront plusieurs et il faudra en rajouter régulièrement donc par simplicité le document txt sera coller dans un textarea mais merci encore je vais m'en inspirer
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
5 oct. 2011 à 09:01
ha d'accord, donc ce que je t'ai fait ne sera pas bon

mais comment fais tu avec plusieurs noms de fichiers "collés" dans le textarea pour leur donner une catégorie différente ?.

si vous êtes plusieurs, pourquoi ne pas enregistrer la liste générée par le prog dans un fichier prenom.txt par exemple (un copier coller dans bloc note), fichier qui peut être supprimé à la fin du traitement par le formulaire, dans ce cas tu pourrait utiliser ce que je t'ai fait et mettre la catégorie fichier par fichier
0