Pb php insolvable pour moi
Dernière réponse : dans Programmation
Bonjour,
Je voudrai savoir pourquoi ce bout de code me retourne tout le temps 0, même si je change la valeurs des champs 9 et 10.
Merci d'avance pour votre futur aide.
Je voudrai savoir pourquoi ce bout de code me retourne tout le temps 0, même si je change la valeurs des champs 9 et 10.
if(isset($champs[9]) AND $champs[9]="rien" AND isset($champs[10]) AND $champs[10]="rien")
{
$server_exap="0";
}
else
{
$server_exap="1";
}
Merci d'avance pour votre futur aide.
Autres pages sur : php insolvable
Lassé par la pub ? Créez un compte
Il faut peut-être que j'explique tout alors voila
. Je doit a l'aide d'un textarea pouvoir insérer dans une base des produits.
Pourquoi le textarea, c'est pour pouvoir insérer plusieurs produit à la fois grâce a la fonction explode. Donc ma page du formulaire (où se trouve le textarea) renvois a celle ou je t'es montrer le code précédent. Le code donne ceci:
Voila j'éspère avoir été un peu plus clair. Si c'est pas le cas demande moi ce que tu n'as pas compris.
. Je doit a l'aide d'un textarea pouvoir insérer dans une base des produits.Pourquoi le textarea, c'est pour pouvoir insérer plusieurs produit à la fois grâce a la fonction explode. Donc ma page du formulaire (où se trouve le textarea) renvois a celle ou je t'es montrer le code précédent. Le code donne ceci:
//COMMENTAIRE
if(isset($champs[7]) AND $champs[7]="")
{
$server_comm="none";
}else{
$server_comm=$champs[7];
}
//FILTRE
if(isset($champs[8]) AND $champs[8]="")
{
$server_filt="none";
}else{
$server_filt = $champs[8];
}
//RECO------UNRE
if($champs[9]=="rien1" AND $champs[10]=="rien2")
{
$server_exap="0";
}else{
$server_exap="1";
}
//On explose le textarea par ligne
$ligne = explode ("\n",$_POST['champs']);
$i = 0;
while ($ligne[$i])
{
//On explose la ligne en plusieurs variable séparer par ":"
$champs = explode (":",$ligne[$i]);
//VARIABLES
$server_name = $champs[0];
$server_arch = $champs[1];
$server_func = $champs[2];
$server_type = $champs[3];
$server_loca = $champs[4];
$server_regi = $champs[5];
$server_pays = $champs[6];
// Insertion des donnée tant que le $ligne est respecté
//Voir si le produit existe déjà
$sql1=mysql_query("SELECT server_id FROM servers_table WHERE server_name='$server_name';");
if(mysql_fetch_row($sql1)!=NULL)
{
echo "<p align=\"center\">Le serveur $server_name est déjà présent dans la base.Vous pouvez uniquement le modifier ou le supprimer.</p>";
//Juste pour vérifier l'affichage de $server_exap
echo $server_exap;
echo $champs[9];
echo $champs[10];
}else
{
//Insertion ds la base
$sq2 = mysql_query("insert into servers_table (server_name,server_architecture,server_function,server_type,
server_localisation,server_region,server_country,log_exaprotect,comment)
VALUES('$server_name','$server_arch','$server_func','$server_type','$server_loca',
'$server_regi','$server_pays','$server_exap','$server_comm');");
// si l'utilisateur a saisi des logs exaprotect, on fait la jointure server.id=log.id
if($server_exap=="1")
{
$requete="SELECT server_id from servers_table where server_name='$server_name';";
$result1=mysql_query("$requete");
$row1 = mysql_fetch_row($result1);
$requete="insert into log_event(server_id,reco_event,unreco_event,filtre)VALUES('$row1[0]','$server_reco','$server_unre','$server_filt');";
mysql_query("$requete");
}
echo "<p align=center>Le serveur $server_name a correctement été ajouté dans la base.<br>";
echo $server_exap;
}
$i++;
}
Voila j'éspère avoir été un peu plus clair. Si c'est pas le cas demande moi ce que tu n'as pas compris.
tout ca ne dit toujours pas comment tu renseignes les $champs, et je te signale que tu as toujours 1 seul = pour tester une égalité
fais un simple test:
execute, tu auras 0 dans $serveur_exap
refait le test avec
et tu auras 1!
de plus le code que tu as posté est différent de ce que tu as donné avant, c'est des différences mineures, mais vu le = et == ...
fais un simple test:
$champs[9]="rien"; if(isset($champs[9]) AND $champs[9]=="rien" ) { $server_exap="0"; } else { $server_exap="1"; } echo "<br/>"; echo "Valeur de server_exap: $server_exap"; echo "<br/>";
execute, tu auras 0 dans $serveur_exap
refait le test avec
$champs[9]="autre chose";
et tu auras 1!
de plus le code que tu as posté est différent de ce que tu as donné avant, c'est des différences mineures, mais vu le = et == ...
Justement j'avais bien testé ce que tu m'avais dit sur les égalitées mais sa ne marchais pas, j'ai donc du essayer autre chose. En se qui concerne le remplissage des variables $champs[n], elle se fait grâce au textarea de la manière suivante:
nom_serv:archi_serv:fonc_serv:type_serv:...
ce qui donne:
champs[0]:champs[1]:champs[2]:...
et champs faisant référence au nom du textarea.
Le pire c'est que même le simple code que tu m'as demandé de tester ne marche pas
.
Normalement c'est ce code que je veux utiliser, mais il devrait marcher pour n'importe quel chaine de caractère.J'avais essayer avec rien, mais je préférerai le faire avec "0".
nom_serv:archi_serv:fonc_serv:type_serv:...
ce qui donne:
champs[0]:champs[1]:champs[2]:...
et champs faisant référence au nom du textarea.
Le pire c'est que même le simple code que tu m'as demandé de tester ne marche pas
.Normalement c'est ce code que je veux utiliser, mais il devrait marcher pour n'importe quel chaine de caractère.J'avais essayer avec rien, mais je préférerai le faire avec "0".
if($champs[9]=="0" AND $champs[10]=="0")
{
$server_exap="0";
}else{
$server_exap="1";
}
sangokudu92 a dit :
Justement j'avais bien testé ce que tu m'avais dit sur les égalitées mais sa ne marchais pas, j'ai donc du essayer autre chose.tu saisis pas une chose, un langage de programmation, ca a des règles, c'est pas une question de si ca marche pas, on tente autre chose...
en php, pour affecter une variable, c'est =, pour tester l'égalité, c'est == et pour tester l'égalité exacte (type compris), c'est ===
jongler avec le = et les autres ne rime à rien.
sangokudu92 a dit :
En se qui concerne le remplissage des variables $champs[n], elle se fait grâce au textarea de la manière suivante:
nom_serv:archi_serv:fonc_serv:type_serv:...
ce qui donne:
champs[0]:champs[1]:champs[2]:...
et champs faisant référence au nom du textarea.
je suis sur que c'est la ou tu te trompes, mais sans code, on va pas pouvoir faire grand chose.
sangokudu92 a dit :
Le pire c'est que même le simple code que tu m'as demandé de tester ne marche pas
.la, je vais te dire, qu'il faut changer de machine
plus sérieusement, t'as mal fait la copie, ou alors (et j'opterais plus pour cette explication), tu prends des raccourcis que tu estimes sans influence sur le résultat, mais tu te trompes.
Merci coca25, je viens de saisir la différence entre les différent "=", et merci a tout les deux de m'aider.
voila le formulaire (rien de compliqué):
et voici un exemple d'insertion dans le textarea:
Donc les deux dernier "0" représente les champs9 et 10.
C'est plus clair comme sa?
voila le formulaire (rien de compliqué):
echo"<p>Ajouter plusieurs serveurs sous la forme suivante:<p>"; echo"name_serv:archi_serv:func_serv:type_serv:loca_serv:regi_serv:pays_serv:comm_serv:filt_serv:reco_serv:unre_serv<br>"; echo"Un retour à la ligne signifiera l'entrée d'un nouveau serveur"; echo"<center>"; echo"<table width=680 border=1 cellspacing=1 cellpadding=0>"; echo"<form method=\"post\" action=ajout_commit2.php>"; echo"<tr>"; echo"<td>"; echo"<font size=2 color=\"#ffffff\" face=\"times new roman\">"; echo"<center>"; echo"<TEXTAREA rows=10 name=champs style=\"width:750px\"></TEXTAREA>"; echo"</center>"; echo"</font>"; echo"</td>"; echo"</tr>"; echo"<tr>"; echo"<td colspan=2>"; echo"<font size=2 color=\"#ffffff\" face=\"times new roman\">"; echo"<center>"; echo"<input type=\"submit\" value=\"Ajouter\">"; echo"<input type=button value=\"Annuler\" onclick=\"history.back()\">"; echo"</center>"; echo"</font> "; echo"</td>"; echo"</tr>"; echo"</form>"; echo"</table>";
et voici un exemple d'insertion dans le textarea:
MouMou1:INTERNET:FIREWALL:WINDOWS:DMZ:EUROPE:FRANCE:COMMENTAIRE:FILTRE:0:0
Donc les deux dernier "0" représente les champs9 et 10.
C'est plus clair comme sa?
ok, on va pas s'en sortir...
php par défaut met les variables, post pour ton cas dans la variable globale $_POST sauf indication contraire dans la config.
et même si c'est configuré pour directement prendre en compte les variables de même nom que les champs, jusqu'à preuve du contraire, une chaine de caractère dans un textarea ne sortira jamais un tableau dans le php.
mais bon, continue à donner le code au compte goutte (t'es pas l'auteur du code, c'est bien ca?), on pourra tenir jusqu'à la fin de cette journée
aller prochainement, le code qui éventuellement transforme le champs en tableau...
EDIT, ah mais si, tu l'as déjà donné le code
//On explose le textarea par ligne
$ligne = explode ("\n",$_POST['champs']);
$i = 0;
while ($ligne[$i])
{
//On explose la ligne en plusieurs variable séparer par ":"
$champs = explode (":",$ligne[$i]);
sauf qu'il est placé après les test
php par défaut met les variables, post pour ton cas dans la variable globale $_POST sauf indication contraire dans la config.
et même si c'est configuré pour directement prendre en compte les variables de même nom que les champs, jusqu'à preuve du contraire, une chaine de caractère dans un textarea ne sortira jamais un tableau dans le php.
mais bon, continue à donner le code au compte goutte (t'es pas l'auteur du code, c'est bien ca?), on pourra tenir jusqu'à la fin de cette journée
aller prochainement, le code qui éventuellement transforme le champs en tableau...
EDIT, ah mais si, tu l'as déjà donné le code
sangokudu92 a dit :
//On explose le textarea par ligne
$ligne = explode ("\n",$_POST['champs']);
$i = 0;
while ($ligne[$i])
{
//On explose la ligne en plusieurs variable séparer par ":"
$champs = explode (":",$ligne[$i]);
sauf qu'il est placé après les test
C'est pas serieux tout sa. Bien sur que c'est moi qui ai tout fait. Depuis quand on demande des explicatons sur le code des autres.
Pour la chaine de caractères, si ta question est: peut-on séparer une chaine de caractère pour en obtenir des variables, la réponse est oui.
Je vois pas ou tu veux en venir
Ben c'est normal que les test doivent être fait en premier, et s'il sont valide bah on passe à la suite du code
Pour la chaine de caractères, si ta question est: peut-on séparer une chaine de caractère pour en obtenir des variables, la réponse est oui.
Je vois pas ou tu veux en venir
Ben c'est normal que les test doivent être fait en premier, et s'il sont valide bah on passe à la suite du code
J'ai fais comme sa, mais c'est trop bizarre:
En mettant dans le textarea
J'obtient: server_exap: 1 champs9: 0 champs10: 0
//RECO------UNRE
if($champs[9]=="0" AND $champs[10]=="0")
{
$server_exap="0";
}else{
$server_exap="1";
}
echo "<p><p>";
echo "server_exap: $server_exap <p>";
echo "champs9: $champs[9]<p>";
echo "champs10: $champs[10]<p>";
En mettant dans le textarea
MouMou1:INTERNET:FIREWALL:WINDOWS:DMZ:EUROPE:FRANCE:::0:0
J'obtient: server_exap: 1 champs9: 0 champs10: 0
Tu as pris en compte la remarque de coca25 à savoir inverser l'ordre des instructions suivantes :
&
Car tu ne donnes une valeur à tes variables $champs[9] et $champs[10] qu'après les avoir testés... Logique Emile !
//RECO------UNRE
if($champs[9]=="rien1" AND $champs[10]=="rien2" )
{
$server_exap="0";
}else{
$server_exap="1";
}
&
//On explose le textarea par ligne
$ligne = explode ("\n",$_POST['champs']);
$i = 0;
while ($ligne[$i])
{
//On explose la ligne en plusieurs variable séparer par ":"
$champs = explode (":",$ligne[$i]);
Car tu ne donnes une valeur à tes variables $champs[9] et $champs[10] qu'après les avoir testés... Logique Emile !
Lassé par la pub ? Créez un compte
- Contenus similaires :
Tags :
- ForumPb php mysql ecriture bdd
- ForumPb en php, parser xml avec dom
- ForumPb php mysql lecture bdd
- ForumPhp pb sauvegarde bdd
- ForumPb include php
- ForumPb update php mysql
- ForumPhp pb affichage avec echo
- ForumPhp pb liste deroulante avec php
- ForumPhp pb pour ecriture dans un fichier
- ForumPb affichage requete php
- Voir plus
. J'avais pas compris ce qu'il voulais dire mais l'erreur venais bien de la. Un grand merci a tout les deux de m'avoir aider a résoudre ce problème.