Vous n'êtes pas identifié(e).
Pages : 1
... pas de provok? je rame c'est sûr...
Non j'ai avancé, surtout en supprimant les cotés "bordeliques" (simple ou double cotes ?). Lorsqu'on y voit plus clair c'est déja plus facile de se retrouver.
J'ai une pose programmée et je m'y remets la semaine prochaine.
A+
Bonsoir (regarde l'heure!),
J'ai vraiment tout remis à plat, et donc considérablement simplifié mon programme, surtout en le découpant. J'évacue ainsi les difficultés 'bloquantes" d'aiguillage et de redirections qui foirent. Je n'irai pas jusqu' à dire que ma vitesse de croisière est satisfaisante ...
Ceci étant le wahaaa! suggéré par ta formule magique n'était pas simulé ! Elle reste encore mystérieuse et je te ferai volontiers signe pour avoir quelques explications...
Si tu pouvais me donner quelques infos pour traiter ta remarque ( :$cdeOption .= " <option value= $item[0]>- $item[0]</option>\n"; <------- les tableaux ne sont pas parser, il faut les mettres entre {} ) car cette ligne traîne toujours dans mon code ....
Merci de bien vouloir penser à moi et à +
Merci beaucoup et ce sera surement nécessaire !
A+
wahaaaa !!
merci, ça arrive juste à point, j'avais une page blanche qui commençait par function SFsituation(){if....
Je me lance dans la méditation transcendantale
A+
Bonjour et merci Pierrot (le couche tard !)
Je veux aller dans ton sens (page blanche) mais pour éviter de retomber...j'ai besoin de comprendre quelques points. N'oublie pas que je ne suis pas dans la cour des grands (euphémisme). Je reprends tes remarques
Logique : j'ai lu que pour traiter un formulaire il vaut mieux rester sur la même page. A partir de ça je construis un programme qui au final devrait ressembler à un squelette avec les fonctions déportées et classées dans des scripts 'include'. Au stade ou j'en suis j'ai "glissé " dans mon script les fonctions que je dois suivre. quant à mon 2eme swicht il ne doit pas rester dans une fonction de tracé
// 5 le "programme"
function principale() {
$nom = 'nom' ;$prenom = 'prenom' ;$actif = 'pass_md5' ;$table = 'membre';$invite="" ;$cas = "";
$cas = SFsituation() ;
if ($cas == "ouverture" ) {....}
// 6 la manivelle !
principale()
?>
Pour moi ça me paraissait logique et ...réutilisable (les "include", juste un changement de nom et un coup de ballet) et quand ça marche je ne peux que l'améliorer
Sur les cotes : j'émerge ! Ton post sur le paramétrage de la requête mysql y est pour quelque chose... Sinon en dehors des subtilités (qui par définition le resterons encore un certain temps) je m'aligne (mais pas le copier/coller ! ) sur : simple cote : rien à voir circuler; double cote : j'ai des variables à traiter.
Longueur des fonctions : je suis pour le beau code; j'ai "encore" besoin de beaucoup détailler. (au passage je teste PHPedit qui, bien que lui ayant paramétré le langage PHP, "m'oblige" à déclarer mes variables avant utilisation. Ça rallonge aussi ...)
Je m'excuse de te monopoliser sur mon éducation mais pour profiter de ton expérience...
Je reviens au technique sur trois points:
1 -j'ai corrigé le 'cote' en trop --> ça n'a pas changer le problème;
2- Je croyais que du point de vu fonctionnel POST et GET étaient identiques. J'ai permuté pour voir et ...je ne quitte plus le 1ere affichage !
3 - je ne sais pas appliquer ta remarque :$cdeOption .= " <option value= $item[0]>- $item[0]</option>\n"; <------- les tableaux ne sont pas parser, il faut les mettres entre {}
Tu vois le niveau mais je persévère...
Merci encore A+
Merci quand même !
Pas une piste ? Cette histoire de method, d'adresse avec ? un peu du GET où j'y connais rien et alors que je suis en POST ,
La logique du pg te semble désastreuse, Peux-tu en 2 mots me conseiller !
A+ et bonne nuit
Je n'hésite pas une seconde ! mais tu vas me maudire ... Il appelle d'autres script (à ta disposition...)
Rien de secret (encore) sur le site : nadiemma.fr (nous,4nadi)
merci et j'espère que tu trouveras ?
<?php
include('validation.inc_Nad.php') ;
include('session_mysql.inc_Nad.php') ;
GLOBAL $liaison ; // global pour pouvoir ouvrir et fermer la base ds ds fonctions differentes
function SFsituation()
{ if(!array_key_exists('bouton',$_POST ) ) { // premier passage, édition du premier formulaire
return "ouverture" ;}
else {
if ($_POST['bouton'] == "ENREGISTRER" or $_POST['bouton'] == "RECOMMENCER") // passage pour enregistrer un nouvel invité
{return 'traitement _ajout' ; }
switch($_POST['choix']) {
case 'ajout' :
return "ajout" ;
break ;
case 'retrait' :
return "retrait" ;
break ;
case 'actif' :
return "actif" ;
break ;
case 'inactif' :
return "inactif" ;
break ;
}
}
}
function SF1extr_nom_inv_mysql($table,$invite,$prenom,$cause) // "cause1" ouverture : :extraction des invités --"cause2" extration des invités de nom $nom
{GLOBAL $liaison ;
SSFouverture_mysql() ;
$invite = mysql_real_escape_string($invite,$liaison); // correction PHPdébutant pas besoin pour table, y a des notions de varcar de la base
$prenom = mysql_real_escape_string($prenom,$liaison);
if ($cause == "cause1" ) { // extration complete
$query = "SELECT concat(nom,' __ ',prenom,' * actif = ',actif,' * invité par : ',inviteur,' Email = ',email) FROM $table ORDER BY nom "; // marche
}
if ($cause == "cause2" ) { // extration filtrée
if ($prenom == "") {$prenom = "%" ;} // pour ne pas bloquer la recherche
$query = "SELECT concat(nom,' __ ',prenom,' * actif = ',actif,' * invité par : ',inviteur,' Email = ',email) FROM $table WHERE nom = '$invite' ORDER BY prenom" ;
}
$result =mysql_query($query) or die ("Erreur :Pas de récupération d'invité à l' ".$invite) ;
mysql_close($liaison) ;
return $result;
}
function SF1trace_formulaire($result) // cas ouverture : extrait les invités et trace le formulaire
{ print('<CENTER><P><TABLE BORDER=2 BGCOLOR="#CCFFFF" WIDTH="30%" HEIGHT=65><TR><TD WIDTH=154><P>') ;
print( 'LISTE des invités de la base' .'</h2><i>'.'(tenir compte de Actif )'.'</i>') ;
$cde= '</select>' ; // valeur de fermeture de $cdeOption -ligne du menu déroulant
$cdeOption = "" ;
print ("<form action = $_SERVER[PHP_SELF] method = 'POST'>") ; //renvoi la même page
echo"<select name'= 'choix_invite'>" ; // crée un menu déroulant pour présenter les invités qui sont dans $result
while ($item = mysql_fetch_array($result, MYSQL_NUM)) // extrait item par item les valeurs déja concaténées par SQL
{
$cdeOption .= " <option value= $item[0]>- $item[0]</option>\n";
}
if ($cdeOption == "") die("Erreur : extraction vide !");
$cdeOption .= $cde ;
echo $cdeOption ; //le menu est constitue depuis <select name= .... les lignes et fin /select>
// création des boutons d'options -entrer un invité nouveau,
//rendre actif ou inactif, supprimer un inviter de la liste
print('<TD><TR></TABLE><P>') ;
print("<br/><br/>") ;
print('<B>Faites votre choix de gestion</B>') ;
print('<P><TABLE BORDER=2 BGCOLOR="#CCFFFF" WIDTH="30%" HEIGHT=65><TR><TD WIDTH=154><P>') ;
print('<INPUT TYPE=radio NAME=choix VALUE="ajout" checked>Ajouter un invité <P>') ;
print('<INPUT TYPE=radio NAME=choix VALUE=retrait>Retirer un invité</TD><TD WIDTH=154><P>') ;
print('<INPUT TYPE=radio NAME=choix VALUE=actif>Invité Actif<P>') ;
print('<INPUT TYPE=radio NAME=choix VALUE=inactif>Inactif</TD></TR></TABLE><P>') ;
print( "<i> A l'ajout d'un invité, celui-ci est par défaut ACTIF </i><br><br> ") ;
print( "<i> La selection de RETIRER, ACTIF ou INACTIF implique de selectionner l'invité concerné !</i><br><br><br> ") ;
print('<INPUT TYPE=submit NAME="bouton" VALUE="ENVOYER"> ') ;
print('</CENTER></form>') ;
}
function SF2trace_formulaire($result,$message,$value_bouton) // formulaire pour enregistrement d'un nouvel invité
{
$nom = $_POST['nom'] ;$prenom = $_POST['prenom'] ;$email = $_POST['email'];
if( $_POST['choix2'] == "")
{$choix2= "Qui ?";}
else
{$choix2= $_POST['choix2']; }
print('<CENTER><P><TABLE BORDER=2 BGCOLOR="#CCFFFF" WIDTH="30%" HEIGHT=65><TR><TD WIDTH=154><P>') ;
print( 'LISTE des invités de la base' .'</h2><i>'.'(tenir compte de Actif )'.'</i>') ;
$cde= '</select>' ; // valeur de fermeture de $cdeOption -ligne du menu déroulant
$cdeOption = "" ;
// choix de la page de destination
if ($_POST['bouton']== 'ENREGISTRER') {
$page_web = 'ajout_invite.php' ;
}
if ($_POST['bouton']== 'CONFIRMER') {
$page_web = 'ajout_invite.php' ;
}
switch($_POST['bouton']) {
case 'ENREGISTRER' :
$page_web = 'ajout_invite.php' ;
break ;
case 'CONFIRMER' :
$page_web = 'ajout_invite.php' ;
break ;
case 'RECOMMENCER' :
$page_web = 'ajout_invite.php' ;
break ;
case 'RETOUR_Gestion' :
$page_web = 'index_page_invites.php' ;
break ;
case 'RETOUR_accueil' :
$page_web = "index_page_invites.php" ;
break;}
// $page_web = 'ajout_invite.php' ; //seul ça marche, pas avec case ?
print ("<form action= $page_web method = 'POST'>") ; //renvoi la même page = $_SERVER[PHP_SELF]
echo"<select name'= 'choix_invite'>" ; // crée un menu déroulant pour présenter les invités qui sont dans $result
while ($item = mysql_fetch_array($result, MYSQL_NUM)) // extrait item par item les valeurs déja concaténées par SQL
{
$cdeOption .= " <option value= $item[0]>- $item[0]</option>\n";
}
if ($cdeOption == "") die("Erreur : extraction vide !");
$cdeOption .= $cde ; //ajoute </select> pourquoi en variable ?
echo $cdeOption ; //le menu est constitue depuis <select name= .... les lignes et fin /select >
print('<TD><TR></TABLE><P>') ;
print('<br><br><br>') ;
print('<CENTER><TABLE BORDER=2 BGCOLOR="#CCFFFF" WIDTH="35%" HEIGHT=65><TR><TD COLSPAN=2 WIDTH=154>') ;
print("<h2>ENREGISTREMENT D'UN NOUVEL INVITE</h2><br>") ;
print("<p>.$message.</p>" ) ;
print("  <i>...un nouvel invité est ACTIF par défault !</i></TR>") ; //   cree des espaces pour présente centré
print("<TR><TD>* Nom</TD><TD><INPUT type=text name='nom' value= $nom >") ;
print("</TD></TR><TR><TD>* Prénom</TD><TD><INPUT type=text name='prenom' value= $prenom></TD></TR>") ;
print("<TR><TD>* Email</TD><TD><INPUT type=text size=45 name='email' value= $email></TD></TR>") ;
print('<TR><TD>* Inviteur</TD><TD>') ;
print('<SELECT name=choix2> ') ;
print("<OPTION VALUE=$choix2>$choix2</OPTION>") ;
print("<OPTION VALUE=TOUS>Tous</OPTION>") ;
print("<OPTION VALUE=NATHALIE>Nathalie</OPTION>") ;
print("<OPTION VALUE=DIDIER>Didier</OPTION>") ;
print("<OPTION VALUE=EMMANUEL>Emmanuel</OPTION>") ;
print("<OPTION VALUE=MARIE_HELENE>Marie Hélène</OPTION>") ;
print('</SELECT></TD></TR><TR>') ;
print('</TR><TR>') ; //print('</TR><TR><TD COLSPAN=2>') ;
print("<TD><INPUT type='submit' name='bouton' value=$value_bouton /></TD>") ;
print("<TD></TD>") ; //<INPUT type='submit' name='bouton' value='RETOUR_Gestion' />
print('</TR></FORM></TABLE></CENTER>') ;
}
function Fverif_ajout() // verif du nom, prenom et email (validité , unicité
{
$nom = $_POST['nom'] ;$prenom = $_POST['prenom'] ;$email = $_POST['email'] ;$text = "";
if ($nom == "" or $prenom == "")
{$text = "Compléter le formulaire" ;}
else {
$nom = pluspropre($nom) ;
$prenom = pluspropre($prenom) ;
if ($nom == "" or $prenom == ""){$text = " PB entrées !" ; }
else
{$text1 = ValideID($nom);
$text2 = $text.ValideID($prenom);
if( $text1<> "" or $text2 <> "") {$text = $text." Nom ou Prenom trop court" ; }
}
}
if ($text == "") {
$result = ValideEMail($email) ; //
if ($result) {
$result = session_unicite($nom,$prenom,$email) ; //
$text = $result ;
}
}
return $text ;
}
function session_unicite($Nom,$Prenom,$email) // recherche si le nom est deja ds la base, si oui extrait ("cause1")pour affichage
{ global $liaison ;
SSFouverture_mysql() ;
$query = "SELECT id FROM `nadiemmapivot`.`membre` WHERE (`nom` LIKE '$Nom' )" ; // prenom supprimé pour simplfier
$result = mysql_query($query) OR die("La requète pour récupèrer les données a échouée1") ;
if (!mysql_num_rows($result) ==0) // il y a le même nom donc pas unique
{return 'OK' ; } // il y a deja ce nom dans la base
mysql_close($liaison) ;
}
function principale() {
$nom = 'nom' ;$prenom = 'prenom' ;$actif = 'pass_md5' ;$table = 'membre';$invite="" ;$cas = "";
$cas = SFsituation() ;
if ($cas == "ouverture" ) {
$cause = "cause1" ;
$result ="";
$result = SF1extr_nom_inv_mysql($table,$invite,$prenom,$cause);
SF1trace_formulaire($result) ;
}
else if($cas == "ajout") {
$cause = "cause1" ;
$result = SF1extr_nom_inv_mysql($table,$invite,$prenom,$cause) ;
$value_bouton = "ENREGISTRER" ;
SF2trace_formulaire($result,$message,$value_bouton) ;
}
else if($cas == "retrait") {
echo "retrait" ;
}
else if($cas == "actif") {
echo "actif" ;
}
else if($cas == "inactif") {
echo "inactif" ;
}
else if($cas == "traitement _ajout") {
$text = Fverif_ajout() ;
If ($text == 'OK' ) { // cas du nom déja ds la base
$message = "<b> Ce nom figure dans la base, vérifier le prenom !</b>" ; // ça marche
$cause = "cause2" ; // ça marche
$invite= $_POST['nom']; // ça marche
$prenom = $_POST['prenom'];
$result = SF1extr_nom_inv_mysql($table,$invite,$prenom,$cause) ; //extraction des nons identiques
$value_bouton = "CONFIRMER" ;
SF2trace_formulaire($result,$message,$value_bouton) ;
}
else { // cas des autres messages d'horreur !
$cause = "cause1" ;
$message = $text;
$result = SF1extr_nom_inv_mysql($table,$invite,$prenom,$cause) ;
$value_bouton = "RECOMMENCER";
SF2trace_formulaire($result,$message,$value_bouton) ;
}
echo $text ;
}
}
principale()
?>
Merci pour la réponse très rapide !
mais rien de changé (au passage c'est la 2eme fois que je switch et ,sans le break, il marchait , vivons innocent !)
Je fais un copier/coller pour ne rien louper
Même message : The requested URL /zenphoto_donnees/z_donnees_page_invites/method was not found on this server.
Pourquoi ça parle method en $_POST ?
Pourquoi tout ce bruit dans l'URL appelée : http://na....enphoto_donnees/z_donnees_page_invites/method?=ABADIE&nom=&prenom=&email=&choix2=Qui&bouton=ENREGISTRER ?
et au bout ENREGISTRER que case devrait traiter pour aller à la page --> ajout_invite.php qui est la page de départ ?
Bilan 1ere erreur corrigée , il reste un trafic d'adresse !
Merci à Pierrot.
Bonsoir,
Je ne suis pas un grand manitou mais je regarde à droite et à gauche...et il se trouve que je teste actuellement PHPEdit. Le copier/coller de ton code et l'analyse de PHPEdit conduit à l'erreur en précisant le type d'erreur : -->syntaxe error unexpect'[', expecting')'
J'ai mis les parenthèses de la fonction à zéro et j'ai repris en respectant à 100% les propositions de syntaxes ; au bout même erreur !
Tout ça pour rien ?
J'ai testé cette solution qui ne donne pas, sur PHPEdit, d'erreur ;
$a = $_SESSION[MM_Username];
$b = $_SESSION[MM_IdUser] ;
$c = $_SESSION[MM_UserGroup] ;
function menuprive($a,$b,$c) {}
Allez savoir !
Je vais suivre ton problème car ça use les yeux de ne pas comprendre.
Bonsoir à tous,
Principe : je fais tourner une page, en passant par des contrôles, pour remplir un questionnaire. Mon idée est de pouvoir aller ailleurs en fonction des circonstances, donc de paramétrer le nom du lien.
En (ici) en bon débutant j'ai anticipé et testé :
[code =php]
$page = 'page1.php ' ;
print ("< form action= $page method = 'POST' > ") ; // ça marche du 1ere coup, rendez-vous à la page1 !
[/code]
Passage au concret avec un sélecteur type switch (c'est pareil avec des if)
[code =php]
switch( $_POST['bouton'] {
case 'ENREGISTRER' :
$page = 'page1.php' ;
case 'CONFIRMER' :
$page = 'page2.php ' ;
...... }
print ("< form action= $page method = 'POST' > ") ; // ça ne marche pas du tout !!!!! et l'adresse appelée est fantaisiste (pour moi !)
[/code]
C'est un autre pb :
404 not found... + --> The requested URL /zenphoto_donnees/z_donnees_page_invites/method was not found on this server.
et pour finir une adresse applée inexplicable (pour moi !)
http://na....ge_invites/method?=XXXX&nom=&prenom=&email=&choix2=Qui&bouton=ENREGISTRER.
J'ai testé ce que donne $_POST : il est clair : ENREGISTRER que l'on aperçoit au bout de l'adresse ! Le reste de l'adresse est composée des noms des champs du formulaire (j'ai pensé à un tableau dans le $_POST) mais XXXX c'est une donnée de ma BDD !!!
Là je touche le fond et votre analyse est le bien venue . Merci d'avance.
Pour Pierrot : si si j'ai bien compris et tes propos "ce n'est pas parce que l'on est débutant qu'il faut employer des méthodes obsolètes" sont très positifs, en plus accompagné du code que j'ai précieusement classé.
J'ai aussi suivi le lien de MK et les liens qui suivent pour taper PDO sur OVH : pas de réponse... PDO est donc pour moi, grand débutant, une solution certes mais pour un prochain projet; Celui-ci va déboucher, il me fera plaisir et qui plus est , il est attendu.
C'est donc un question de délai et nous en sommes tous là...
Merci quand même et A+
Il y a encore beaucoup de subtilités qui m'échappent (pourquoi pas de cote à $table alors qu'il en faut à $invite ?) mais un grand merci GrandGourou, ces simples cotes m'ont sauvées mon WE ! (
Merci aussi aux conseils pour passer à PDO.... j'y viendrai mais quand on démarre faut bien faire avec ce qu'on a !
Je ne vois rien à cocher pour signaler le problème résolu !
Bonjour à tous,
Merci GrandGourou d'être passé me voir, mais quand tout va mal... J'ai découvert l'usage et l'intérêt de mysql_real_escape_string mais ça ne marche toujours pas ! Je mets plus de code , dont la correction proposée en la généralisant à $table (les essais avec, sans et autres combinaisons ne m'ont rien donné.) pour éventuellement mieux montrer le problème.
Cette fois j'ai fait un copier/ coller par prudence.
C'est avec espoir que je vous resollicite, J'ai vu beaucoup de warning et de Erreur B2, c'est le cas de ce code, cette nuit !
Bonsoir à tous,
C'est mon premier post, je m'excuse d'avance.
Mon problème : je prépare une requête paramétrée, elle ne marche pas alors je mets tout à plat, j'écris tout en 4 lignes, la non paramètrée MARCHE l'autre, non, malgré toutes mes lectures et toutes les tentatives rationnelles (ou pas)
Mon problème en code, avant d'y passer la nuit ! (je suis sur OVH)
$table = ‘membres’ ;
$invite= ‘XXX’ ;
$query = 'SELECT concat(nom," __ ",prenom) FROM '.$table.' WHERE (nom = "XXX") ' ; // elle marche
$query = 'SELECT concat(nom," __ ",prenom) FROM '.$table.' WHERE nom = ".$invite." ' ; // ne marche pas dans le même contexte (substitution )
$result =mysql_query($query) or die ("Erreur B2) ;
/* - liste des mauvais (pas de blocage de syntaxe mais erreur « or die »
1- WHERE (nom = '.$invite.' ) ' ;
2- WHERE nom = '.$invite.' ' ;
- liste des bons (passe le or die) mais ne lit pas la base
WHERE nom = ".$invite." ' ; */
Il va sans dire mon niveau, mais faut bien commencer !
Merci d'avance.
Pages : 1