IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fonction modifier en php5


Sujet :

Langage PHP

  1. #41
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Re,
    rachouda, attention au formatage de tes scripts. Un script illisible est source d'erreur de programmation et peut être très difficile à débuguer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $obj->modifier('.$id_circuit.');
    Ceci est incorrect (bis*$x). Tu envoies à la méthode modifier( ) la valeur littérale ".$id_circuit." et non pas le contenu de la variable $id_circuit.

    Il faudrait faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $obj->modifier($id_circuit);
    Afin d'y voir plus clair j'ai reformaté ta méthode modifier( ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    public function modifier($id_circuit)
    {
        if(isset($_POST['sauvegarder'])) {
            $requete="UPDATE circuit SET (
                          id_circuit = "  . intval($_POST['id_circuit']) . ",
                          Nomcircuit ='" . mysql_real_escape_string($_POST['Nomcircuit']) . "',
                          Villededépart ='"  . mysql_real_escape_string($_POST['Villededépart']) . "',
                          Jourdedépart ='"  . mysql_real_escape_string($_POST['Jourdedépart']) . "',
                          Jourderetour ='"  . mysql_real_escape_string($_POST['Jourderetour']) . "',
                          Durée ='"  . mysql_real_escape_string($_POST['Durée']) . "',
                          Prix ='"  . mysql_real_escape_string($_POST['Prix']) . "',
                          Description ='"  . mysql_real_escape_string($_POST['Description']) . "'
                      where id_circuit  = $id_circuit";
        }
    }
    On voit une ( juste après SET. Elle est incorrecte, il faut la retirer.
    Ta requête UPDATE n'est pas soumise, soumets-la avec mysql_query( ).

    J'ai élagué chercherproduit( ) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    public function cherchercircuit($id_circuit)
    {
        if(isset($_POST['chercher'])) {
            $requete ="select *
                      from circuit
                      where id_circuit LIKE '%".$_POST['id_circuit']."%';";
            if($result =mysql_query($requete)) {
                $row=mysql_fetch_row($result);
     
                echo "<form method='POST' action='modifiercircuit.php'>
                        id_circuit: <input name='id_circuit' type='text' value='$row[0]'>
                        Nom circuit <input name='Nomcircuit' type='text' value= '$row[1]'>
                        Ville de départ: <input name='Villededépart' type='text'  value='$row[2]'>
                        Jour de départ: <input name='Jourdedépart' type='text' value='$row[3]'>
                        Jour de retour: <input name='Jourderetour' type='text' value='$row[4]'>
                        Durée: <input name='Durée' type='text' value='$row[5]'>
                        Prix: <input name='Prix' type='text' value='$row[6]'>
                        Description: <textarea rows=10 cols=17 name='Description'>$row[7]</textarea>
                        <button name='sauvegarder' value='sauvegarder' type='submit' >sauvegarder</button>
                        </form>";
     
            }
        }
    }
    Comme déjà dit il ne faut pas utiliser un LIKE. Pourquoi ? Si tu cherches le circuit n° 45 n'importe quel circuit dont l'id contient 45 peut potentiellement être sélectionné, ex. 451, 1456, etc. Fais un comparaison stricts avec = plutôt que LIKE %%.

    Corrige les points énoncés ici stp.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  2. #42
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Points : 1
    Points
    1
    Par défaut
    j'essaye plusieurs fois de corriger le code et apprendre vos conseils mais de résultat .aucune modification dans la base des données.

  3. #43
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Envoie les scripts après correction stp.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  4. #44
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Points : 1
    Points
    1
    Par défaut
    voici le code de la fonction modification:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public function modifier($id_circuit)
    {
        if(isset($_POST['sauvegarder'])) {
            $requete="UPDATE circuit SET 
                          id_circuit = "  . intval($_POST['id_circuit']) . ",
                          Nomcircuit ='" . mysql_real_escape_string($_POST['Nomcircuit']) . "',
                          Villededépart ='"  . mysql_real_escape_string($_POST['Villededépart']) . "',
                          Jourdedépart ='"  . mysql_real_escape_string($_POST['Jourdedépart']) . "',
                          Jourderetour ='"  . mysql_real_escape_string($_POST['Jourderetour']) . "',
                          Durée ='"  . mysql_real_escape_string($_POST['Durée']) . "',
                          Prix ='"  . mysql_real_escape_string($_POST['Prix']) . "',
                          Description ='"  . mysql_real_escape_string($_POST['Description']) . "'
                      where id_circuit  = $id_circuit";
    				  }
    	if($result =@mysql_query($requete)){
    	echo "modificationbien passée";
    	}
    	else{
    	echo "erreur de modification";
    	}
    	}
    et la fonction de recherche qui contient la formulaire et la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    public function cherchercircuit($id_circuit)
    {
        if(isset($_POST['chercher'])) {
            $requete ="select *
                      from circuit
                      where id_circuit LIKE '%".$_POST['id_circuit']."%';";
            if($result =mysql_query($requete)) {
                $row=mysql_fetch_row($result);
                echo "<table width='100%' height='500'>
    					<form method='POST' action='modifiercircuit.php'>
    					<tr>
    					<td>
                        <font size=3 color='white'>id_circuit:</font>
    					</td>
    					<td>
    					<input name='id_circuit' type='text' value='$row[0]'>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        <font size=3 color='white'>Nom circuit:</font>
    					</td>
    					<td>
    					<input name='Nomcircuit' type='text' value= '$row[1]'>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        <font size=3 color='white'>Ville de départ:</font>
    					</td>
    					<td>
    					<input name='Villededépart' type='text'  value='$row[2]'>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        <font size=3 color='white'>Jour de départ:</font>
    					</td>
    					<td>
    					<input name='Jourdedépart' type='text' value='$row[3]'>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        <font size=3 color='white'>Jour de retour:</font>
    					</td>
    					<td>
    					<input name='Jourderetour' type='text' value='$row[4]'>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        Durée:
    					</td>
    					<td>
    					<input name='Durée' type='text' value='$row[5]'>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        <font size=3 color='white'>Prix:</font>
    					</td>
    					<td>
    					<input name='Prix' type='text' value='$row[6]'>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        <font size=3 color='white'>Description:</font>
    					</td>
    					<td>
    					<textarea rows=10 cols=17 name='Description'>$row[7]</textarea>
    					</td>
    					</tr>
    					<tr>
    					<td>
                        <button name='sauvegarder' value='sauvegarder' type='submit' ><img src='sauvegarde.jpg' width='100' height='100'></button>
    					</td>
    					</tr>
                        </form    
     
    						</td>
    					</tr>
    					</center>
    			</table>";
    			}}}
    et l'appel de la fonction est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?php
    				include('recherchedecircuit.php');
    				$obj= new circuit();
    				$obj->modifier($id_circuit);
    				?>

  5. #45
    Membre éclairé

    Homme Profil pro
    Développeur Web
    Inscrit en
    Mars 2011
    Messages
    411
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 411
    Points : 735
    Points
    735
    Par défaut
    Citation Envoyé par rachouda Voir le message
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    public function cherchercircuit($id_circuit)
    {
        if(isset($_POST['chercher'])) {
            $requete ="select *
                      from circuit
                      where id_circuit LIKE '%".$_POST['id_circuit']."%';";
    (Re)Bienvenue à la page 1 de ce thread
    Je suis fervent utilisateur de PHP et de jQuery.
    Après des études de graphisme, j'ai décidé de mélanger développement web et web design. J'ai ainsi donc créé mon site web de développeur web dans le Val d'Oise mais aussi plusieurs projets personnels.
    Dans les plus aboutis, vous pourrez trouver dans mon labo et dans mon devblog, une extension de navigateur pour envoyer l'URL de la page actuelle vers votre email pour lire plus tard ou sauvegarder, mon générateur de template HTML5, etc…

  6. #46
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Points : 1
    Points
    1
    Par défaut
    la fonction recherchercircuit déjà fonctionne bien mais mon probléme à la fonction modifier qu'il ne modifie rien à la base des données.

  7. #47
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Citation Envoyé par rachouda Voir le message
    la fonction recherchercircuit déjà fonctionne bien mais mon probléme à la fonction modifier qu'il ne modifie rien à la base des données.
    Qu'affiche la fonction modifier ? As-tu effectué un débugage ?
    Pourquoi un @ devant mysql_query( ) ? Le @ cache les erreurs, il faut l'éviter, surtout pendant le développement.
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  8. #48
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Points : 1
    Points
    1
    Par défaut
    la fonction modifier n'affiche rien ni fautes ni modification de base des données même si enlève le @.

  9. #49
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Dans ce cas ça veut dire que tu n'entres pas dans le if( ) de la méthode modifier( ).
    As-tu effectué un débugage afin de déterminer pourquoi tu n'entres pas dans le if( ) ?
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  10. #50
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Points : 1
    Points
    1
    Par défaut
    je ne comprends comment faire un débugage?

  11. #51
    Expert éminent
    Avatar de Séb.
    Profil pro
    Inscrit en
    Mars 2005
    Messages
    5 101
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2005
    Messages : 5 101
    Points : 8 211
    Points
    8 211
    Billets dans le blog
    17
    Par défaut
    Débuger consiste principalement à t'assurer de la valeur des variables à chaque étape.
    Je te conseille aussi de veiller à présenter le plus clairement possible tes scripts, t'y verras plus clair et éviter les erreurs bêtes.

    Exemple avec ta méthode modifier :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    public function modifier($id_circuit)
    {
        echo "[DEBUG][J'entre dans la méthode modifier, id_circuit=[$id_circuit]]" ;
     
        echo '[DEBUG][Contrôle des données soumises en POST, $_POST=[' . print_r($_POST, TRUE) . ']]' ;
     
        if ( isset($_POST['sauvegarder']) ) {
     
            // Ecriture du squelette de la requête
            // Enfin qque chose de lisible
            $sql = 'UPDATE circuit SET '
                 . 'id_circuit = %d, ' // Je doute de l'intérêt de ceci
                 . 'Nomcircuit = "%s", '
                 . 'Villededépart = "%s", '
                 . 'Jourdedépart = "%s", '
                 . 'Jourderetour = "%s", '
                 . 'Durée = "%s", '
                 . 'Prix = "%s", '
                 . 'Description = "%s" '
                 . 'WHERE id_circuit = %d' ;
     
            echo "[DEBUG][Vérification du squelette SQL, sql=[$sql]]" ;
     
            // Valorisation des %s et %d de la chaîne-squelette $sql
            // Voir doc sprintf( ) si besoin http://www.php.net/sprintf
            $sql = sprintf($sql, $_POST['id_circuit'], // Je doute de l'intérêt de ceci...
                                 mysql_real_escape_string($_POST['Nomcircuit']),
                                 mysql_real_escape_string($_POST['Villededépart']),
                                 mysql_real_escape_string($_POST['Jourdedépart']),
                                 mysql_real_escape_string($_POST['Jourderetour']),
                                 mysql_real_escape_string($_POST['Durée']),
                                 mysql_real_escape_string($_POST['Prix']),
                                 mysql_real_escape_string($_POST['Description']),
                                 $id_circuit) ;
     
            echo "[DEBUG][Requête SQL à soumettre, sql=[$sql]]" ;
     
            if ( mysql_query($sql) ) {
                echo "[DEBUG][Requête SQL soumise AVEC succès, pas d'erreur reportée]" ;
            } else {
                $error = mysql_error( ) ;
                echo "[DEBUG][Requête SQL soumise SANS succès, erreur retournée par MySQL = [$error]]" ;
            }
     
        } else {
            echo "[DEBUG][Je suis dans le else, donc _POST['sauvegarder'] n'est pas défini !!]" ;
        }
    }
    Un problème exposé clairement est déjà à moitié résolu
    Keep It Smart and Simple

  12. #52
    Nouveau Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2011
    Messages
    30
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Avril 2011
    Messages : 30
    Points : 1
    Points
    1
    Par défaut
    j'utilise le code qui vous proposez mais pas de résultat il ne modifie rien dans la base des données et il m'affiche:

    [DEBUG][J'entre dans la méthode modifier, id_circuit=[.$id_circuit.]][DEBUG][Contrôle des données soumises en POST, $_POST=[Array ( [id_circuit] => 1 [Nomcircuit] => Couleurs de tunisie [Villededépart] => Djerba [Jourdedépart] => Mardi [Jourderetour] => jeudi [Durée] => 04 Jours [Prix] => 50 [Description] =>belle ville
    je modifie le jour de retour par exemple il le modifie mais il n'envoie pas la modification dans la base.

  13. #53
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    [DEBUG][J'entre dans la méthode modifier, id_circuit=[.$id_circuit.]][DEBUG]
    D'ou sortent les points avant et après $id_circuit ? Si tu fais même des erreurs en recopiant ce qu'on te mets, je comprends qu'on avance pas.

    Sinon le problème et la solution sont sous ta main maintenant.
    Tu vois que $_POST['sauvegarder'] n'existe pas.
    En effet tu as mis "button" au lieu de "input" pour ton bouton "sauvegarder".
    N'oubliez pas de consulter les FAQ PHP et les cours et tutoriels PHP

Discussions similaires

  1. Fonction scandir() avec PHP5
    Par maty2006 dans le forum Langage
    Réponses: 8
    Dernier message: 07/12/2008, 11h42
  2. une fonction modifiant le style avec z-index
    Par Stuff dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 14/10/2008, 09h48
  3. fonction explode() et php5
    Par tarah01 dans le forum Langage
    Réponses: 3
    Dernier message: 03/04/2007, 15h51
  4. probleme avec fonction modifier en ASP
    Par leclone dans le forum ASP
    Réponses: 9
    Dernier message: 16/11/2006, 22h44
  5. [MySQL] pb fonction modifier
    Par xtiand4 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/06/2006, 12h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo