Partage
  • Partager sur Facebook
  • Partager sur Twitter

{{Doublon}} Applications Requete, Formulaire

[Urgent]

19 janvier 2011 à 0:19:53

Bonjour,


Je suis actuellement entrain de faire 3applications cependant je rencontre un problème majeur pour 2 d'entre elles.

La 1ere est une requête SQL.
Je souhaite créer un tableau interactif (par une fonction ajout,supprimer et modifier) recueillant le numéro ID , le Nom et le prénom.
Je suis parvenu a créer la fonction "ajout" , "supprimer" et les checkbox qui vont avec cependant je n'arrive pas à créer la fonction modifier et ordonnée le tout dans un tableau. Comment faire ?

a.php

<?PHP
try
{
  $bdd = new PDO('mysql:host=localhost;dbname=***', 'root', '');
  $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}
catch(Exception $e)
{
    die('Erreur : '.$e->getMessage());
}

/* ====controle et securisation des POST= */
$id = (isset($_POST['id'])) ? trim($_POST['id']) : '';
$nom = (isset($_POST['nom'])) ? trim(trim($_POST['nom'])) : '';
$prenom = (isset($_POST['prenom'])) ? trim(trim(trim($_POST['prenom']))) : '';
?>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head>
<title>Gestion de BDD</title>
<meta http-equiv="content-Type" content="text/html;charset=iso-8859-1">
<meta http-equiv="content-language" content="fr, en">
</head><body>
<p align=center>
<br /><b>gestionnaire de BDD</b><br /><br />

<?PHP

// SUPPRIMER
if (isset($_POST["LaTbl"]))
 {
 $delete = $bdd->prepare('DELETE FROM visiteurs WHERE id = :userid');
  for ($a=0; $a<count($_POST['LaTbl']); $a++)
   {
    $xx=intval($_POST['LaTbl'][$a]);
    $delete->execute(array(':userid' => $xx))or die("Erreur ");
    echo ("".$xx." supprime<br />");
   }}
   
   // MODIFIER
if (isset($_POST["Mod"]))
  {
  $update = $bdd->prepare('UPDATE FROM visiteurs WHERE id = :userid');
   for ($a=0; $a<count($_POST['Mod']); $a++)
   {
    $xx=trim($_POST['Mod'][$a]);
    $delete->execute(array(':userid' => $xx))or die("Erreur ");
    echo ("".$xx." modifie<br />"); }}
	

?>
<form method='POST' action='a.php'>
<?PHP
$req = $bdd->prepare('SELECT * FROM visiteurs');
$req->execute();
while ($donnees = $req->fetch())
{
 echo "<input type='checkbox' name='LaTbl[]' value='".$donnees['id']."'>".$donnees['id']." - ".$donnees['nom']." - ".$donnees['prenom']."<br>";
}
?>




<br><br><br>
<input type="button" value="Ajouter" OnClick="window.location.href='insertion1.php'">
<input type="button" value="Modifier" OnClick="window.location.href='modif1.php'">
<input type="submit" value="Suprimer">
</form></p></body></html>


insertion1

<html>
  <head>
    <title>insertion de données en PHP :: partie 1</title>
  </head>
<body>
<form name="insertion" action="insertion2.php" method="POST">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>nom</td>
      <td><input type="text" name="nom"></td>
    </tr>
    <tr align="center">
      <td>prenom</td>
      <td><input type="text" name="prenom"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="valider"></td>
    </tr>
  </table>
</form>
</body>
</html>


insertion2

<?php

  //connection au serveur
  $cnx = mysql_connect( "localhost", "root", "" ) ;
 
  //sélection de la base de données:
  $db  = mysql_select_db( "***" ) ;
 
  //récupération des valeurs des champs:
  //nom:
  $nom     = $_POST["nom"] ;
  //prenom:
  $prenom = $_POST["prenom"] ;

  //création de la requête SQL:
  $sql = "INSERT  INTO visiteurs (nom, prenom)
            VALUES ( '$nom', '$prenom') " ;
 
  //exécution de la requête SQL:
  $requete = mysql_query($sql, $cnx) or die( mysql_error() ) ;
 
  //affichage des résultats, pour savoir si l'insertion a marchée:
  if($requete)
  {
    echo("L'insertion a été correctement effectuée") ;
  }
  else
  {
    echo("L'insertion à échouée") ;
  }
