php fonction or

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : php fonction or

Re: php fonction or

par sadeq » 15 juil. 2011, 01:16

Tu as raison Sirakawa, mais à ce moment là il faut éviter d'exécuter la requête en cas d'absence des valeurs du POST. Comme ça:
if (isset($_POST['dossard']) && !empty($_POST['dossard']) && isset($_POST['nom']) && !empty($_POST['nom'])) {
       $sql = sprintf("SELECT * FROM table_name WHERE dossard = '%s' or nom = '%s';" , $_POST['dossard'], $_POST['nom']);
       // suite de l'exécution de la requête
       // ...
}
else {
      echo "Données manquantes !";
}

Re: php fonction or

par sirakawa » 13 juil. 2011, 20:50

Approche différente :
mettre directement $_POST['dossard'] et $_POST['nom'] dans la requête sql suppose qu'on est certain qu'il y a bien quelque chose dans un des deux $_POST en question; sinon on aura une erreur mysql.
Mon approche serait plutôt de forcer des valeurs au cas où le $_POST ne serait pas satisfaisant, par exemple parce qu'on est arivé ici par erreur, ou qu'on a mal rempli le formulaire:
$dossard = isset($_POST['dossard']) ? $_POST['dossard'] : -1; // si dossard est un entier
$dossard = isset($_POST['dossard']) ? $_POST['dossard'] : "absent ; // si dossard est une chaine
$nom = isset($_POST['nom']) ? $_POST['nom'] : "absent";
$sql = "SELECT * FROM table_name WHERE dossard = $dossard or nom = '$nom'; "; // si dossard est un nombre
$sql = "SELECT * FROM table_name WHERE dossard = '$dossard' or nom = '$nom'; "; // si dossard est une chaine

Re: php fonction or

par Ryle » 13 juil. 2011, 16:07

Au contraire, ça veut dire que j'estime qu'avant de demander de l'aide, il faudrait se relire, si possible dans un éditeur proposant de la coloration syntaxique.
Tu n'en restes pas moins sur le forum pour débutants.

C'est bien de lui faire remarquer qu'il ne s'agit pas un problème de php mais de syntaxe SQL, mais plutôt que de remettre en cause son niveau - sur un forum pour débutants -, tu ferais mieux de le guider vers la documentation ou mieux encore lui expliquer la syntaxe d'un "ou" en sql... (et je ne vois pas en quoi la coloration syntaxique pourrait l'aider à apprendre cette syntaxe)


@carmodelisme : Puisque ta question est résolue, je l'indique en ajoutant l'icône verte "Résolu" pour que les futures personnes qui voudront consulter ce sujet sachent qu'il contient une solution.

Tu peux réaliser cette opération toi-même en cliquant sur le bouton Image en haut à droite de la réponse qui te semble la plus pertinente, si tu as posté le 1er message en tant que membre (inscrit et identifié).

Alors... inscris-toi !!! ;)

Re: php fonction or

par popy » 13 juil. 2011, 13:21

Au contraire, ça veut dire que j'estime qu'avant de demander de l'aide, il faudrait se relire, si possible dans un éditeur proposant de la coloration syntaxique.

Re: php fonction or

par carmodelisme » 13 juil. 2011, 11:39

Merci sadeq

Je débute en php, mysql. J'apprend petit à petit... Tes explication vont m'aider un peu plus...

Quant à Popy, d'après ta réponse, il a aussi un problème entre la chaise et le clavier et sa réponse acerbe n'apporte rien.

Re: php fonction or

par sadeq » 13 juil. 2011, 11:08

Bonjour, tu as une erreur de syntaxe. Voici la correction:
$sql = "SELECT * FROM table_name WHERE dossard = '" . $_POST['dossard'] . "' or nom = '" . $_POST['nom'] . "'; "; 
ça s'appelle la concaténation en PHP avec l'opérateur POINT (.) pour coller des chaines de caractères et des variables.

Il y a une autre façon sous PHP pour inclure des variables dans une chaine de caractère sans utiliser l'opérateur de concaténation (.) c'est en utilisant la fonction sprintf() comme ça:
$sql = sprintf("SELECT * FROM table_name WHERE dossard = '%s' or nom = '%s';" , $_POST['dossard'], $_POST['nom']);
Ici, la chaine SQL est écrite complètement avec des emplacement réservés aux variables par le symbole %s (qui veut dire : variable string ou texte)
le deuxième paramètre de la fonction sprintf() est la liste des variables à insérer dans la chaine donnée en premier selon l'ordre des symboles %s (pour un texte) ou %d (pour un numérique) dans notre cas on a listé les variables $_POST['dossard'], $_POST['nom'] respectivement.

Et tout ça n'a rien à voir ni avec Mac ni avec SQL. C'est de la pure programmation sous PHP.

Re: php fonction or

par popy » 13 juil. 2011, 11:02

Problème d'interface chaise clavier. Ton OR, c'est pas en php que tu le veux, c'est en sql.

php fonction or

par carmodelisme » 13 juil. 2011, 10:41

bonjour

Je cherche à intégrer un OR dans une requête mais je n'y arrive pas. Je suis sous Mac. Voici la ligne qui me pose problème :

$sql = "SELECT * FROM table_name WHERE dossard = ' ".$_POST['dossard'] or nom = $_POST['nom']." '; ";

Merci de vos conseils