chekbox à chaque ligne d'une variable

funzyrip
Invité n'ayant pas de compte PHPfrance

23 janv. 2006, 12:16

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

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 janv. 2006, 12:43

$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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

funzyrip
Invité n'ayant pas de compte PHPfrance

23 janv. 2006, 13:03

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??

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 janv. 2006, 13:15

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'
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer

funzyrip
Invité n'ayant pas de compte PHPfrance

23 janv. 2006, 15:26

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>

funzyrip
Invité n'ayant pas de compte PHPfrance

23 janv. 2006, 15:30

chai pas si c comme ça pour la balise résolu
:D

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

23 janv. 2006, 17:05

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 ?
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer