La ligne 29 c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $tab[$res[0]] = $res[1];
La ligne 29 c'est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part $tab[$res[0]] = $res[1];
essay de déclarer le tableau avant la boucle
Code : Sélectionner tout - Visualiser dans une fenêtre à part $tab = array()
Comment sa ?
j'en suis la:
Pour mettre sous forme de tableau je devrait faire comme sa ?:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 if(isset($_POST['valider'])){ $chaine_form = $_POST['formulaire']; $array_chaine = explode("\r\n", $chaine_form); $array_chaine = explode("\r\n", $chaine_form); foreach($array_chaine as $value) { $res = explode(":",$value); $tab[$res[0]] = $res[1]; } echo $tab['Tour de Combat']; } ?>
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 <?php if(isset($_POST['valider'])){ $chaine_form = $_POST['formulaire']; $array_chaine = explode("\r\n", $chaine_form); $array_chaine = explode("\r\n", $chaine_form); echo "<table>"; foreach($array_chaine as $value) { $res = explode(":",$value); $tab[$res[0]] = $res[1]; echo "<tr><td>".$res[0]."</td><td>".$res[1]."</td></tr>"; } echo "</table>"; } echo $tab['Tour de Combat']; } ?>
test tu vera ce que ca donne![]()
ça y est j'ai planté mes céanothes...
Pourquoi faire 2 fois $array_chaine = explode("\r\n", $chaine_form); ?
Cette erreur est liée au fait que $chaine_form se termine par un "\r\n" et que donc l'explode crée une dernière cellule vide. Lorsque tu traites cette cellule dans ton foreach, l'explode (": ",$value) ne renvoie rien dans $res[1] d'où l'erreur.Notice: Undefined offset: 1 in C:\Program Files\wamp\www\test\testons.php on line 29.
C'est la raison pour laquelle je nettoyais $chaine_form avec un trim() avant d'attaquer les explode.
Fred
ah oui, pour les deux $array_chaine explode. ... ..
J'avais pas vu, une erreur de ma part ^^
Voila avec ce joli petit code:
Sa roule ma poule:p
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 <?php if(isset($_POST['valider'])){ $chaine_form = $_POST['formulaire']; $array_chaine = explode("\r\n", trim($chaine_form)); echo "<table>"; foreach($array_chaine as $value) { $res = explode(":",$value); $tab[$res[0]] = $res[1]; echo "<tr><td>".$res[0]."</td><td>".$res[1]."</td></tr>"; } echo "</table>"; echo $tab['Tour de Combat']; } ?>
bon, merci beaucoup je doit m'absenter, je risque de revenir mais je vous laisse avec un problème :p
Faut vous faire bosser non ?
Voila je souhaiterai faire la même chose pour ceci :
EXPLORER H ( 10 )
Attaque : 3.000
Bouclier : 1.220
Coque : 3.250
Vitesse : 170
Hyperespace
TERATOS F ( 25 )
Attaque : 300.000
Bouclier : 150.100
Coque : 100.080
Vitesse : 170
Furtivité : 1
Hyperespace
kratos F ( 7 )
Attaque : 150.000
Bouclier : 61.000
Coque : 100.050
Vitesse : 170
Furtivité : 1
Hyperespace
Kiros ( 5 )
Attaque : 1.250.000
Bouclier : 630.000
Coque : 720.000
Vitesse : 200
Furtivité : 1
HORIZON ( 2 )
Attaque : 5.000.000
Bouclier : 1.260.000
Coque : 1.440.000
Vitesse : 170
Furtivité : 1
Hyperespace
En sachant qu'il faut qu'il peut y avoir plus de vaisseaux que sa
Merci d'avance![]()
Bon voila je me suis pas foulé:
J'ai remis le même code sauf que sa fonctionne pas comme il faut :p (je m'en doutait, de plus il me met une tonne de undefined offset 1 ... ... ...
Donc voila pour ceci je souheterai aussi séparer les chiffre entre paranthèse du nom du vaisseau
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 $chaine_form2 = $_POST['formulaire2']; $array_chaine2 = explode("\r\n", trim($chaine_form2)); echo "<br/><table>"; foreach($array_chaine2 as $value2) { $res2 = explode(":",$value2); $tab2[$res2[0]] = $res2[1]; echo "<tr><td>".$res2[0]."</td><td>".$res2[1]."</td></tr>"; } echo "</table>"; echo '<pre>'; print_r($tab2); echo '</pre>';![]()
Une proposition :
Fred
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head><title>Simulateur de Combats Spatiaux</title> <link rel="stylesheet" media="screen" type="text/css" title="design3" href="Css2.css" /> </head> <body> <table> <tr> <td> <form name="formulaire" method="post" action=""> <p>Défenseur <br/> Collez ici votre Rapport d'Espionnage</p> <textarea name="formulaire" id="CadreFormulaire" rows="10" cols="40"> </textarea><br/><br/> <input type="submit" name="valider" value="Envoyer le Rapport"/> </form> </td> </tr> </table> </body> <?php if(isset($_POST['valider'])){ $chaine_form = $_POST['formulaire']; $array_chaine = explode("\r\n", trim($chaine_form)); echo "<br/><table>"; $tab = array(); foreach($array_chaine as $value) { if (preg_match('#(.*)\((.*)\)#',$value,$res)) { $tab[$res[1]]['score'] = $res[2]; $vaisseau = $res[1]; echo "<tr><td>".$res[1]."</td><td>".$res[2]."</td></tr>"; } else { $res = explode(": ",$value); if (isset($res[1])) { $tab[$vaisseau][$res[0]] = $res[1]; echo "<tr><td>".$res[0]."</td><td>".$res[1]."</td></tr>"; } else if ($res[0]!='') { $tab[$vaisseau][$res[0]] = ''; echo "<tr><td>".$res[0]."</td><td></td></tr>"; } } } echo "</table>"; echo '<pre>'; print_r($tab); echo '</pre>'; }
sa Fontionne mais ceci n'est que pour les vaisseaux ? J'ai essayé avec les Défenses puis les vaisseaux, sa fonctionne mais sa me met undefined variable vaisseau .. ...
Ah, cela fonctionne si j'invers, que je colle les vaisseaux en premier et que je colle ensuite les défenses![]()
En fait, c'est normal.
Je ne connais pas le type de jeu
qui fournit les rapports que tu veux parser
aussi je code au "feeling fonctionnel".
Mais si j'ai bien compris,
en inversant,
ça ne marche pas vraiment.
En effet,
les Défenses sont alors rattachées à un vaisseau (HORIZON en l'occurrence)
ce qui n'a pas de sens.
Il faudrait utiliser un indice dans le rapport
qui permet de savoir
si on est dans la partie défenses ou la partie vaisseaux.
Fred
Oui je comprend, mais ce n'est pas bien grave car de toute facon dans le rapport les vaisseaux sont avant les défenses donc c'est dans l'ordre logique.
Par contre je souhaiterai qu'apparaissent toutes les caractéristiques des vaisseaux et des défenses comme ceci:
Pour l'attaque des défenses et ben elles ont une attaque fixe qui varie selon leur nombre.
Mettons j'ai 10 tour de combats, l'attaque serait 10*100.
Voici le type de tableau que je souheterai qu'il apparaisse:
Aprés pour la coque et l'attaque des défenses, je saurait faire mais je sais pas vraiment commment faire pour dire afficher 100*le nombre de tour de combat si il y a des tours de combats dans le rapport ...
Vous n'étes pas encore obligé de prendre en compte les "Forces de l'Attaquant"
Aidez moi juste pour le "Forces du Défenseur".
Merci d'avance.
J'aimerai juste qu'on m'aide a modifier le code pour que les caractéristiques n'apparaissent pas les unes aprés les autres. Idem pour les nombres.
Une piste ?
Fred
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head><title>Simulateur de Combats Spatiaux</title> <link rel="stylesheet" media="screen" type="text/css" title="design3" href="Css2.css" /> </head> <body> <table> <tr> <td> <form name="formulaire" method="post" action=""> <p>Défenseur <br/> Collez ici votre Rapport d'Espionnage</p> <textarea name="formulaire" id="CadreFormulaire" rows="10" cols="40"> </textarea><br/><br/> <input type="submit" name="valider" value="Envoyer le Rapport"/> </form> </td> </tr> </table> </body> <?php if(isset($_POST['valider'])){ $chaine_form = $_POST['formulaire']; $array_chaine = explode("\r\n", trim($chaine_form)); $forces = array(); $vaisseau = array(); foreach($array_chaine as $value) { if (preg_match('#(.*)\((.*)\)#',$value,$res)) { if (!empty($vaisseau)) { $forces[] = $vaisseau; $vaisseau = array(); } $vaisseau['Nom'] = $res[0]; $vaisseau['Nombre'] = $res[1]; } else { $res = explode(": ",$value); switch ($res[0]) { case 'Attaque' : case 'Bouclier' : case 'Coque' : $vaisseau[$res[0]] = $res[1]; default : break; } } } echo "<table>"; echo "<tr><td>Nom</td><td>Attaque</td><td>Bouclier</td><td>Coque</td><td>Nombre</td></tr>"; foreach ($forces as $vaisseau) { echo "<tr><td>".$vaisseau['Nom']."</td><td>".$vaisseau['Attaque']."</td><td>".$vaisseau['Bouclier']."</td><td>".$vaisseau['Coque']."</td><td>".$vaisseau['Nombre']."</td></tr>"; // En profiter pour faire les totaux ici } // Afficher les totaux ici echo "</table>"; echo '<pre>'; print_r($tab); echo '</pre>'; }
merci micetf, mais la le code m'affiche undefined index Attaque et il m'affiche rien dans le tableau.etc ...
Testé et corrigé :
avec le rapport suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head><title>Simulateur de Combats Spatiaux</title> <link rel="stylesheet" media="screen" type="text/css" title="design3" href="Css2.css" /> </head> <body> <table> <tr> <td> <form name="formulaire" method="post" action=""> <p>Défenseur <br/> Collez ici votre Rapport d'Espionnage</p> <textarea name="formulaire" id="CadreFormulaire" rows="10" cols="40"> </textarea><br/><br/> <input type="submit" name="valider" value="Envoyer le Rapport"/> </form> </td> </tr> </table> </body> <?php if(isset($_POST['valider'])){ $chaine_form = $_POST['formulaire']; $array_chaine = explode("\r\n", trim($chaine_form)); $forces = array(); $vaisseau = array('Nom'=>'','Nombre'=>'','Attaque'=>'','Bouclier'=>'','Coque'=>''); foreach($array_chaine as $value) { if (preg_match('#(.*)\((.*)\)#',$value,$res)) { if (!empty($vaisseau['Nom'])) { $forces[] = $vaisseau; $vaisseau = array('Nom'=>'','Nombre'=>'','Attaque'=>'','Bouclier'=>'','Coque'=>''); } $vaisseau['Nom'] = $res[1]; $vaisseau['Nombre'] = trim(str_replace('.','',$res[2])); } else { $res = explode(": ",$value); switch (trim($res[0])) { case 'Attaque' : case 'Bouclier' : case 'Coque' : $vaisseau[trim($res[0])] = trim(str_replace('.','',$res[1])); default : break; } } } $totaux = array('Attaque'=>0,'Bouclier'=>0,'Coque'=>0,'Nombre'=>0); echo "<table>"; echo "<tr><td>Nom</td><td>Attaque</td><td>Bouclier</td><td>Coque</td><td>Nombre</td></tr>"; foreach ($forces as $vaisseau) { echo "<tr><td>".$vaisseau['Nom']."</td><td>".$vaisseau['Attaque']."</td><td>".$vaisseau['Bouclier']."</td><td>".$vaisseau['Coque']."</td><td>".$vaisseau['Nombre']."</td></tr>"; $totaux['Attaque']+=$vaisseau['Attaque']*$vaisseau['Nombre']; $totaux['Bouclier']+=$vaisseau['Bouclier']*$vaisseau['Nombre']; $totaux['Coque']+=$vaisseau['Coque']*$vaisseau['Nombre']; $totaux['Nombre']+=$vaisseau['Nombre']; } echo "<tr><td>Total</td><td>".$totaux['Attaque']."</td><td>".$totaux['Bouclier']."</td><td>".$totaux['Coque']."</td><td>".$totaux['Nombre']."</td></tr>"; echo "</table>"; echo '<pre>'; print_r($forces); echo '</pre>'; }
affiche :EXPLORER H ( 10 )
Attaque : 3.000
Bouclier : 1.220
Coque : 3.250
Vitesse : 170
Hyperespace
TERATOS F ( 25 )
Attaque : 300.000
Bouclier : 150.100
Coque : 100.080
Vitesse : 170
Furtivité : 1
Hyperespace
kratos F ( 7 )
Attaque : 150.000
Bouclier : 61.000
Coque : 100.050
Vitesse : 170
Furtivité : 1
Hyperespace
Kiros ( 5 )
Attaque : 1.250.000
Bouclier : 630.000
Coque : 720.000
Vitesse : 200
Furtivité : 1
HORIZON ( 2 )
Attaque : 5.000.000
Bouclier : 1.260.000
Coque : 1.440.000
Vitesse : 170
Furtivité : 1
Hyperespace
FredNom Attaque Bouclier Coque Nombre
EXPLORER H 3000 1220 3250 10
TERATOS F 300000 150100 100080 25
kratos F 150000 61000 100050 7
Kiros 1250000 630000 720000 5
Total 14830000 7341700 6834850 47
Array
(
[0] => Array
(
[Nom] => EXPLORER H
[Nombre] => 10
[Attaque] => 3000
[Bouclier] => 1220
[Coque] => 3250
)
[1] => Array
(
[Nom] => TERATOS F
[Nombre] => 25
[Attaque] => 300000
[Bouclier] => 150100
[Coque] => 100080
)
[2] => Array
(
[Nom] => kratos F
[Nombre] => 7
[Attaque] => 150000
[Bouclier] => 61000
[Coque] => 100050
)
[3] => Array
(
[Nom] => Kiros
[Nombre] => 5
[Attaque] => 1250000
[Bouclier] => 630000
[Coque] => 720000
)
)
Salut, merci micetf, mais serait-il possible qu'en rentrant :
EXPLORER H ( 10 )
Attaque : 3.000
Bouclier : 1.220
Coque : 3.250
Vitesse : 170
Hyperespace
TERATOS F ( 25 )
Attaque : 300.000
Bouclier : 150.100
Coque : 100.080
Vitesse : 170
Furtivité : 1
Hyperespace
kratos F ( 7 )
Attaque : 150.000
Bouclier : 61.000
Coque : 100.050
Vitesse : 170
Furtivité : 1
Hyperespace
Kiros ( 5 )
Attaque : 1.250.000
Bouclier : 630.000
Coque : 720.000
Vitesse : 200
Furtivité : 1
HORIZON ( 2 )
Attaque : 5.000.000
Bouclier : 1.260.000
Coque : 1.440.000
Vitesse : 170
Furtivité : 1
Hyperespace
Tour de Combat: 10
Canon Laser: 1.000
Grand Canon Laser: 10
Rayon Tracteur: 30
Lanceur de Missiles: 5
Satellite à Ions: 30
Batterie Electromagnétique: 30
Canon à Plasma: 30
Silos à Missiles HEM: 856
J'obtienne un tableau avec les vaisseaux, comme celui que tu a fait mais aussi avec les défenses ensuite ?
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager