Porbleme davec preg_matdh et mysql_query()

walfrat
Invité n'ayant pas de compte PHPfrance

03 févr. 2007, 13:39

Bonjour

Mes Probleme sont les suivant :

en utilisant :
if(!(preg_match("{^[A-Za-z0-9]+$}",$_POST["nom"])))
{
  echo "erreur de charactere"
}
Ca marche uniquement si j'utilise une balise INPUT name="nom"
si j'utilise une balite TEXTAREA name="nom"
Ca marche pas je suis donc un peu perdu


2nd probleme

Il s'agit de trier un tableau selon le champ

ex :

Code : Tout sélectionner

<a href="affichage.php?tri=Defense">Defense</a>
lorsque je clique dessus ma requete :
$reponde mysql_query("SELECT * FROM equipement ORDER By $tri DESC");
Bien entendu juste avant $tri = $_GET["tri"];

Le probleme reside dans le fait que tout les tri fonctionne par exemple pour Defense ca marche
Mais pour Force (sachant que le nom dans la BDD du champ est bien orthograhié Froce) j'ai une erreur de syntaxe

Donc je suis aussi coincé ici

Merci d'avance pour vos réponses ;)[/code][/php]

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 14:26

Force je suppose pas Froce :!:
sinon montre nous stp l'erreur affichée..
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

walfrat
Invité n'ayant pas de compte PHPfrance

03 févr. 2007, 16:41

oui c'est bien ca

L'erreur est <code>erreur de syntaxe pres de 'Force DESC' a la ligne 1</code>

Je rapelle que si $tri=Defense ca marche///

Eléphanteau du PHP | 28 Messages

03 févr. 2007, 16:45

mieux que ca j'ai reussi a mettre en ligne et donc vous pourrez voir que ca ne marche pas pour Force et Precision

http://walfrat.wa.funpic.org/Green_temp ... ichage.php

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 17:48

je suis sur un reseau "filtré" ton lien me met :
Le site http://walfrat.wa.funpic.org/green_temp ... ichage.php auquel vous avez essayé d'accéder est classé dans la catégorie Pornographie.
La catégorie Pornographie à laquelle vous avez essayé d'accéder est interdite.
:lol: :lol: :lol:
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 17:52

il faut voir sinon du coté du contenu de ces champs !
donc à mon avis montre :
- le bout de code COMPLET que tu utilise
- la structure de ta table + les données qu'elle contient (pas toutes mais 2 lignes par exemple)
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 28 Messages

03 févr. 2007, 18:37

n'importe quoi c'est pas uin site porno manquerait plus que ca (tien au passage comment je fais pour pas que ca me fasse ca ??)


if ((isset($_POST["nom"]))AND($_POST["nom"]!=NULL))
{
  
    $nom = addslashes(nl2br(htmlentities($_POST["nom"])));

  
}
else
{
  $error=1;
  echo "<TR class=\"mess_erreur\"><TD class=\"mess_erreur\">Vous avez oublié d'entrer le nom de l' équipement prière de reprendre la saisie <a href='saisie_info_équipement.php'>ici</a></TD></TR>";
}
PS : j'ai retiré le preg_match pour que ca tourne sur le site

pour la BDD:

Code : Tout sélectionner

- Structure de la table `equipement` -- CREATE TABLE `equipement` ( `ID` int(10) unsigned NOT NULL auto_increment, `Nom` varchar(50) NOT NULL default '', `Image` varchar(100) NOT NULL default '', `Type` varchar(20) NOT NULL default '', `Metier` varchar(30) NOT NULL default '', `Competence1` varchar(50) NOT NULL default '', `Competence2` varchar(50) NOT NULL default '', `Competence3` varchar(50) NOT NULL default '', `Niveau` int(4) NOT NULL default '0', `Commentaire` mediumtext NOT NULL, `Degats` int(4) NOT NULL default '0', `Defense` int(4) NOT NULL default '0', `Pn` int(4) NOT NULL default '0', `Vie` int(4) NOT NULL default '0', `Force` int(4) NOT NULL default '0', `Dexterite` int(4) NOT NULL default '0', `Intelligence` int(4) NOT NULL default '0', `Constitution` int(4) NOT NULL default '0', `Precision` int(4) NOT NULL default '0', `Portee` int(2) NOT NULL default '0', `Prix` int(9) NOT NULL default '0', PRIMARY KEY (`ID`), UNIQUE KEY `Nom` (`Nom`), UNIQUE KEY `Image` (`Image`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 PACK_KEYS=0 AUTO_INCREMENT=2 ; -- -- Contenu de la table `equipement` -- INSERT INTO `equipement` VALUES (1, 'Amulette noire<br />ensanglantée', 'http://www.temps-radies.com/images/avatar/objets/lyoro_amulette.jpg', 'Amulette', 'Practicien', 'Ornement Magique', 'aucun', 'aucun', 52, 'Cette amulette reflète<br />\r\nla nuit comme elle<br />\r\nreflète la mort...', 0, 0, 250, 100, 0, 0, 40, 0, 0, 0, 0);
et enfin pour savoir comment est entré ce fameux "nom"^^

Code : Tout sélectionner

<tr class="saisie"><td class="saisie">Nom : </td> <td class="saisie"><textarea name="nom" rows="2" ></textarea></td></tr>
PS : en regardant de plus pres je vois des " /r" c'est peut etre ca le probleme pour preg_match

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 18:55

c'est leur programme qui référence funpic.org comme un site porno :D
sinon pour le bout de code, je pensai plutôt à celui où il y a les requêtes SQL
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 28 Messages

03 févr. 2007, 18:59

Code : Tout sélectionner

if(isset($_POST["lvl_min"])){$lvl_min=$_POST["lvl_min"];$tri_lvl=1;}else{$lvl_min=1;} if(isset($_POST["lvl_max"])){$lvl_max=$_POST["lvl_max"];$tri_lvl=1;}else{$lvl_max=200;} if(isset($_GET["tri"])){$tri=$_GET["tri"]; $tri_stats=1;} mysql_connect("localhost","***","***")or die("erreur de connesion a la base"); mysql_select_db("***")or die("erreur de connexion a la table de données"); if(((isset($lvl_min))AND($lvl_min!=1))or((isset($lvl_max))AND($lvl_max!=200))) { $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY Niveau DESC"); } elseif((isset($tri_stats)AND($tri_stats==1))) { $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY $tri DESC")or die("une erreur existe avecle tri pr force et precisionet celle ci est inconnu désolé de ce probleme"); } else { $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY Niveau DESC"); } mysql_close();

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 19:07

essaie ce code et monte nous exactement ce que cela affiche :

if(isset($_POST["lvl_min"])){$lvl_min=$_POST["lvl_min"];$tri_lvl=1;}else{$lvl_min=1;}
  if(isset($_POST["lvl_max"])){$lvl_max=$_POST["lvl_max"];$tri_lvl=1;}else{$lvl_max=200;} 
  if(isset($_GET["tri"])){$tri=$_GET["tri"]; $tri_stats=1;}
 
  mysql_connect("localhost","***","***")or die("erreur de connesion a la base");
  mysql_select_db("***")or die("erreur de connexion a la table de données");
   
  if(((isset($lvl_min))AND($lvl_min!=1))or((isset($lvl_max))AND($lvl_max!=200)))
  {
    $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY Niveau DESC") or die(mysql_error());
echo "cas 1 <br>" ;
  }
  elseif((isset($tri_stats)AND($tri_stats==1)))
  {
    $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY $tri DESC") or die(mysql_error());
   echo "cas 2 <br>" ;
  }
  else
  {
    $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY Niveau DESC") or die(mysql_error());
echo "cas 3 <br>" ;
  }
mysql_close();

"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Invité
Invité n'ayant pas de compte PHPfrance

03 févr. 2007, 19:12

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Force DESC' at line 1

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 19:14

oups
essaie ceci stp
if(isset($_POST["lvl_min"])){$lvl_min=$_POST["lvl_min"];$tri_lvl=1;}else{$lvl_min=1;}
  if(isset($_POST["lvl_max"])){$lvl_max=$_POST["lvl_max"];$tri_lvl=1;}else{$lvl_max=200;} 
  if(isset($_GET["tri"])){$tri=$_GET["tri"]; $tri_stats=1;}
 
  mysql_connect("localhost","***","***")or die("erreur de connesion a la base");
  mysql_select_db("***")or die("erreur de connexion a la table de données");
   
  if(((isset($lvl_min))AND($lvl_min!=1))or((isset($lvl_max))AND($lvl_max!=200)))
  {
echo "cas 1 <br>" ;
    $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY Niveau DESC") or die(mysql_error());

  }
  elseif((isset($tri_stats)AND($tri_stats==1)))
  {
   echo "cas 2 <br>" ;
    $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY $tri DESC") or die(mysql_error());

  }
  else
  {
echo "cas 3 <br>" ;
    $reponse = mysql_query("SELECT * FROM `equipement` ORDER BY Niveau DESC") or die(mysql_error());

  }
mysql_close(); 
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 28 Messages

03 févr. 2007, 19:18

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Force DESC' at line 1

HD
Mammouth du PHP | 1181 Messages

03 févr. 2007, 19:24

c'est pas normal car il devrait afficher, avant l'erreur, si on est dans cas 1,2 ou 3 :?
"Si Dieu descendait sur la Terre, tous les peuples se mettraient a genoux, excepte les Français qui diraient : " Ah ! Vous êtes la ! C'est pas trop tôt ! On va pouvoir discuter un peu !" [Michel Balfour]

Eléphanteau du PHP | 28 Messages

03 févr. 2007, 19:28

nom tu te trompe ca affiche cas 2 dans la page d'affichage s'il n'y a pas erreur

faut faire un if(!(mysql_query(....))){echo : "cas X";} ;)