*
Bienvenue, Invité. Veuillez vous connecter ou vous inscrire.
Avez-vous perdu votre courriel d'activation?
22 Mai 2012 à 10:52:18

Connexion avec identifiant, mot de passe et durée de la session



 

Faire une recherche plus modification dans base sql


« sujet précédent | | sujet suivant »
Pages: [1] Imprimer
Auteur Fil de discussion: Faire une recherche plus modification dans base sql  (Lu 1705 fois)
ju3979
Apprenti
**

Points gagnés: 0
Messages: 57


Voir le profil
Faire une recherche plus modification dans base sql
« le: 08 Août 2007 à 19:14:37 »

Bonjour

J'aimerais créer un champ recherche dans une page, ce champ permettrer de faire une recherche par nom ou par date dans ma base sql

Ensuite une fois le resultat de la recherche afficher, il faudrait pouvoir modifier les données de la table

Pouvez vous m'aider

D'avance merci
Journalisée
ju3979
Apprenti
**

Points gagnés: 0
Messages: 57


Voir le profil
Re : Faire une recherche plus modification dans base sql
« Répondre #1 le: 09 Août 2007 à 11:23:21 »

Bonjour

J'ai réussi à mettre en place la fonction recherche et modification dans ma base sql

Mais je rencontre quand même deux problème:

* Le premier c'est que par exemple si dans le champ remaque je met un apostrophe et que je valide pour modifier il me met une erreur de syntaxe et ne me modifie rein

* Le deuxième c'est que les utilisateus peuvent faire une recherche par nom ou par date. Mais quand il font une recherche en mettant la date au foramt français ça ne marche par contre au format américain ça fonctionne... De même après une recherche mon champ date affiché est au format américain et pas français. Je souhaiterais que l'utilisateur puisse saisir toutes les dates au format français et que après ce fasse une conversion transparente pour l'utilisateur

Je vous met ma page de recherche + mes 3 scripts:

affiche l'écran de recherche:

Code:

<form action="modification.php" enctype="multipart/form-data" method="post">
<label>Nom : </label>
 <input name="nom" type="text">
<label>Date : </label>
<input name="date" type="text">
<input name="submit" type="submit" value="Rechercher">
</form>

Premier script qui interroge la base:

Code:
<html>
  <head>
    <title>modification de données en PHP :: partie 1</title>
  </head>
<body>
  <?php
    
if(isset($_POST['submit'])) 

    
$db mysql_connect('localhost''root'''); 
    
mysql_select_db('base1',$db); 
     
    
$table="livraisons"
    
$nom=$_POST['nom']; 
    
$date=$_POST['date']; 
     
    if(!empty(
$nom)){ 
        
$sql "SELECT * FROM $table WHERE nom='$nom'"
    } 
    elseif(!empty(
$date)){ 
        
$sql "SELECT * FROM $table WHERE date='$date'"
    } 
    else{ 
        
// On ne fait pas de recherche 
        // Redirection 
    

  
 
    
//exécution de la requête:
    
$requete mysql_query$sql$db ) ;
  
    
//affichage des données:
    
while( $result mysql_fetch_object$requete ) )
    {
       echo(
"<div align=\"center\">".$result->nom." ".$result->prenom." ".$result->date." <a href=\"modification2.php?idPersonne=".$result->id_personne."\">modifier</a><br>\n") ;
    }
    }
  
?>

</body>
</html>


Deuxième script qui intérroge et affiche le resultat:

Code:
<html>
  <head>
    <title>modification de données en PHP :: partie2</title>
  </head>
<body>
  <?php
  
//connection au serveur:
  
$cnx mysql_connect"localhost""root""" ) ;
  
  
//sélection de la base de données:
  
$db mysql_select_db"base1" ) ;
  
  
//récupération de la variable d'URL,
  //qui va nous permettre de savoir quel enregistrement modifier
  
$id  $_GET["idPersonne"] ;
  
  
//requête SQL:
  
$sql "SELECT *
            FROM livraisons
    WHERE id_personne = "
.$id ;
    
  
//exécution de la requête:
  
