[php] Problème site avec formulaire??

Fermé
sylvain - 26 nov. 2007 à 13:03
Lcf.vs Messages postés 144 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 10 avril 2010 - 27 nov. 2007 à 13:34
Bonjour à tous,

j'ai fait un script php avec des fonctions pour gérer des candidatures mais je n'arrive pas afficher mon formulaire.

Voici mon script:
<code>

<?php
require_once ("Connect.php");
require_once ("Connexion.php");
require_once ("ExecRequete.php");
require_once ("tablorecrutement.php");
require_once ("Formcandidat.php");
require_once ("MAJcandidat.php");

$connexion = Connexion (NOM, PASSE, SERVEUR, BASE);

if (!isSet($_GET['type']))
{
echo "<center><H1><b>Menu Recrutement</b></H1></center>";

echo "<p>";

echo "<center><table>";

$recrutement = ExecRequete ("Select * From Type", $connexion);
while ($recrut = ObjetSuivant ($recrutement))
{
$codetype = $recrut->codetype;
$nomtype = $recrut->nomtype;
echo "<tr><td><center><A HREF='indexrecrue.php?type=" . $codetype
. "'>$nomtype</A></center></td></tr>";
}


echo "</table></center>";

} else {
if ( !isSet($_POST['action']) and !isSet($_GET['mode']) )
{
Tablorecrutement ($connexion);
echo "<p>\n";
echo "<A HREF='indexrecrue.php?mode=" . MODE_INSERTION
. "'>Ajouter un candidat</A>\n";
?>

<p>
<input type="button" onclick="document.location.href='indexrecrue.php';" value="Retour au menu">

<?php
}
else
{
if (isSet($_GET['mode']))
{
if ($_GET['mode'] == MODE_SUP)
{
$slash_codecand = mysql_real_escape_string($_GET['codecand']);
$requete = "SELECT * FROM Candidat,Candidature WHERE Candidat.codecandture=Candidature.codecandture AND codecand='$slash_codecand'";
$resultat = ExecRequete ($requete, $connexion);
$candidat = LigneSuivante ($resultat);
Formcandidat (MODE_SUP, $candidat, $connexion);
}
else if ($_GET['mode'] == MODE_INSERTION)
{
Formcandidat (MODE_INSERTION, $NULL_PAT, $connexion);
}
else if ($_GET['mode'] == MODE_MAJ)
{
$slash_codecand = mysql_real_escape_string($_GET['codecand']);
$requete = "SELECT * FROM Candidat,Candidature WHERE Candidat.codecandture=Candidature.codecandture AND codecand='$slash_codecand'";
$resultat = ExecRequete ($requete, $connexion);
$candidat = LigneSuivante ($resultat);
Formcandidat (MODE_MAJ, $candidat, $connexion);
}
}
else if (isSet($_POST['action']))
{
MAJcandidat($_POST['mode'], $_POST, $connexion);
Tablorecrutement ($connexion);

echo "<p>\n";
echo "<A HREF='unite1a.php?mode=" . MODE_INSERT
. "'>Ajouter un Patient</A>\n";
?>

<p>
<input type="button" onclick="document.location.href='indexrecrue.php';" value="Retour au menu">

<?php
}
}
}


?>

<code>

Si vous voyez une erreur.

Merci d'avance
A voir également:

22 réponses

MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 14:31
Dans ce cas, soit plus précis là tu lui demande juste si mode existe, ajoute une condition:

