Vous n'êtes pas identifié(e).
Saluton,
Quels flags ? Pour quoi faire ? Dans quel contexte ? Etc, etc,
A condition que le typage des colonnes reste compatible entre elles.
La table de destination étant issue de
la condition devrait forcément être remplie.
Et je continue mon petit bonhomme de chemin, déjà la 205° chanson.
Sans compter que je poursuis, pour nos amis qui apprennent le français, la mise en ligne de la Méthode à Mimile, sorte d'Argot sans peine de Luc Étienne & Alphonse Boudard.
Saluton,
Il faut reconnaître que, pour le débutant, Ajax introduit une couche de complexification de représentation de l'architecture qui a de quoi le dérouter.
Je connais même des professionnels qui se retranchent derrière de "pseudo" problématiques de performances pour privilégier JAVA à PHP et des applets à Ajax, voire javascript, alors, qu'en fait, ils sont juste atteints du "baby duck syndrom"
Saluton,
Utiliser PDO, c'est excellent, encore faut-il se donner la peine d'essayer d'en comprendre le mécanisme.
Au vu de ton code, il est notoire que ce n'est pas le cas.
La méthode PDO::prepare attend, comme arguments, la chaîne de la requête SQL avec des zones nommées ou marquées et un éventuel tableau de paramètres de configuration du comportement de PDO.
Cette méthode retourne un objet de type PDOStatement dont la méthode PDOStatement::execute attend comme argument un tableau associatif contenant les zones nommés ou marquées définies avec PDO::prepare et/ou leurs valeurs associées.
Un simple coup d'œil aux exemples de la documentation t'aurait utilement mis sur la bonne piste.
Examples ¶
Example #1 Prepare an SQL statement with named parameters
<?php
/* Execute a prepared statement by passing an array of values */
$sql = 'SELECT name, colour, calories
FROM fruit
WHERE calories < :calories AND colour = :colour';
$sth = $dbh->prepare($sql, array(PDO::ATTR_CURSOR => PDO::CURSOR_FWDONLY));
$sth->execute(array(':calories' => 150, ':colour' => 'red'));
$red = $sth->fetchAll();
$sth->execute(array(':calories' => 175, ':colour' => 'yellow'));
$yellow = $sth->fetchAll();
?>Example #2 Prepare an SQL statement with question mark parameters
<?php
/* Execute a prepared statement by passing an array of values */
$sth = $dbh->prepare('SELECT name, colour, calories
FROM fruit
WHERE calories < ? AND colour = ?');
$sth->execute(array(150, 'red'));
$red = $sth->fetchAll();
$sth->execute(array(175, 'yellow'));
$yellow = $sth->fetchAll();
?>
Je te conseille de l'omettre (plus c'est court mieux c'est
).
Voilà
C'est exactement l'inverse de ce que me recommande Dame 4in;
Ok, je sors.
Donc, pour les bigleux genre moi, la déclaration du moteur de DB et de jeux de caractères doivent être en-dehors des parenthèses contenant les descriptions de colonnes de la table.
Saluton cher ing_tiziouzou2014,
Je dois dire que mon analyse rejoins en tous points celles de mes 2 compères Jc et Pierrot.
Cette solution ressemble, à s'y méprendre, à l'emplâtre sur la jambe de bois.
J'aurais tendance à remettre en cause, a priori, la conception même de la base de données (relationnel, indexations) voire l'architecture du serveur sur lequel est implémenté MySQL.
Déporter le problème de volumétrie d'une table vers une autre, voire en la saucissonnant c'est aller de Charybde en Scylla.
Sans aller chercher très loin, si les insert dans la table sont si fréquents, choisir le moment, voire la méthode de verrouillage de la table pour procéder à sa purge va déjà s'avérer assez compliqué.
Je pense qu'il est préférable de tout remettre à plat notamment la structure de la base de données.
Alors dans ce cas, SQL ne peut rien pour toi, c'est en PHP que, lors du parcours du résultat, il te faudra faire une gestion en rupture sur le changement de secteur.
Rien de plus normal car SQL applique le DISTINCT sur l'ensemble du n-uplet {secteur.secteur, documents.nom}.
Si tu ramènes ta requête à:
les doublons vont disparaître.
Saluton,
Y-a-t-il aussi erreur sur le nom du fichier en include_once ?
Tu clique sur le lien de mon post, ça devrait t'éclairer.
Disons, pour devancer la réponse de Jc, que ce que tu cherches à faire ne relève pas (du tout) du niveau débutant.
Alors plutôt que de te voir te décourager il t'oriente, sagement, vers du prêt à porter.
Saluton,
En fait, quand un checkbox est sélectionné il faut mettre son attribut HTML checked à "checked", tout simplement.
Ce que semble faire ton script alors du coup je ne comprends pas où est ton problème.
J'ai fait le ménage.
@mike.
en fait j'arrive pas à insérer les deux id en même temps
????
De toutes façon, par définition, une id doit être unique dans un document HTML.
J'observe que tu testes
Mais
array (size=14)
'sexe'array (size=14)
'sexe' => string 'f' (length=1)
'login' => string 'el.karima' (length=9)
'pass' => string '12ABC' (length=5)
'password' => string '12ABC' (length=5)
'email2' => string 'email@exemple.fr' (length=16)
'date' => string '1989-03-14' (length=10)
'question' => string 'votre ville?' (length=12)
'reponse' => string 'ville' (length=5)
'nom' => string '' (length=0)
'prenom' => string '' (length=0)
'adresse' => string '' (length=0)
'ville' => string '' (length=0)
'code' => string '' (length=0)
'Envoyer' => string 'Envoyer' (length=7)
Es-tu sûr que tu as bien là-dedans de quoi vérifier toutes les conditions de ton if ?
le début du var_dump ne me semble pas cohérent.
Oui il l'affiche même si les champs sont tous remplis.
Bon, alors il faudrait dans ce cas que tu vérifies ce que reçoit valide.php de HTTP, par exemple en faisant
Car comme tu utilises les deux attributs name et id (pas toujours d'ailleurs, par exemple pas pour le champ email) avec parfois des valeurs différentes il m'est difficile prévoir ce qui va être transmis par HTTP.
mysql_insert_id() je l'ai utilisé pour récupérer l'id du premier utilisateur inscrit puis l'insérer dans la table connexion qui sert à connecter les utilisateurs déjà inscrit.
// ci-dessous on insère les infos dans inscription
$sql = "INSERT INTO inscription(id, login, passwd, email, date, question, reponse, date_inscription)
VALUES('','$login','$pass','$email','$date', '$q', '$r', '')";
mysql_query($sql) or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
Ça n'apparaît pas dans le code présenté.
La première chose serait d'être sûr que le code PHP affiché ici correspond bien au script action du form, soit valide.php.
Est-ce que cette ligne s'affiche :
A quoi te sert-il de récupérer mysql_insert_id() puisqu'ensuite tu ne l'utilises pas ?
Saluton,
Pourquoi nous re-sortir ce vieux post de 2010 ?
Sur ce comparatif : http://socialcompare.com/fr/comparison/ … ent-system, je compte une soixantaine de CMS écrit en PHP.
Et, j'imagine, qu'il n'y a pas une once de standardisation entre eux.
J'en conclus que celui qui choisit ce genre de produit doit en assumer les conséquences.
Le temps qu'il croyait gagner avec du prêt-à-porter il va devoir l'investir pour "customiser" le bouzin.
Je hais les CMS, ces usines à gaz, ces canons pour écraser des mouches.
Alors ça, ça m'étonnerait !
éventuellement sinon ????
SAluton,
Ne jamais mettre les infos de connexion en clair sur le web. (j'ai corrigé, si ce n'est pas déjà trop tard).
Bon OK, mais l'exemple de la doc est vraiment mal choisi.
Et comme ça
Ouais Jc, je te comprends.
@PandadeMios. Bizarre, FIND_IN_SET, est censée retourner non pas l'occurrence trouvée dans le jeu (SET) mais sa position (offset) dans le jeu ou 0 si elle n'y est pas trouvée.
Donc pour '2' elle devrait retourner 1 pour '5' =>2, pour '8'=>3 et pour '9'=>4. Ce qui est bien ce que tu souhaites.
FIND_IN_SET(str,strlist)
Retourne une valeur de 1 à N si la chaîne str se trouve dans la liste strlist constituée de N chaînes. Une liste de chaîne est une chaîne composée de sous-chaînes séparées par une virgule ‘,’. Si le premier argument est une chaîne constante et le second, une colonne de type SET, la fonction FIND_IN_SET() est optimisée pour utiliser une recherche binaire très rapide. Retourne 0 si str n'est pas trouvé dans la liste strlist ou si la liste strlist est une chaîne vide. Retourne NULL si l'un des arguments est NULL. Cette fonction ne fonctionne pas correctement si le premier argument contient une virgule ‘,’ :
mysql> SELECT FIND_IN_SET('b','a,b,c,d');
-> 2
Maintenant, quant à la pertinence de la démarche, je reste aussi atterré que l'ami Jc.
Non-obstant la pertinentissime soufflante que vient de t'administrer l'ami Jc, essaye peut-être ceci, juste pour voir (et que je n'aie pas cogité pour des prunes) :
Saluton,
Tu peux reformuler le besoin de manière intelligible parce que là je n'ai strictement rien compris.
Un jeu d'essai avec les valeurs de départ et les valeurs attendues serait assez éclairant, me semble-t-il.
@mike.