$requete mysql_query$sql$cnx ) ;
  
  
//affichage des données:
  
if( $result mysql_fetch_object$requete ) )
  {
  
?>

 
<form name="insertion" action="modification3.php" method="POST">
  <input type="hidden" name="id" value="<?php echo($id) ;?>">
  <table border="0" align="center" cellspacing="2" cellpadding="2">
    <tr align="center">
      <td>Nom</td>
      <td><input type="text" name="nom" value="<?php echo($result->nom) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Prenom</td>
      <td><input type="text" name="prenom" value="<?php echo($result->prenom) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Adresse</td>
      <td><input type="text" name="adresse" value="<?php echo($result->adresse) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Ville</td>
      <td><input type="text" name="ville" value="<?php echo($result->ville) ;?>"></td>
    </tr>
    <tr align="center">
      <td>Code postal</td>
      <td><input type="text" name="codepostal" value="<?php echo($result->codepostal) ;?>"></td>
    </tr>
      <td>Telephone</td>
      <td><input type="text" name="telephone" value="<?php echo($result->telephone) ;?>"></td>
    </tr>
      <td>Documents à fournir</td>
      <td><input type="text" name="documentsafournir" value="<?php echo($result->documentsafournir) ;?>"></td>
    </tr>
      <td>Conseiller</td>
      <td><input type="text" name="conseiller" value="<?php echo($result->conseiller) ;?>"></td>
    </tr>
      <td>Rendez vous</td>
      <td><input type="text" name="rendezvous" value="<?php echo($result->rendezvous) ;?>"></td>
    </tr>
      <td>Remarque</td>
      <td><input type="text" name="remarque" value="<?php echo($result->remarque) ;?>"></td>
    </tr>
      <td>Date</td>
      <td><input type="text" name="date" value="<?php echo($result->date) ;?>"></td>
    </tr>
    <tr align="center">
      <td colspan="2"><input type="submit" value="modifier"></td>
    </tr>
  </table>
</form>
  <?php
  
}//fin if 
  
?>

</body>
</html>

Troisième script qui fait un update des modifs dans ma base:

Code:
<?php
  
//connection au serveur
  
$cnx mysql_connect"localhost""root""" ) ;
 
  
//sélection de la base de données:
  
$db  mysql_select_db"base1" ) ;
 
  
//récupération des valeurs des champs:
  //nom:
  
$nom     $_POST["nom"] ;
  
//prenom:
  
$prenom $_POST["prenom"] ;
  
//adresse:
  
$adresse $_POST["adresse"] ;
  
//code postal:
  
$codepostal $_POST["codepostal"] ;
  
//Ville:
  
$ville $_POST["ville"] ;
  
//Telephone:
  
$telephone $_POST["telephone"] ;
  
//code Documents à fournir:
  
$documentsafournir $_POST["documentsafournir"] ;
  
//Conseiller:
  
$conseiller $_POST["conseiller"] ;
  
//Rendez vous:
  
$rendezvous $_POST["rendezvous"] ;
  
//Remarque:
  
$remarque $_POST["remarque"] ;
  
  
//récupération de l'identifiant de la personne:
  
$id         $_POST["id"] ;
 
 
 
  
//création de la requête SQL:
  
$sql "UPDATE livraisons
            SET nom         = '
$nom', 
          prenom     = '
$prenom',
  adresse    = '
$adresse',
                  ville     = '
$ville',
  codepostal = '
$codepostal',
  telephone = '
$telephone',
                  documentsafournir = '
$documentsafournir',
                  conseiller = '
$conseiller',
                  rendezvous = '
$rendezvous',
                  remarque = '
$remarque
           WHERE id_personne = '
$id' " ;
  
  
//exécution de la requête SQL:
  
$requete mysql_query($sql$cnx) or die( mysql_error() ) ;
 
  
  
//affichage des résultats, pour savoir si la modification a marchée:
  
if($requete)
  {
    echo(
"La modification à été correctement effectuée") ;
  }
  else
  {
    echo(
"La modification à échouée") ;
  }
?>