?>


modif1

<html>
  <head>
    <title>Modification de données en PHP</title>
  </head>
<body>
<form name="modifier" action="insertion2.php" method="POST">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>nom</td>
      <td><input type="text" name="nom"></td>
    </tr>
    <tr align="center">
      <td>prenom</td>
      <td><input type="text" name="prenom"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="valider"></td>
    </tr>
  </table>
</form>
</body>
</html>


La 2ème est un formulaire
Tous fonctionne a merveille hormis le fait que je n'arrive pas a envoyer le mail une fois valider je ne passe pas à l'étape "etat=ok" que l'adresse soit valide ou pas.

<?php
if (isset($_POST["envoyer"])){ // Si le formulaire a été soumis
    $etat = "erreur"; // On initialise notre etat à erreur, il sera changé à "ok" si la vérification du formulaire est un succès, sinon il reste à erreur

    // On récupère les champs du formulaire, et on arrange leur mise en forme
    if (isset($_POST["son_pseudo"])) $_POST["son_pseudo"]=trim(stripslashes($_POST["son_pseudo"])); // trim()  enlève les espaces en début et fin de chaine

    if (isset($_POST["son_email"])) $_POST["son_email"]=trim(stripslashes($_POST["son_email"])); // stripslashes()  retire les backslashes ==> \' devient '

    if (isset($_POST["son_objet"])) $_POST["son_objet"]=trim(stripslashes($_POST["son_objet"]));

    if (isset($_POST["son_message"])) $_POST["son_message"]=trim(stripslashes($_POST["son_message"]));

    // Après la mise en forme, on vérifie la validité des champs
    if (empty($_POST["son_pseudo"])) { // L'utilisateur n'a pas rempli le champ pseudo
        $erreur="Vous n'avez pas entr&eacute; votre pseudo..."; // On met dans erreur le message qui sera affiché
        }
        elseif (empty($_POST["son_email"])) { // L'utilisateur n'a pas rempli le champ email
            $erreur="Nous avons besoin de votre e-mail pour vous r&eacute;pondre...";
        }
     
        elseif (empty($_POST["son_objet"])) { // L'utilisateur n'a pas rempli le champ objet
            $erreur="Vous devez entrer l'objet de votre message...";
        }
        elseif (empty($_POST["son_message"])) { // L'utilsateur n'a écrit aucun message
            $erreur="Merci de saisir un message...";
        }
        else { // Si tous les champs sont valides, on change l'état à ok
            $etat="ok";
        }
}
else { // Sinon le formulaire n'a pas été soumis
    $etat="attente"; // On passe donc dans l'état attente
}

