Problème avec mon script

Eléphant du PHP | 331 Messages

05 avr. 2011, 01:08

Bonjour,

je me suis trouvé un jeu de mots cachés pour mon site, pour alimenter les grilles j'ai trouvé une liste des mot du dictionnaire que jai mis dans une bd.

a partir de cette bd je veux créer des fichiers pour alimenter ma grille de mot.

J'ai donc fait un script qui va chercher 27 mot dans la bd les écrit dans un fichier texte, supprime les mot de dans la bd et répète le script autant qu'il y a des mots dans la bd.

Mais sa marche pas complètement mon affaire.

il semble que les mots ne sont pas supprimé autant que le script est exécuté et aussi la redirection de s'arrete jamais.

mon script devrait supprimer de la bd tout les mots quil écrit dans le fichier texte et la redirection devrait arreter quand la bd est vide.

Pouvez-vous m'aider svp?

Merci!
<?php
$nb = 27;
if (!isset($_GET['page'])) $page = 1;
else $page = intval($_GET['page']);
$debut = ($page - 1);

$myFile = "Word_".$page.".txt";
$fh = fopen($myFile, 'w') or die("can't open file");
//////////////////////////////////////
mysql_connect("localhost","root","") or die("Connexion impossible");
mysql_select_db("crosswords") or die('selection impossible');
$sql = "select * from mots ORDER BY id LIMIT $debut,$nb";
if($result=mysql_query($sql) or die($sql))
{
//////////////////////////////////////


fwrite($fh, "255 255 255|0 0 0          # background color: R G B|foreground color: R G B\n");
fwrite($fh, "none                       # background image (fill in 'none' if no image)\n");
fwrite($fh, "WordHunt_banner.gif|10 5   # title image (fill in 'none' if no image) and origin x y\n");
fwrite($fh, "300 300|10 50              # main board width height|origin x y\n");
fwrite($fh, "100 300|320 50             # key list width height|origin x y\n");
fwrite($fh, "45 20|265 25               # 'New' button width height|origin x y\n");
fwrite($fh, "45 20|320 25               # 'Hint' button width height|origin x y\n");
fwrite($fh, "45 20|375 25               # 'Show' button width height|origin x y\n");
fwrite($fh, "150 150 150|20 20          # grid line color|row column\n");
fwrite($fh, "255 0 0                    # crossout line color \n");
fwrite($fh, "255 0 255                  # hint line color  \n");
fwrite($fh, "255 206 51                  # found cell color   \n");
fwrite($fh, "0 0 0|Helvetica|12|0       # font color|font|size|style   \n");
fwrite($fh, "340 18|-1                  # timer x y|time limit in minutes (no limit if less than 0)    \n");
fwrite($fh, "WordHunt_grab.au           # audio for grabbing letters (fill in 'none' if no audio)    \n");
fwrite($fh, "Great Job!|none|_self      # winning text|URL (use 'none' if no link)|frame    \n");
fwrite($fh, "You Lost!|none|_self       # losing text|URL (use 'none' if no link)|frame    \n");
fwrite($fh, "27                         # number of words    \n");

while($row = mysql_fetch_array($result))
{
echo "".$row["id"]." - ".$row["mots"]."<BR>";
fwrite($fh, "".$row["mots"]."\n");

$sqlquery2="delete from mots where id=\"".$row["id"]."\"";
$resul2t=mysql_query($sqlquery2) or die("Impossible d'ex&eacute;cuter la requ&ecirc;te");
}
fclose($fh);


$page=$page+27;
echo "<SCRIPT LANGUAGE='JavaScript'>document.location.href='".$_SERVER['PHP_SELF']."?page=$page'</SCRIPT>";
}

?>

Mammouth du PHP | 672 Messages

05 avr. 2011, 09:16

Bonjour.

1. Pourquoi veux-tu supprimer les mots de ta base de données ?
Ce ne serait pas plus simple de récupérer tous tes mots dans un Array, et ensuite d'en choisir avec (par exemple) array_rand() ?

2. Il y a un problème de compréhension. Fonctionnement de base :
- Tu (le client) demandes la page au serveur.
- Le serveur voit qu'il y a du php, il file la page à l'interpréteur PHP.
- Le serveur te renvoie la page HTML générée.
- Le client voit qu'il y a du Javascript, il l'interpréte.

Dans ton cas, la page que tu récupères fait une redirection sur la même adresse. Il n'y a pas de raison pour que ça s'arrête...
Je ne suis pas sûr d'être très clair, tu peux t'amuser à bloquer le JS, et voir le source de ta page ce sera plus parlant.

Eléphant du PHP | 331 Messages

08 avr. 2011, 01:55

C'est que je ne sais pas me servir du array ... as-tu un exemple svp

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

08 avr. 2011, 20:11

salut,

clique sur le lien du message de macgawel y a un exemple ;)

@+
Il en faut peu pour être heureux ......

Eléphant du PHP | 331 Messages

10 avr. 2011, 18:11

je crois comprendre que avant de utiliser array_rand()

je dois mettre mes données dans un array() ... j'ai 22 000 enregistrement a traité ... est-ce trop pour un array .. on dirais que mon script n'abouti pas!
$ServArray= array();
mysql_connect("localhost","root","") or die("Connexion impossible");
mysql_select_db("crosswords") or die('selection impossible');

	$chercheServ = mysql_query("select * from mots ORDER BY id");
	 while($servicetab= mysql_fetch_array($chercheServ)) {
		$ServNom = $servicetab["mots"];
		$ServId = $servicetab[0];
		array_unshift ($ServArray, $ServNom);
		array_push($ServArray,$ServNom);
	}
print_r($ServArray);
$i = 10-1;
echo "<br />test =>".$ServArray[$i][1];

ViPHP
xTG
ViPHP | 7331 Messages

10 avr. 2011, 19:08

C'est beaucoup mais c'est mieux que de faire 22000 opérations sur la bdd...

PS : array_unshift et array_push insère un élément, tu as donc tes éléments en double.