Page 1 sur 1

Aidez-moi svp à corriger la génération automatique des numéros dans mon Code PHP et les enregistrer dans un Fichier .txt

Posté : 23 mai 2020, 11:08
par chegmarco
Bonjour.

J'ai deux sérieux soucis. Mon code ci-dessous génère automatiquement des nombres ordonnés basés sur le préfixe renseigné et la longueur lorsqu'on lance par défaut le script PHP dans un navigateur Web.

1 - Le problème Numéro 1 est que je ne souhaite pas que ça génère AUTOMATIQUEMENT ou PAR DEFAUT des nombres au LANCEMENT de la page. Ça devra générer SEULEMENT quand on clique sur le Bouton du formulaire HTML "submit".

NB: J'ai essayé de corriger cela en supprimant les "??3333" et "??11" des "value" du formulaire HTML et dans la déclaration des variables $nombre et $long, mais ça m'affiche des erreurs comme "Index undefined".

2 - Mon 2ème casse-tête est que je souhaiterais enregistrer tous les numéros générés dans un fichier ".txt". Mais je ne sais pas comment m'y prendre vu que le code comporte un système de pagination.
Comment donc stocker tous les numéros générés dans un fichier texte ".txt" malgré le système de pagination ???

Code : Tout sélectionner

<!DOCTYPE html> <html lang="fr"> <head> <meta charset="UTF-8" /> <style> .courante{background:black;color:white;font-weight:bold} </style> </head> <body> <form method="post" id="form1"> Valeur :<input type="number" name="nombre" min="1" value="<?=$_POST['nombre']??3333?>"/> Longueur :<input type="number" name="long" min="1" value="<?=$_POST['long']??11?>"/> <input type="submit" /> </form> <?php $nombre=$_POST['nombre']??3333; $long=$_POST['long']??11; if($long<=strlen($nombre)){ throw new Exception('La longueur '.$long.' doit être supérieure au nombre de chiffres de '.$nombre.' !'); exit(); } $nbrParPage=100; $page=$_POST['page']??1; $start=($page-1)*$nbrParPage; $max=$nombre.str_repeat("9",($long-strlen($nombre))); $min=$nombre.str_repeat("0",($long-strlen($nombre))); $end=($start+$nbrParPage)<=$max?$start+$nbrParPage:$max; $nbrPage=ceil(((int)$max-(int)$min)/$nbrParPage); echo "min :".$min.", max :".$max.", nbrPage :".$nbrPage.", page :".$page.", nombre :".$nombre.", longueur :".$long; if($nbrPage>=1){ ?> <div> <button type="submit" name="page" form="form1" value="1" <?php echo $page==1?" disabled":"";?>>Début</button> <button type="submit" name='page' form='form1' value="<?=$page-1?>" <?php echo $page==1?" disabled":"";?>>Précedent</button> <?php if($nbrPage>6){ if($page>5){ for($i=1;$i<=3;$i++){?> <button type="submit" name="page" form="form1" value="<?=$i?>" ><?=$i?></button> <?php } } if( $page>=3) {echo "...";} for($i=$page-1>0?$page-1:1;$i<($page+3<$nbrPage-2?$page+3:$nbrPage-2);$i++){ ?> <button type="submit" name="page" form="form1" value="<?=$i?>" <?php echo $page==$i?' class="courante"':'';?>><?=$i?></button> <?php } if($page+3<$nbrPage-2){echo "...";} for($i=$nbrPage-2;$i<=$nbrPage;$i++){ ?> <button type="submit" name="page" form="form1" value="<?=$i?>" <?php echo $page==$i?' class="courante"':'';?>><?=$i?></button> <?php } } else{ for($i=1;$i<=$nbrPage;$i++){ ?> <button type="submit" name="page" form="form1" value="<?=$i?>" <?php echo $page==$i?' class="courante"':'';?>><?=$i?></button> <?php } } ?> <button type="submit" name="page" form="form1" value="<?=$page+1?>" <?php echo $page==$nbrPage? " disabled":''?>>Suivant</button> <button type="submit" name="page" form="form1" value="<?=$nbrPage?>" <?php echo $page==$nbrPage?' disabled':'';?>>Fin</button> </div> <?php for($i=$start;$i<(int)$end;$i++){ if($min+$i<=$max){ echo "<p>".($min+$i)."</p>"; }else{ break; } } } ?> </body> </html>

Aidez-moi s'il vous plaît.

Re: Aidez-moi svp à corriger la génération automatique des numéros dans mon Code PHP et les enregistrer dans un Fichier

Posté : 25 mai 2020, 08:38
par Spols
hello,

pour que ton code ne séxécute qu'après l'appui sur "submit", il faut mettre cette partie de code dans un if avec la condition !empty($_POST['submit"])

mais il va te faloir un "name" dans ton input submit et voir ce qui se passe avec tes boutons de pagination. probablement que comme il ont le même nom il auront la même réponse _POST et ta condition devrait être !empty($_POST['submit"]) || !empty($_POST['page"])

Concernant la sauvegarde des numéros en txt, vu qu'il n'y a pas d'aléatoire, tu peux le générer quand tu veux à la volée pas besoin de parcourir les pages.
tu peux générer les nombre dans une variable text séparé par \r\n et puis utiliser file_put_contents pour générer ton fichier txt sur ton serveur. tu propose ensuite un lien de téléchargement et le tour est joué.

Re: Aidez-moi svp à corriger la génération automatique des numéros dans mon Code PHP et les enregistrer dans un Fichier

Posté : 25 mai 2020, 12:09
par chegmarco
OK. Merci beaucoup