if ($etat!="ok"){ // Le formulaire a été soumis mais il y a des erreurs (etat=erreur) OU le formulaire n'a pas été soumis (etat=attente)
    if ($etat=="erreur"){ // Cas où le formulaire a été soumis mais il y a des erreurs
        echo "<span style=\"color:red\">".$erreur."</span><br /><br />\n"; // On affiche le message correspondant à l'erreur
    }
?>

<!-- Formulaire HTML qu'on affiche dans l'état attente ou erreur -->
<form method="post" action="<?php echo $_SERVER["PHP_SELF"]; ?>"> <!-- Les données du formulaire seront récupérée avec la méthode POST, et action correspond à la page contenant le formulaire -->
    <p style="text-align:left">
        <label for="son_pseudo">Pseudo *</label><br /> <!-- Intitulé du champ pseudo -->
        <input type="text" size="40" name="son_pseudo" id="son_pseudo" value="<?php
        if (!empty($_POST["son_pseudo"])) {
        // le pseudo de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_pseudo"],ENT_QUOTES); // htmlspecialchars() convertit les caractères spéciaux en leurs code html, exemple : & devient &amp;
        }
        ?>" />

        <br />

        <label for="son_email">E-mail *</label><br /> <!-- Intitulé du champ e-mail -->
        <input type="text" size="40" name="son_email" id="son_email" value="<?php
        if (!empty($_POST["son_email"])) {
        // l'e-mail de l'expéditeur a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_email"],ENT_QUOTES);
        }
        ?>" />

        <br />

        <label for="son_objet">Objet *</label><br /> <!-- Intitulé du champ objet -->
        <input type="text" size="40" name="son_objet" id="son_objet" value="<?php
        if (!empty($_POST["son_objet"])) {
        // l'objet du message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_objet"],ENT_QUOTES);
        }
        ?>" />

        <br />

        <label for="son_message">Message *</label><br /> <!-- Intitulé du champ message -->
        <textarea name="son_message" id="son_message" cols="60" rows="25"><?php
        if (isset($_POST["son_message"])) {
        // le message a été saisi --> le réafficher
        echo htmlspecialchars($_POST["son_message"],ENT_QUOTES);
        }
        ?>


</textarea>

        <br />

        <input type="submit" name="envoyer" value="Envoyer" /><input type="reset" name="reset" value="Effacer" />
    </p>
</form>
<!-- FIN du formulaire HTML -->

<?php
}
else { // Sinon l'état est ok donc on envoie le mail
    $son_pseudo = $_POST["son_pseudo"]; // On stocke les variables récupérées du formulaire
    $son_email = $_POST["son_email"];
    $son_objet = $_POST["son_objet"];
    $son_message = $_POST["son_message"];

    $mon_email = "***"; // Mise en forme du message que vous recevrez
    $mon_pseudo = "Group";
    $msg_pour_moi = "- Son pseudo : $son_pseudo \n
    - Son E-mail : $son_email \n
    - Objet du message : $son_objet \n
    - Message : \n $son_message \n\n";

    // Mise en forme de l'accusé réception qu'il recevra
    $accuse_pour_lui = "Bonjour $son_pseudo,\n
    Votre message nous a bien été envoyé et nous tâcherons de vous répondre le plus rapidement possible.\n\n
    - Votre E-mail : $son_email \n
    - L'objet de votre message : $son_objet \n
    - Votre message : \n $son_message \n\n";

    // Envoie du mail
    $entete = "From: " . $mon_pseudo . " <" . $mon_email . ">\n"; // On prépare l'entête du message
    $entete .= "MIME-Version: 1.0";

    if (@mail($mon_email,$son_objet,$msg_pour_moi,$entete) && @mail($son_email,$son_objet,$accuse_pour_lui,$entete)){ // Si le mail a été envoyé
        echo "<p style=\"text-align:center\">Votre message a &eacute;t&eacute; envoy&eacute;, vous recevrez une confirmation par mail.<br /><br />\n"; // On affiche un message de confirmation
		
    }
    else { // Sinon il y a eu une erreur lors de l'envoi
        echo "<p style=\"text-align:center\">Un problème s'est produit lors de l'envoi du message. Veuillez verifier que vous avez saisi une adresse mail valide \n";
        echo "<a href=\"".$_SERVER["PHP_SELF"]."\">Réessayez...</a></p>\n"; // On propose un lien de retour vers le formulaire
    }
}
?>


La 3ème une galerie image mise dans un dossier doivent se mettre automatiquement sur le site avec la même jusque la aucun problème seulement mes images doivent être compressé par rapport aux originales et malheureusement ce n'est pas mon cas.

<?php

$rp="image"; // nom du répertoire à lister
$rep=opendir($rp);
while ($sous_fichier=readdir($rep)) 	{ // parcours du répertoire
if (($sous_fichier==".") || ($sous_fichier=="..") || ($sous_fichier=="Thumbs.db")){echo "";}
	else 
	{
// affichage image
echo "<a href=".$rp."/".$sous_fichier."><img src=".$rp."/".$sous_fichier." width=\"320\" height=\"240\"></a>";
	}
					}
closedir($rep);
?>



Si vous connaissez un moyen plus facile de faire les applications que je recherche je suis intéressé.
En espérant que vous aurez la possibilité de m'aider, je vous en remercie d'avance.

Edit de Fayden : Suppression des infos personnelles
  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2011 à 10:09:18

C'est du php ça, pas de la BDD... Ici c'est les questions de conception et requêtes SQL. Pas de Php.
  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2011 à 10:17:41