Pouvez vous m'aider à resoudre ces 2 problèmes
Merci pour votre aide
Journalisée
Damien
Rédacteur Admin
Intarissable
*****

Points gagnés: 5
Messages: 2852



Voir le profil WWW
Re : Faire une recherche plus modification dans base sql
« Répondre #2 le: 10 Août 2007 à 14:33:19 »

Bonjour,

1. Pour la première question :

Quand vous faites un INSERT ou UPDATE sql, pensez à protéger vos données avec addslashes() au minimum. Par exemple, au lieu de :
Code:
  //Remarque:
  $remarque = $_POST["remarque"] ;
Mettez :
Code:
  //Remarque:
  $remarque = addslashes($_POST["remarque"]) ;

Ca aura pour effet d'ajouter des slashes devant les apostrophes entre autres, et vous évitera les erreur de syntaxe. En effet si vous mettez par exemple :
$sql = "UPDATE livraisons SET nom = '$nom'";
Et si vous ne protégez pas vos données vous aurez des erreurs de syntaxe au mieux, au pire c'est une grosse faille de sécurité qui permet de l'injection sql
.
Car sur cet exemple, si je met la valeur
Code:
', password = '';//
dans le champ nom, cela donnera la requête suivante en remplacant par la valeur de $nom :
$sql = "UPDATE livraisons SET nom = '', password = '';//'";
Résultat de la requête : l'utilisateur a effacé tous les champs nom et password de la table, et autant dire qu'il aurait pu faire encore pire...


2. pour la deuxieme question :

Il faut faire une conversion de date.
Par exemple si on vous met une date fr au format "JJ-MM-AAAA" dans le formulaire, c'est convertissable au format date mysql "AAAA-MM-JJ" avec une fonction de ce genre :

Code:
function dateusenfr($dateus)
{
if (!$dateus) return "";
list($annee, $mois, $jour) = split("-", $dateus);
$datefr = $jour."-".$mois."-".$annee;
return $datefr;
}

Cependant il faudrait bloquer vos champs, car là rien n'empêche d'écrire une date du style "JJ/MM/AAAA" ou "25 août 2007" dans votre champ texte. Vous pouvez éventuellement mettre 3 champs de liste "select" (jour, mois, année) avec les nombres prédéfinis.
Journalisée

Cordialement,
Damien

Tutoriels informatique
hbens
Nouveau membre
*

Points gagnés: 0
Messages: 2


Voir le profil
PARTAGE MACRO SUR D AUTRE FICHIER
« Répondre #3 le: 10 Août 2007 à 15:54:27 »

BONJOUR
JE SOUHAITERAIS AVOIR UN PETIT COUT DE POUCE
PARTAGE UNE MACRO A D AUTRE FICHER
COMME FAIRE
Journalisée
hbens
Nouveau membre
*

Points gagnés: 0
Messages: 2


Voir le profil
PARTAGE MACRO EXCEL
« Répondre #4 le: 10 Août 2007 à 15:55:58 »

SUR EXCEL
Journalisée
Thierry
Rédacteur Admin
Intarissable
*****

Points gagnés: 13
Messages: 1734



Voir le profil
Re : Faire une recherche plus modification dans base sql
« Répondre #5 le: 10 Août 2007 à 16:45:14 »

Bonjour,

Je vous invite à consulter ce tutoriel :


Créer ses fonctions dans Excel (Macros)


Citation
Ces méthodes valent si vous devez utiliser votre fonction dans ce seul classeur. Si vous entendez l’utiliser dans d’autres il faut créer un fichier .xla puis intégrer votre fonction dans votre nouveau classeur.

Pour créer un fichier .xla : dans Excel menu Fichier/Enregistrer sous , choisir « Macro complémentaire Microsoft Excel (*.xla) » dans type de fichier et nommer votre fichier « Situation.xla » :
.......



Journalisée
Pages: [1] Imprimer 
« sujet précédent | | sujet suivant »
Aller à:  

Powered by SMF 1.1.12 | SMF © 2006, Simple Machines LLC

Page générée en 0.164 secondes avec 18 requêtes.