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 :

Envoi de donnée de formulaire généré a la volée dans un tableau


Sujet :

PHP & Base de données

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club Avatar de Sub_uuboot
    Homme Profil pro
    compliqué
    Inscrit en
    Novembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : compliqué

    Informations forums :
    Inscription : Novembre 2016
    Messages : 9
    Par défaut Envoi de donnée de formulaire généré a la volée dans un tableau
    Bonjour,
    je me suis remis au développement web après des années de végétation à ce niveau
    j'ai un beau projet mais j'approche de la deadline et j'ai un gros problème de fonctionnalité,
    j'ai besoin d'un coup de mains sinon mon projet va être jeter aux toilette et moi avec si j'ai même pas une démo fonctionnelle a présenté en fin de semaine

    ce que j'ai :

    je génère un tableau ou chaque cellule est un input qui affiche la valeur qui est dans la bdd
    grace à une boucle while j'affiche la totalité de ma bdd en tableau comme ça.

    et ce que je veux : c'est envoyer les inséré/modifié dans la bdd en retour

    pour ça j'ai essayer ça:

    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
     
    function startsWith($haystack, $needle)
    	{
    		return strrpos($haystack, $needle, -strlen($haystack)) !== false;
    	}
     
    	$query =  $mysqli->prepare("UPDATE outils SET EmplacementX = (?), EmplacementY = (?), EmplacementZ = (?) WHERE ID = (?)");
    						$emplacementX = NULL;
    						$emplacementY = NULL;
    						$emplacementZ = NULL;
    						$id = NULL;
    	$query->bind_param("ssss", $emplacementX, $emplacementY, $emplacementZ, $id);
    	if($query == NULL) die("MySQL prepared statement error");
     
     
     
     
     
    	for ( $iterration=0   ;   $iterration < sizeof($_POST)   ;   $iterration++ )
    		if(startsWith(array_keys($_POST)[$iterration], "emplacementX"))
    		{
    			$id = explode("_", array_keys($_POST)[$iterration])	[1];
     
    			echo '<div class="test_tip">';
    			echo $id.' <- $id'; echo '</br>';
    			echo $iterration.' <- $iterration'; echo '</br>';
    			echo '</div>';
     
    			$emplacementX = isset($_POST['emplacementX_'.$id]) ? $_POST['emplacementX_'.$id] : NULL;
    			$emplacementY = isset($_POST['emplacementY_'.$id]) ? $_POST['emplacementY_'.$id] : NULL;
    			$emplacementZ = isset($_POST['emplacementZ_'.$id]) ? $_POST['emplacementZ_'.$id] : NULL;
     
    			if($emplacementX != NULL && $emplacementY != NULL && $emplacementZ != NULL)
     
    			$query->execute()
    			or die ("MySQL query error (".$mysqli->connect_errno.")".$mysqli->connect_error);
    		}
    problème : ça ne marche que pour la première ligne, les autres ne sont tout simplement pas changer

    je vous remercie d'avoir lu et j'espère que quelqu'un voudras bien m'aider

  2. #2
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Par défaut
    Tu vois bien tous les affichages $id et $iteration, et c'est uniquement la mise à jour qui ne se fait pas ?
    L'exécution de la requête est dans une condition, as-tu vérifié que tu entrais bien dans cette condition ? Tu peux ajouter un affichage alternatif pour le cas où tu ne passes pas dans l
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    if($emplacementX != NULL && $emplacementY != NULL && $emplacementZ != NULL) {
        echo "Update !";
        $query->execute() or die ("MySQL query error (".$mysqli->connect_errno.")".$mysqli->connect_error);
    } else {
        echo "pas d'update, au moins une valeur est nulle";
    }
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    et bienvenu sur DVP.

    Pas de commentaire dans le code, pas de code du formulaire... on ne peut que supposer...

    Quand je vois ça : $_POST['emplacementX_'.$id], je me dis que tu n'as pas correctement conçu le formulaire.
    Cette forme suppose que le name de l'input (ou autre) est de la forme :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <input ..... name="emplacementX_<?php echo $id; ?>" .... />
    Or, voici une meilleure conception :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <input ..... name="emplacementX[<?php echo $id; ?>]" .... />
    <input ..... name="emplacementY[<?php echo $id; ?>]" .... />
    Les [...] font que tu vas récupèrer des array de valeurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $emplacementX_array = $_POST['emplacementX'];
    $emplacementY_array = $_POST['emplacementY'];
    Tu peux alors parcourir cet array, avec $id comme index :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    foreach( $emplacementX_array as $id => $emplacementX )
    {
       // $id : identifiant/index de la ligne à modifier
       // $emplacementX : c'est clair
       // les autres critères :
       $emplacementY = $emplacementY_array[$id]; 
    ...
       // Là, on peut effectuer l'UPDATE de la ligne
    ...
    }

  4. #4
    Membre du Club Avatar de Sub_uuboot
    Homme Profil pro
    compliqué
    Inscrit en
    Novembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : compliqué

    Informations forums :
    Inscription : Novembre 2016
    Messages : 9
    Par défaut
    Bonjour,

    merci pour vos réponses

    Tu vois bien tous les affichages $id et $iteration, et c'est uniquement la mise à jour qui ne se fait pas ?
    j'ai fait echo $id; aprés le if et en dehors du for, et l'id reste toujours à 1, les itérations s'incrémente,
    si je ne me trompe pas, c'est la boucle qui ne marche pas, elle tourne une fois et puis stop.

    j'ai ajouté l'affichage alternatif et ça me dis "Update!"


    je n'ai pas mis les commentaires car j'ai peur de pas être clair et d'embrouiller plus qu'autre chose pour l'instant

    et le formulaire je compter bien le passer, mais pur pas faire un premier post trop lourd, j'attendais de savoir si vous en aviez besoin
    alors voilà le formulaire

    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
     
     
    <?php
     
    	$reponse = $mysqli->query("SELECT * FROM outils");
    	while($donnees = $reponse->fetch_assoc())
    	{
    		$id = $donnees['ID'];
    		$emplacementX = $donnees['EmplacementX'];
    		$emplacementY = $donnees['EmplacementY'];
    		$emplacementZ = $donnees['EmplacementZ'];
     
    ?>
     
    			<tr>
     
    				<td><!-- Emplacement case -->
     
     
    					<select name=<?php echo "emplacementY_".$id; ?> value=" <?php //if ( isset ($emplacementY) ) { echo $emplacementY ; } ?> ">
    						<option value=""></option>
    						<option <?php if ( $emplacementY == "1U" ) echo 'selected'; ?> value="1U">1U</option>
    						<option <?php if ( $emplacementY == "1D" ) echo 'selected'; ?> value="1D">1D</option>
    						<option <?php if ( $emplacementY == "II" ) echo 'selected'; ?> value="II">II</option>
    						<option <?php if ( $emplacementY == "III" ) echo 'selected'; ?> value="III">III</option>
    						<option <?php if ( $emplacementY == "IV" ) echo 'selected'; ?> value="IV">IV</option>
    						<option <?php if ( $emplacementY == "V" ) echo 'selected'; ?> value="V">V</option>
    						<option <?php if ( $emplacementY == "VI" ) echo 'selected'; ?> value="VI">VI</option>
    					</select>
     
    					<select name=<?php echo "emplacementX_".$id; ?> value=" <?php //if ( isset ($emplacementX) ) { echo $emplacementX ; } ?> ">
    						<option value=""></option>
    <?php
    		for($iterration='A'; $iterration<='F'; $iterration++)
    			echo '		<option '.($emplacementX == $iterration ? 'selected' : '').' value="'.$iterration.'">'.$iterration.'</option>
    				';
    ?>
    					</select>
     
    					<select name=<?php echo "emplacementZ_".$id; ?> value=" <?php //if ( isset ($emplacementZ) ) { echo $emplacementZ ; } ?> ">
    						<option value=""></option>
    <?php
    		for($iterration='9'; $iterration>'0'; $iterration--)
    			echo '		<option '.( $emplacementZ == $iterration ? 'selected' :'').' value="'.$iterration.'">'.$iterration.'</option>
    				';
    ?>
    					</select>
     
    				</td>
     
    				<td><!-- Quantite case -->
     
    <?php //echo $donnees['Quantite'];
    	echo '<input  type="number" name="Quantite" value="'.$donnees['Quantite'].'" /> ';
    	//<input type="number" value=$Quantity name="quantity" min="1" max="100">
    ?>
     
    				</td>
     
    			</tr>
     
    		</form>
     
     
    <?php //fin de la boucle
    	}
    	$query->close();
    	$reponse->free();
    	$mysqli->close();
    ?>
     
     
    	</table>

  5. #5
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    ce que je t'ai conseillé ne t'intéresse pas ?

  6. #6
    Membre du Club Avatar de Sub_uuboot
    Homme Profil pro
    compliqué
    Inscrit en
    Novembre 2016
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : compliqué

    Informations forums :
    Inscription : Novembre 2016
    Messages : 9
    Par défaut
    ce que je t'ai conseillé ne t'intéresse pas ?
    si si ! j'avais pas encore eu le temps de tester, mais je suis toujours partant pour une meilleur conception

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

Discussions similaires

  1. Envoi de données par formulaire
    Par infoad31 dans le forum Langage
    Réponses: 1
    Dernier message: 19/04/2011, 13h01
  2. [Flex3] Envois de données par formulaire
    Par DBA_OCP dans le forum Flex
    Réponses: 8
    Dernier message: 24/12/2010, 11h59
  3. Envoi de données de formulaire
    Par klmload dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/12/2009, 10h16
  4. [MySQL] message d'erreur lors de l'envois des données du formulaires
    Par paolo129 dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 16/12/2008, 17h14
  5. [AJAX] envoie de données à un formulaire de manière asynchrone
    Par comcom94 dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 24/10/2008, 18h09

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