Prévisualiser un formulaire

Eléphant du PHP | 445 Messages

15 janv. 2007, 18:53

Hum, tu peux reformuler la première question ?
Par ailleurs, dans ma page php, j'ai des conditions pour vérifier que telle ou telle ligne du formulaire ne reste pas vide. Là encore je constate que ma table se remplit. Est-ce qu'il faut mettre une condition aussi pour la connexion (apparemment oui) ?
Pour ce qui est de ta partie Admin, iclo t'as parlé de protéger ton dossier admin avec un .htaccess.

Le fichier php à faire est tout bête, y'a pas grand chose de plus que ce que tu sais apparemment faire, à savoir récupérer des valeurs dans une table, les afficher dans des input pour pouvoir les modifier, pouvoir valider les changements, mettant ainsi à jour la table pour l'enregistrement en question.
LLDC
Ulti

Eléphant du PHP | 440 Messages

15 janv. 2007, 19:28

donc et pour résumer, ça veut dire que les infos vont du formulaire à une page admin.php et de cette page vers la base.
Et donc le champ VALID de la base n'a plus lieu d'être.
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 445 Messages

15 janv. 2007, 20:16

Non.

Ca signifie que les infos vont de ton formulaire.php à ta base de donnée.

Et toi, un jour où t'as un peu de temps devant toi, tu te dis "Tiens, et si j'allais valider les formulaires qui ne le sont pas encore ?!" tu vas vers ta partie Admin, comportant une liste des validations à faire (WHERE valid=0)... Les données sont dans ta table à ce moment là.

Avec ton formulaire administration, tu peux modifier les donner, et valider (ou supprimer, etc. mais ça c'est toi qui vois ;)), ce qui aura pour effet de modifier les données déjà présentes dans la table, les rendant ainsi visibles par tout le monde (puisqu'au préalable, lors de l'affichage, ta requête doit comporter un WHERE valid=1)

Est-ce plus clair ?
LLDC
Ulti

ViPHP
ViPHP | 2144 Messages

15 janv. 2007, 20:19

donc et pour résumer, ça veut dire que les infos vont du formulaire à une page admin.php et de cette page vers la base.
Et donc le champ VALID de la base n'a plus lieu d'être.
Prends une feuille de papier et fais un schéma de ton application, pour avoir une vue d'ensemble de ce que tu souhaites obtenir, sinon tu vas vite te perdre.

Dans le cas présent, tu ne vas pas rediriger l'utilisateur vers une page d'administration, à laquelle seul toi devrait avoir accès

1) un utilisateur encode des données, elles sont insérées dans la base, avec le champ "valid" à 0. (un insert dans la base de donnée)

2) l'administrateur peut consulter sur une page "protégée" les enregistrements qui ne sont pas encore validés (dont le champ valide est à 0) et peut choisir de les valider un à un (faire passer le champ valide de 0 à 1 (Un update dans la base de donnée)

3) une page du site peut afficher les enregistrements validés (champ "Valide" à 1) (un select sur la base de donnée avec une clause where pour ne prendre que les enregistrements validés.

Eléphant du PHP | 440 Messages

16 janv. 2007, 19:58

ok je vais administrer cela depuis phpmyadmin.

cela signifie que le where valid=1, je dois le mettre quelque part. J'ai essayé
 $sql = "SELECT * FROM " . $table." ORDER BY societe"."WHERE valid=1" ; 
et
 $sql = "SELECT * FROM " . $table." WHERE valid=1"."ORDER BY societe" ; 
Aucune des 2 solutions ne va. Quel est le problème ?
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 445 Messages

16 janv. 2007, 20:29

Hum, et si le problème venait de ça : "." ??

Au niveau de la syntaxe, c'est cette requête qu'il faut faire :
$sql = "SELECT * FROM " . $table." WHERE valid=1"."ORDER BY societe" ;
Mais cela équivaut à

Code : Tout sélectionner

SELECT * FROM " . $table." WHERE valid=1ORDER BY societe
Ca ne veut pas dire grand chose...

Donc :
$sql = "SELECT * FROM " . $table." WHERE valid=1 ORDER BY societe" ;
LLDC
Ulti

Eléphant du PHP | 440 Messages

16 janv. 2007, 20:40

Super ça marche. Merci.
Mais je ne comprends pas pourquoi dans ce cas on ne met pas "."

question subsidiaire : j'ai besoin de compter le nombre de lignes qui contiennent valid=1 ; comment fait-on ça stp ?
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 445 Messages

16 janv. 2007, 20:44

Pour compter le nombre de lignes, regarde la fonction COUNT() en SQL.

Pour le ".", revois les bases de la concaténation ;)