if (isset($_GET['mode'] && $_GET['mode’] = 'tagada')

Sinon tu peut aussi l'initialiser:

$mode = (!isset($_GET['mode'])) ? 'tagada' : $_GET['mode'];
1
MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 15:19
Donc cela voudrais dire que mode n'est pas transmis par le formulaire.

De plus, le bouton input n'est pas encadré par les balises < form>< /form> !

Serait il possible d'avoir un aperçu de la page, j'aimerais voir le code html produit par ton php ?
1
MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 15:58
Euh, les MODE_XXX, ce sont des constantes ou de simple mot que tu veux récupérer ?

Car en php, un mot en MAJUSCULE sans rien avant ou après est interprété comme étant une CONSTANTE !

Comme tu fais un echo avec des guillemets doubles, il va falloir échapper les autres (conformité XHTML), personnellement, je préfère faire mes echo avec des simple quote, ça permet de ne pas avoir à échapper les guilllemets doubles de mon html et d'être conforme XHTML.

Si c'est une chaîne que tu veux récupérer, pas la peine de l'échapper dans ton lien:

<a href=\"indexrecrue.php?mode=MODE_INSERTION\">Ajouter un candidat</a>

Si c'est la constante:

<a href=\"indexrecrue.php?mode='.MODE_INSERTION.'\">Ajouter un candidat</a>

Si c'est la $variable:

<a href=|"indexrecrue.php?mode='.$MODE_INSERTION.'\">Ajouter un candidat</a>

Dans le cas de CONSTANTES, vérifie leur définitions.

Vérifie aussi le contexte d'interprétation de ton if, il doit différer selon que ce sera une $variable, une chaîne ou une CONSTANTE

De plus, si tu veux y comprendre quelque chose, essaye d'être plus clair dans ton code, utilise des minuscules pour tes balises html et leurs attributs, le mélange min/maj nuit à la relecture, pareil pour php, évite les majuscules sauf en cas de réel besoin (cf problème des constantes).

Ton html aussi est un poil fouillis, pas la peine de centré un H1 puisqu'il est centré par définition, un point virgule qui traine…

Et surtout, essaye d'indenter ton code, là on à un peu du mal à s'y retrouver.

1
MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 16:10
Dans ce cas, normal que mode soit vide et que le if achope !

Yapuka déclarer tout ça ;)
1

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 18:26
Bien, il va falloir chercher ou ça coince…

Fais un echo de ton $_GET pour voir s'il contient quelque chose.

Et essaye de bosser avec des variables, pas avec des constantes, c'est plus simple à gérer, surtout pour une simple chaîne.
1
Saluit Sylvain,

Difficile à voir avec les require_once, on n'a pas le contenu de ces fichiers inclus.

Une chose bizzare,pour tes <input type="submit" , la balise <form....... doit être dans ton fichier Formcandidat.php je suppose

et la baise fermante ? </form> je ne la voit pas.

ensuite, ta condition:

if ( !isSet($_POST['action']) and !isSet($_GET['mode']) )
est ce normal que tu fasses deux test négatifs ? attention dans ce cas il faut OU au lieu de AND

et echo "<tr><td><center><A HREF='indexrecrue.php?type=" . $codetype
. "'>$nomtype</A></center></td></tr>";


essayes en supprimant les espaces avant et après les points de concaténation
0
MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 14:11
Candidat.codecandture=Candidature.codecandture

Tu es sûr de toi pour candture ou tu voulais dire candidature ?

J'ai l'impression de connaître cette syntaxe, c'est tiré du bouquin de P Rigaux non ?
0
merci pour vos réponse,

c'est bien codecandture et oui j'utilise le livre de Rigaux.

En fait, j'ai un peu avancé dans mon problème, j'ai fait des tests et j'ai vu que mon script ne rentre jamais dans ce if (isSet($_GET['mode'])) .
0
ok mais ma condition est en dessus, en fait sa rentre jamais dans ce if et je ne vois pas pourquoi.

if (isSet($_GET['mode']))
{
if ($_GET['mode'] == MODE_SUP)
{
$slash_codecand = mysql_real_escape_string($_GET['codecand']);
$requete = "SELECT * FROM Candidat,Candidature WHERE Candidat.codecandture=Candidature.codecandture AND codecand='$slash_codecand'";
$resultat = ExecRequete ($requete, $connexion);
$candidat = LigneSuivante ($resultat);
Formcandidat (MODE_SUP, $candidat, $connexion);
}
else if ($_GET['mode'] == MODE_INSERTION)
{
Formcandidat (MODE_INSERTION, $NULL_PAT, $connexion);
}
else if ($_GET['mode'] == MODE_MAJ)
{
$slash_codecand = mysql_real_escape_string($_GET['codecand']);
$requete = "SELECT * FROM Candidat,Candidature WHERE Candidat.codecandture=Candidature.codecandture AND codecand='$slash_codecand'";
$resultat = ExecRequete ($requete, $connexion);
$candidat = LigneSuivante ($resultat);
Formcandidat (MODE_MAJ, $candidat, $connexion);
}
}
else if (isSet($_POST['action']))
{
MAJcandidat($_POST['mode'], $_POST, $connexion);
Tablorecrutement ($connexion);

echo "<p>\n";
echo "<A HREF='unite1a.php?mode=" . MODE_INSERT
. "'>Ajouter un Patient</A>\n";
?>

<p>
<input type="button" onclick="document.location.href='indexrecrue.php';" value="Retour au menu">

<?php
}
0
MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 14:40
Ben si ça ne rentre pas, c'est que mode n'existe pas…

Ou alors, c'est ta syntaxe de isSet qui ne va pas, essaye isset().
0
j'ai essayé avec isset mais toujours rien
0
Voici le code html de indexrecrue.php:

<html>
<head>
<title>Site de recrutement</title>
</head>
<body>



<center><H1><b>Menu Recrutement</b></H1></center><p><center><table><tr><td><center><A HREF='indexrecrue.php?type=1'>IDE</A></center></td></tr><tr><td><center><A HREF='indexrecrue.php?type=2'>AS</A></center></td></tr><tr><td><center><A HREF='indexrecrue.php?type=3'>Agent de service logistique</A></center></td></tr><tr><td><center><A HREF='indexrecrue.php?type=4'>Cuisine</A></center></td></tr><tr><td><center><A HREF='indexrecrue.php?type=5'>Médical</A></center></td></tr><tr><td><center><A HREF='indexrecrue.php?type=6'>Administratif</A></center></td></tr><tr><td><center><A HREF='indexrecrue.php?type=7'>Stage soin</A></center></td></tr><tr><td><center><A HREF='indexrecrue.php?type=8'>Stage administratif</A></center></td></tr></table></center>
</body>
</html>


En meme tps, je te met le code de la fonction tablorecrutement:

<?php

function Tablorecrutement ($connexion)
{
$codetype=$_GET['type'];

echo "<CENTER><TABLE BORDER=4 CELLSPACING=2 CELLPADDING=2>"
. "<tr><th>N° Candidature</th><th>N° Offre ANPE</th><th>Civilité</th><th>Nom</th><th>Prénom</th><th>Adresse</th>"
. "<th>Code postal</th><th>Ville</th><th>Date de réception de la candidature</th>"
. "<th>Lieu</th><th>Commentaire(s)</th><th>Responsable(s)</th>"
. "<th>Réponse</th><th>Date de la réponse</th><th>Lien</th><th COLSPAN=2>Action</th>";

$numcandture = ExecRequete ("Select Candidature.codecandture,offreanpe From Candidat,Candidature Where Candidat.codecandture=Candidature.codecandture And codetype = $codetype",$connexion);
while($candture = ObjetSuivant($numcandture))
{
echo "<tr><td><center>$candture->codecandture</center></td><td><center>$candture->offreanpe</center></td>";
}

$nomcandidat = ExecRequete ("Select * From Candidat Where codetype = $codetype",$connexion);
while($candidat = ObjetSuivant($nomcandidat))
{
$codecandurl = UrlEncode ($candidat->codecand);
echo "<td><center>$candidat->civcand</center></td><td><center>$candidat->nomcand</center></td><td><center>$candidat->prencand</center></td>"
. "<td><center>$candidat->adcand</center></td><td><center>$candidat->cpcand</center></td><td><center>$candidat->villecand</center></td>";

$datereccand = ExecRequete ("Select DATE_FORMAT(datecand, '%d/%m/%Y') as daterecp From Candidat Where codetype = $codetype",$connexion);
while($daterec = ObjetSuivant($datereccand))
{
echo "<td><center>$daterec->daterecp</center></td>";
}

$nomlieu = Execrequete ("Select * From Candidat,Lieu Where Candidat.codelieu=Lieu.codelieu And codetype = $codetype",$connexion);
while($lieu = ObjetSuivant($nomlieu))
{
echo "<td><center>$lieu->nomlieu</center></td>";
}

$nomcommentaire = ExecRequete ("Select * From Candidat,Beneficie,Commentaire Where Candidat.codecand=Beneficie.codecand And Beneficie.codecomm=Commentaire.codecomm And codetype = $codetype",$connexion);
while($comm = ObjetSuivant($nomcommentaire))
{
echo "<td>$comm->nomcomm";
while($comm1 = ObjetSuivant($nomcommentaire))
{
echo ",<br>$comm1->nomcomm";
}
}

$nomresp = ExecRequete ("Select * From Candidat,Estgere,Responsable,Fonction Where Candidat.codecand=Estgere.codecand And Estgere.coderesp=Responsable.coderesp And Responsable.codefonction=Fonction.codefonction And codetype = $codetype",$connexion);
while($resp = ObjetSuivant($nomresp))
{
echo "<td><b>$resp->prenresp $resp->nomresp</b> - $resp->nomfonction";
while($resp1 = ObjetSuivant($nomresp))
{
echo ",<br><b>$resp1->prenresp $resp1->nomresp</b> - $resp1->nomfonction";
}
}

$nomrep = Execrequete ("Select * From Candidat,Reponse Where Candidat.coderep=Reponse.coderep And codetype = $codetype",$connexion);
while($rep = ObjetSuivant($nomrep))
{
echo "<td><center>$rep->nomrep</center></td>";
}

$daterepcand = ExecRequete ("Select DATE_FORMAT(daterep, '%d/%m/%Y') as daterepse From Candidat Where codetype = $codetype",$connexion);
while($daterep = ObjetSuivant($daterepcand))
{
echo "<td><center>$daterep->daterepse</center></td>";
}

echo "<td>$candidat->liencv<br>$candidat->lienlettremotiv<br>$candidat->ficheentretien</td>";

echo "<TD><A HREF='indexrecrue.php?mode=" . MODE_MAJ
. "&codecand=$codecandurl'>Modifier ce patient</A></TD>\n";

echo "<TD><A HREF='indexrecrue.php?mode=" . MODE_SUP
. "&codecand=$codecandurl'>Supprimer ce patient</A></TD></TR>\n";

}
echo "</TABLE></CENTER>\n";

}
?>

Code php de Formcandidat qui n'est pas totalement fini:

function Formcandidat ($mode, $val_defaut, $connexion)
{
?>
<TABLE>
<FORM ACTION='indexrecrue.php' METHOD='POST' name="formcand" id="formcand"><P>

<INPUT TYPE=HIDDEN NAME="action" VALUE="Formcandidat">
<INPUT TYPE=HIDDEN NAME="mode" VALUE="<?= $mode ?>">

<?php if ($mode == MODE_INSERT) { ?>

<p>
<p>
<INPUT TYPE=SUBMIT VALUE='Exécuter'><INPUT TYPE=RESET VALUE='Effacer'>
<p>
<input type="button" onclick="document.location.href='indexrecrue.php';" value="Annuler">


<?php } if ($mode == MODE_SUP) { ?>

Suppression du candidat : <b><?= $val_defaut['civcand']?> <?= $val_defaut['nomcand']?></b>
<INPUT TYPE=HIDDEN NAME=codecandture VALUE='<?= $val_defaut['codecandture']?>'>
<INPUT TYPE=HIDDEN NAME=codecand VALUE='<?= $val_defaut['codecand']?>'>
<p>
<p>
<INPUT TYPE=SUBMIT VALUE='Exécuter'>
<p>
<input type="button" onclick="document.location.href='indexrecrue.php';" value="Annuler">

<?php } if ($mode == MODE_MAJ) { ?>



<?php } ?>

</FORM>

<?php
}
?>

En fait quand je clique sur ce lien: "<A HREF='indexrecrue.php?mode=" . MODE_INSERTION
. "'>Ajouter un candidat</A>

A l'écran sa devrait m'aficher un bouton exécuter et annuler
0
Donc les MODE_XXX sont des constantes, il me semble que je ne les est pas défini comme sa ne m'avais pas mi d'erreur
0
j'ai défini mes MODE_XXX dans ma fonction Connect accessible par ts les scripts mais sa ne marche tjs pas.
Tu pense que sa vient d'ou sinon.
0
MaamuT Messages postés 174 Date d'inscription mercredi 14 novembre 2007 Statut Membre Dernière intervention 20 décembre 2014 184
26 nov. 2007 à 17:39
Attention au contexte, si tu définis des constantes dans une fonction, je ne suis pas certain qu'elles soient ensuite dispo en dehors.

Il vaut mieux les déclarer en dehors de tout contexte, juste une simple déclaration.
0
J'ai essayé comme tu dis mais tjs rien...
0
Salut, donc j'ai fait un echo du $_GET['mode'] dans ce if ( !isSet($_POST['action']) and !isSet($_GET['mode']) ) et il ne prend aucune valeur mais c'''est normal. Par contre dans les autres if en-dessus, sa prend aucune valeur aussi
0
Salut,

il faut que tu mettes ton echo $_GET['mode']en dehors de ta condition if

car comment veux tu afficher qq chose si avant tu vérifies que ça n'existe pas
i(!isSet($_GET['mode'])){
echo $_GET['mode'];
}

ne merchera jamais

fais:
echo $_GET['mode'];
i(!isSet($_GET['mode'])){

}
0
J'ai résolu mon problème, en fait j'ai changé de place un If.

Merci à tous pour votre aide.
0
Lcf.vs Messages postés 144 Date d'inscription vendredi 13 octobre 2006 Statut Membre Dernière intervention 10 avril 2010 36
27 nov. 2007 à 11:47
bonjour,

personne ne se penche sur mes problèmes alors, en attendant, je parcours ceux des autres... ;)

je me pose une question avec ton script, tu fais appel à ton formulaire, ça, ok, mais où lui dis-tu de l'afficher???

tu en as fait une fonction, mais à elle, je ne vois rien qui y fasse appel... :s
0