bonjour,
Etre capable de pisser 300 lignes de code pour faire un DELETE et un INSERT et ne pas être capable de faire un UPDATE. Je suis épaté!
A regarder le code de a.php (quel nom significatif!) et sa ligne 15 :
$prenom = (isset($_POST['prenom'])) ? trim(trim(trim($_POST['prenom']))) : '';
il va te falloir trimer encore un peu!
Un UPDATE se passe en plusieurs temps:
on récupère l'enregistrement à modifier, on saisit les nouvelles valeurs, on valide les nouvelles valeurs ...
As-tu les interfaces et les scripts adéquates?
Et comme l'écrit Debian tu te méprends de forum!
Mais bon c'est la péché mignon de ce forum! Dans ce forum rares sont ceux qui dès le début de leur topic précisent SGBDR, OS.
D'où des réponses automatiques MySQL et où l'on découvre après quelques échanges qu'ils sont sur Oracle ou MSS avec .NET. ETC.



  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2011 à 11:28:58

Navré je pensais que la requete php était du SQL :x
Enfin j'ai plus de réponse ici que dans le forum php...

Le delete et insert sont plus basique je trouve.
Je ne comprends pas ce que tu veux dire par "As tu les interfaces et les scripts adéquates" ?
De plus pour l'organisation je me suis fait un peu aidé par quelqu'un sur le forum et des scripts vu que internet.

et vu mes nombreux test c'est pourquoi il y a ce super nom a.php ^^'
( car ca va faire a peine plus d'un mois que je suis dessus a galerer pour trouver la solution.)

J'espère que vous pourrez m'aider a comprendre car je bloque vraiment et j'en est besoin demain.
  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2011 à 11:51:14

Citation : SerialFF

Enfin j'ai plus de réponse ici que dans le forum php...



Tu veux dire que tu as fait un double post ? Un ici et un sur le forum php ? :o

Si tu as des problèmes avec tes requêtes, dans ce cas, tu viens ici et tu nous montre tes requêtes et JUSTE tes requêtes. pas 200 lignes de php.
  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2011 à 18:05:02

Oui étant donnée qu'il y a un mois et demi j'ai posté chaque problème a part je n'ai pas eu de résolution alors je cherche a avoir le plus de personne qui voit mon problème, de plus je pensais que ma requête était du SQL et le reste du php donc j'ai trouvé sa logique.


Vu que je suis débutant et qu'on nous demande du travail sans cours avec l'excuse regarder sur le site du zero a chaque fois je n'ai même pas le niveau pour dire ou se situe mon erreur.

je crois que c'est ici :

// MODIFIER
if (isset($_POST["Mod"]))
  {
  $update = $bdd->prepare('UPDATE FROM visiteurs WHERE id = :userid');
   for ($a=0; $a<count($_POST['Mod']); $a++)
   {
    $xx=trim($_POST['Mod'][$a]);
    $delete->execute(array(':userid' => $xx))or die("Erreur ");
    echo ("".$xx." modifie<br />"); }}
  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2011 à 23:24:50

CODE PHP ! PAS de la Base de données ! Si tu n'as pas de réponses, 3 solutions, soit ton problème est mal posé, soit personne n'est assez compétent pour t'aider soit t'as pas eut de chance et la bonne personne n'est pas passée au bon moment. Mais dans tous les cas de mettre ton post dans une mauvaise section n'avancera à rien !
  • Partager sur Facebook
  • Partager sur Twitter
19 janvier 2011 à 23:24:50

Le message qui suit est une réponse automatique activée par un modérateur.
Les réponses automatiques permettent d'éviter aux modérateurs d'avoir à répéter de nombreuses fois la même chose, et donc de leur faire gagner beaucoup de temps.
Nous sommes néanmoins ouverts et si vous avez une question ou une remarque, n'hésitez pas à contacter le modérateur en question par MP.


Sujet en double


Bonjour,

Il est interdit de créer plusieurs sujets pour un même problème. Celui-ci a donc été fermé.

Merci de votre compréhension.
Les modérateurs.
  • Partager sur Facebook
  • Partager sur Twitter