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

PHP & Base de données Discussion :

Requête tableau php [MySQL]


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut Requête tableau php
    Bonjour,

    J'ai un tableau en php dans lequel je peux modifier les valeurs ce qui modifie ma table mysql.
    Voilà mon problème, lorsque je clique sur 'Modifier', ma requête fonctionne hormis le fait que les cases que je laisse vide ce mettent à zéro, alors que je voudrais qu'il reste à Null.

    Quelqu'un aurais une idée ?

    Code :

    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
    $select = "SELECT NumOf, Habillage_Finition, Marches_Finition, ContreMarches_Finition, Socle_Finition, NomControleur_Finition FROM ordredefabrication";
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    if($total) 
    {
    	//		debut du tableau
    	echo '<table bgcolor="#FFFFFF">'."\n";
     	echo '<tr>';
    	echo 'Finition';
    	echo '<br>';
    	echo '<td bgcolor="#005AA9"><b><u>N°</u></b></td>';
    	echo '<td bgcolor="#005AA9"><b><u>Habillage</u></b></td>';
        	echo '<td bgcolor="#005AA9"><b><u>Marches</u></b></td>';
        	echo '<td bgcolor="#005AA9"><b><u>ContreMarches</u></b></td>';
    	echo '<td bgcolor="#005AA9"><b><u>Socle</u></b></td>';
        	echo '<td bgcolor="#005AA9"><b><u>NomControleur</u></b></td>';
    	echo '</tr>'."\n";
    	$i = 0;
    	while($row = mysql_fetch_array($result)) 
    	{	
    		$color = ++$i % 2 ? '#CCCCCC' : '#FFFFFF';	
    		echo '<tr>';
    		echo '<form action="" method="POST">';
    		echo '<td> <input readonly method="POST" style="border-style: none; border:0; background-color:'.$color.'" name="NumOf" value='.$row['NumOf'].'></td>';
    		echo '<td> <input method="POST" style="border-style: none; border:0; background-color:'.$color.'" name="Habillage_Finition" value='.$row['Habillage_Finition'].'></td>';
    		echo '<td> <input border:none;  method="POST" style="border-style: none; border:0; background-color:'.$color.'" name="Marches_Finition" value='.$row['Marches_Finition'].'></td>';
    		echo '<td> <input method="POST" style="border-style: none; border:0; background-color:'.$color.'" name="ContreMarches_Finition" value='.$row['ContreMarches_Finition'].'></td>';
    		echo '<td> <input method="POST" style="border-style: none; border:0; background-color:'.$color.'" name="Socle_Finition" value='.$row['Socle_Finition'].'></td>';
    		echo '<td> <input method="POST" style="border-style: none; border:0; margin:auto; background-color:'.$color.'" name="NomControleur_Finition" value='.$row['NomControleur_Finition'].'></td>';
    		echo '<td><input type="submit" name="Modifier" value="Modifier"/> </form>';
    		echo '</tr>'."\n";
    		// size=""
    	}
    	echo '</table>'."\n";
    	//	fin du tableau.
    	if(isset($_POST['Modifier'])) // si un clic a été fait sur le bouton submit (Modifier)
    	{
    		$NumOf=$_POST['NumOf'];
    		$Habillage_Finition=$_POST['Habillage_Finition'];
    		$Marches_Finition=$_POST['Marches_Finition'];
    		$ContreMarches_Finition=$_POST['ContreMarches_Finition'];
    		$Socle_Finition=$_POST['Socle_Finition'];
    		$NomControleur_Finition=$_POST['NomControleur_Finition'];
     
    		$reqModif = "UPDATE ordredefabrication SET Habillage_Finition = '$Habillage_Finition', 
    			Marches_Finition = '$Marches_Finition', ContreMarches_Finition = '$ContreMarches_Finition', 
    			Socle_Finition = '$Socle_Finition', NomControleur_Finition = '$NomControleur_Finition' 
    			where NumOf = '$NumOf'";
    		$res = mysql_query($reqModif) or die ('Erreur : '.mysql_error() );
    		$tot = mysql_free_result($res);
    	}
    }
    Image:


  2. #2
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Il suffit de tester la valeur de ta donnée pour ne mettre à jour que les champs qui sont valorisés !

    J'avais un peu de temps
    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
     
    $tabFields = array('Habillage_Finition', 'Marches_Finition', 'ContreMarches_Finition', 'Socle_Finition', 'NomControleur_Finition'); // Tableau qui contient les champs existants dans ta BDD
    $select = 'SELECT NumOf, '.implode(',', $tabFields).' FROM ordredefabrication';
     
    $result = mysql_query($select) or die ('Erreur : '.mysql_error() );
    $total = mysql_num_rows($result);
    if ($total) 
    {
    // [...] Affichage du tableau
     
        if(isset($_POST['Modifier']) && !empty($_POST['NumOf'])) // on rajoute ici une sécurité sur $_POST['NumOf'], puisque NumOf est un paramètre obligatoire pour permettre la mise à jour
        {
            $modifs = array(); // Le tableau qui contiendra les valeurs à mettre à jour
            foreach ($tabFields as $key) // On boucle sur la liste des champs de la base, pour être sûr de ne pas avoir de champs qui n'existe pas en base
            {
                if (!empty($_POST[$key]) && '' != $_POST[$key]) // On ne récupère que les valeurs non nulles et valorisées, donc différentes d'une chaîne vide
                {
                	$modifs[$key] = $key.' = '.mysql_real_escape_string($_POST[$key]); // Enrichissement du tableau de modifs, avec un mysql_real_escape_string() pour sécuriser la mise à jour et éviter de polluer ta base ou de t'exposer à une injection SQL
                }
            }
            if (!empty($modifs)) // Si on a des valeurs à mettre à jour
            {
                $reqModif = 'UPDATE ordredefabrication SET '.implode(',', $modifs).' WHERE NumOf = '.$modifs['NumOf']; // On met à jour
                $res = mysql_query($reqModif) or die ('Erreur : '.mysql_error() );
                $tot = mysql_free_result($res);
            }
        }
    }
    Par contre, je te conseille de revoir certains points :
    - le style en dur dans ta page...C'est pas joli ! Je te conseille de passer par les CSS
    - mysql_ est dépréciée, passes sous mysqli ou PDO !
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    Merci beaucoup pour ce code et ces conseils

    Par-contre j'ai un souci dans la requête Update, le NumOf n'est pas identifié :/ .

    Edit:
    J'ai mis $_POST au lieu de $modifs et ça à l'air de mieux marcher.

  4. #4
    Membre chevronné

    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2011
    Messages
    205
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juin 2011
    Messages : 205
    Billets dans le blog
    1
    Par défaut
    Effectivement, mea culpa !
    C'est bien mysql_real_escape_string($_POST['NumOf']) qu'il faut mettre au lieu de $modifs
    si ce post vous a été utile, si votre problème est résolu.
    Pensez-y !
    __________________________________
    Doc officielle PHP | FAQ PHP | Cours PHP

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2013
    Messages : 13
    Par défaut
    Me voilà rassuré .
    Donc c'est bon ça marche nickel.

    Je profite du forum pour poser deux autres questions:

    _ Quand je fais une modification le tableau ne se recharge pas automatiquement, et c'est un problème de devoir recharger manuellement la page à chaque fois :/ .

    _ Et savez-vous comment enlever les bordures de l'input ? J'ai essayé plusieurs choses du genre border:none; border:0px; etc et je ne vois pas ce qui ne va pas.
    Ça m'aiderais car pour l'instant ça donne ça(voir ci-dessous) et ce n'est pas très joli.

    (partie gauche tableau 'normal', à droite tableau 'input')

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [PHP 5.0] Copier le résultat d'une requête mysql dans un autre tableau PHP
    Par Didier100 dans le forum Langage
    Réponses: 6
    Dernier message: 30/05/2012, 23h59
  2. Réponses: 4
    Dernier message: 29/02/2008, 17h14
  3. Réponses: 15
    Dernier message: 11/05/2007, 15h28
  4. [DOM XML] XML -> tableau PHP
    Par Mucsy dans le forum Bibliothèques et frameworks
    Réponses: 6
    Dernier message: 03/06/2005, 11h44
  5. [PHP-JS] Remplir un tableau javascript selon un tableau php
    Par jerome38000 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/01/2005, 14h02

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