http://phpdebutant.org/article55.php
LLDC
Ulti

ViPHP
ViPHP | 2144 Messages

16 janv. 2007, 20:44

Petite question: pourquoi le nom de la table provient d'une variable ? tu as plusieurs tables identiques ??

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

16 janv. 2007, 22:33

Mais je ne comprends pas pourquoi dans ce cas on ne met pas "."
Tu le fait exprès ?!!!
question subsidiaire : j'ai besoin de compter le nombre de lignes qui contiennent valid=1 ; comment fait-on ça stp ?
Encore une fois essaie de trouver des solution par toi même au lieu de poster pour chaque ligne de code que tu fera.
Tu veras c'est d'autant plus jouissif 8-)

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 440 Messages

17 janv. 2007, 18:01

question subsidiaire : j'ai besoin de compter le nombre de lignes qui contiennent valid=1 ; comment fait-on ça stp ?
Encore une fois essaie de trouver des solution par toi même au lieu de poster pour chaque ligne de code que tu fera.
Tu veras c'est d'autant plus jouissif 8-)[/quote]
     <?php 
    $table = "organismes";  
    $nb = mysql_num_rows(mysql_query("SELECT REF FROM $table WHERE valid=1"));
	echo '<b><font face="Arial, Helvetica, sans-serif" size="2" color="#666666">'.$nb.'</font></b>'; 
?>
Voilà la bonne réponse !!
Débutant complet en php/mysql. Merci pour votre aide.

Eléphant du PHP | 445 Messages

17 janv. 2007, 18:34

C'est en effet une des possibilités.

Tu peux également utiliser COUNT :
<?php 
    $table = "organismes";  
    $nb = mysql_query("SELECT COUNT(*) AS nb FROM ".$table." WHERE valid=1");
    echo '<b><font face="Arial, Helvetica, sans-serif" size="2" color="#666666">'.$nb['nb'].'</font></b>'; 
?>
P.S : On doit pouvoir le faire sans alias (AS nb) mais je ne suis plus sûr de la syntaxe, donc j'ai préféré mettre cela ^^
LLDC
Ulti

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

17 janv. 2007, 20:32

P.S : On doit pouvoir le faire sans alias (AS nb) mais je ne suis plus sûr de la syntaxe, donc j'ai préféré mettre cela ^^
La syntaxe serait :
$nb['COUNT(*)']
attention il manque un mysql_fetch_* dans ton exemple :wink:

@cmoi
Pourquoi placer la table dans une variable ?!! :roll: :roll:
Petite question: pourquoi le nom de la table provient d'une variable ? tu as plusieurs tables identiques ??

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

Eléphant du PHP | 440 Messages

17 janv. 2007, 22:38

Petite question: pourquoi le nom de la table provient d'une variable ? tu as plusieurs tables identiques ??
Oh c'est tout bête. N'y connaissant rien, au début j'ai réutilisé par copier/coller ce que j'ai trouvé. Et comme ça marche, je n'ai pas cherché plus loin.
Mais, maintenant que j'en sais beaucoup plus (!! :wink: ), effectivement, l'utilisation d'une variable ne s'impose pas.
Débutant complet en php/mysql. Merci pour votre aide.