Page 1 sur 1

chekbox à chaque ligne d'une variable

Posté : 23 janv. 2006, 12:16
par funzyrip
Bonjour!
dan le cadre d'un stage en entreprise je dois réaliser une interface de restauration de fichier (je ne suis pas un pro du php)
sur la 1ere page l'utilisateur l'utilisateur entre un nom de fichier qu'il souhaite restaurer
je récupère ce nom dans la variable $fichier
je fai afficher la liste des fichiers correpondant à ce nom
$output = shell_exec("/usr/bin/locate -d /home/dbhoraire $fichier");
echo "<pre>$output</pre>";
mais je voudrai qu'il puisse cocher le ou les fichiers qu'il veut restaurer
si je fai
echo "<pre><input type=\"checkbox\" name=\"filetorestore\" value=\"t\"> $output</pre>
je n'ai une checkbox que sur la 1ere ligne de resultat...

1) comment faire pour avoir une checkbox à chaque ligne de echo $output
2) comment faire pour récuperer dans la checkbox (dans value ou name?) ce qu'il y a sur la ligne output (a savoir le chemin du fichier par exemple : /mnt/sauve/gds/sauvegarde-journaliere/.txt )

j'espère avoir été a peu près clair
si vous pouviez m'aider? Merci d'avance

Posté : 23 janv. 2006, 12:43
par zeus
$output contient un seul fichier de restauration ou bien la liste des tous ces fichiers ?

Quel est le format de cette variables ?

Donnes nous un peu plus de code pour qu'on puisse t'aider

Si c'est ce que je pense, ta variable contient tout les fichier et il va falloir que tu "découpes" le contenu pour récupérer les différents fichier et insérer une chekbox à chaque nouveau nom

Sinon, il suffit que tu mette le nom du fichier dans l'attribut value de ta checkbos pour pouvoir reconnaitre le fichier ensuite

Posté : 23 janv. 2006, 13:03
par funzyrip
merci de ta réponse
en fait (je suis sous linux)
$output = shell_exec("/usr/bin/locate -d /home/dbhoraire $fichier");
execute la commande locate qui permet de retrouver rapidement un fichier d'après son nom en s'appuyant sur une datebase qui n'est pas un fichier texte (ici l'option -d /home/dbhoraire spécifie qu'il faut s'appuyer sur la db : /home/dbhoraire)

un exemple si je lance locate www
je recherche tout les répertoires ou fichiers www
on obtient:
/var/www
/var/www/banniere.png
/var/www/restau.php
/var/www/restau.php~


je n'ai pas plus de code, voila toute ma page
<?php
$fichier = $_POST['fichier'];
echo "Liste des fichiers : $fichier<br>";
$output = shell_exec("/usr/bin/locate -d /home/dbhoraire $fichier");
echo "<pre>$output</pre>";
?>
<input type="submit" value="Restaurer">
</form>


il faudrait que j'arrive à savoir le nombre de ligne du résultat de locate et afficher ce résultat ligne par ligne
ou que je range chaque ligne de résultat dans un tableau mais je vois pas comment faire??

Posté : 23 janv. 2006, 13:15
par zeus
Alors il faut que tu découpes ta variable par les sauts de lignes afin de récupérer les différents fichiers

Utilise la fonction explode pour découper ta chaine, en sachant que le retour à la ligne sous linux est '\n'

Posté : 23 janv. 2006, 15:26
par funzyrip
merci merci merci zeus!!
ca marche, voila ce que je voulai :
<form method="post" action="confirm.php">
<?php 
$fichier = $_POST['fichier']; 
echo "Liste des fichiers : $fichier<br>";

$output = shell_exec("/usr/bin/locate -d /home/dbhoraire $fichier");
$result = explode ("\n", $output);

$i = 1;
 while ($result[$i] and $i <= 150) {
echo "<pre><input type=\"checkbox\" name=\"checkbox$i\" value=\"$result[$i]\"> $result[$i]</pre>"; 
$i++; 
}
 
?>
<input type="submit" value="Restaurer"> 
</form>

[Résolu] chekbox à chaque ligne d'une variable

Posté : 23 janv. 2006, 15:30
par funzyrip
chai pas si c comme ça pour la balise résolu
:D

Posté : 23 janv. 2006, 17:05
par zeus
Pour mettre la balise [RESOLU], il faut être inscrit ;)

Sinon, quand tu poste du code, pense à utiliser les balise
, je l'ai fait dans ton dernier message et tu peut voir que c'est plus clair quand même, non ?