Partage
  • Partager sur Facebook
  • Partager sur Twitter

PHP : Notice: Undefined offset: 2

Sujet résolu
    19 octobre 2018 à 0:13:52

    Bonjour à tous,

    Je suis actuellement en train de réaliser un script qui me permettrais de générez directement des devis.

    Je ne vois pas ou est le problème :

    Name.php

    	$bdd = new PDO('mysql:host='.$HOST_DB.';dbname='.$DB_NAME.'', $DB_USERS, $DB_PASSWORD);
    
    
    
    $number = count($_POST["name"]);
    if($number > 1)
    {
    	$name = $_POST['name'];
    	$longueur = $_POST['longueur'];
    	$largeur = $_POST['largeur'];
    	$profondeur = $_POST['profondeur'];
    	$m3 = $_POST['profondeur'];
    
    
    	for($i=0; $i<$number; $i++)
    	{
    		
    			$insertmbr = $bdd->prepare("INSERT INTO tbl_devis (name, largeur, longueur, profondeur, m3) VALUES(?, ?, ?, ?, ?)");
    			$insertmbr->execute(array($name[$i], $largeur[$i], $longueur[$i], $profondeur[$i], $m3[$i]));
    		
    	}
    	echo "Data Inserted";
    }
    else
    {
    	echo "Please Enter Name";
    }

    et voici le formulaire :



    <html>
    	<head>
    		<title>Webslesson Demo - Dynamically Add or Remove input fields in PHP with JQuery</title>
    		<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css" />
    		<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
    		<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.2.0/jquery.min.js"></script>
    	</head>
    	<body>
    		<div class="container">
    			<br />
    			<br />
    			<h2 align="center"><a href="http://www.webslesson.info/2016/02/dynamically-add-remove-input-fields-in-php-with-jquery-ajax.html" title="Dynamically Add or Remove input fields in PHP with JQuery">Dynamically Add or Remove input fields in PHP with JQuery</a></h2><br />
    			<div class="form-group">
    				<form name="add_name" id="add_name">
    					<div class="table-responsive">
    						<table class="table table-bordered" id="dynamic_field">
    							<tr>
    								<td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td>
    								<td><input type="text" name="longueur[]" placeholder="Enter your long" class="form-control name_list" /></td>
    								<td><input type="text" name="largeur[]" placeholder="Enter your larg" class="form-control name_list" /></td>
    								<td><input type="text" name="profondeur[]" placeholder="Enter your pro" class="form-control name_list" /></td>
    								<td><input type="text" name="m3[]" placeholder="Enter your m3" class="form-control name_list" /></td>
    								<td><button type="button" name="add" id="add" class="btn btn-success">Add More</button></td>
    							</tr>
    						</table>
    						<input type="button" name="submit" id="submit" class="btn btn-info" value="Submit" />
    					</div>
    				</form>
    			</div>
    		</div>
    	</body>
    </html>
    
    <script>
    $(document).ready(function(){
    	var i=1;
    	$('#add').click(function(){
    		i++;
    		$('#dynamic_field').append('<tr id="row'+i+'"><td><input type="text" name="name[]" placeholder="Enter your Name" class="form-control name_list" /></td><td><input type="text" name="lonngueur[]" placeholder="Enter your long" class="form-control name_list" /></td><td><input type="text" name="largeur[]" placeholder="Enter your larg" class="form-control name_list" /></td><td><input type="text" name="profondeur[]" placeholder="Enter your pro" class="form-control name_list" /></td><td><input type="text" name="m3[]" placeholder="Enter your m3" class="form-control name_list" /></td><td><button type="button" name="remove" id="'+i+'" class="btn btn-danger btn_remove">X</button></td></tr>');
    	});
    	
    	$(document).on('click', '.btn_remove', function(){
    		var button_id = $(this).attr("id"); 
    		$('#row'+button_id+'').remove();
    	});
    	
    	$('#submit').click(function(){		
    		$.ajax({
    			url:"name.php",
    			method:"POST",
    			data:$('#add_name').serialize(),
    			success:function(data)
    			{
    				alert(data);
    				$('#add_name')[0].reset();
    			}
    		});
    	});
    	
    });
    </script>
    
    
    
    
    

    Quand j'ai une seule entré tout vas bien mais des que je rajoute des inputs j'ai se message :

    Notice: Undefined offset: 1 in C:\wamp64\www\dsfdsfs\TEST-AVEC-DB\name.php on line 27

    Notice: Undefined offset: 2 in C:\wamp64\www\dsfdsfs\TEST-AVEC-DB\name.php on line 27


    La ligne 27 :

    			$insertmbr->execute(array($name[$i], $largeur[$i], $longueur[$i], $profondeur[$i], $m3[$i]));

    Pourriez-vous m'aider s'il vous plaît ! :)

    -
    Edité par Euph0ricks 19 octobre 2018 à 13:45:26

    • Partager sur Facebook
    • Partager sur Twitter
    Cordialement Euph0ricks.
      19 octobre 2018 à 0:36:14

      Bonsoir

      Ton input de type text (sauf erreur) ne peux pas avoir comme nom un array (nom[])

      que donne un :

      var_dump($_POST['name']);

      avant de faire ton "count" (ligne 5 du code que tu viens de nous donner)

      • Partager sur Facebook
      • Partager sur Twitter
        19 octobre 2018 à 12:01:49

        Bonjour Aurélien,

        Merci de m’avoir répondu je te donne la réponse se soir vers 19h15 

        Merci beaucoup

        • Partager sur Facebook
        • Partager sur Twitter
        Cordialement Euph0ricks.
          19 octobre 2018 à 12:03:33

          Du coup, je viens de voir un autre sujet et on peut récupérer un array comme tu le fais. Ce que je ne pensais pas avant
          • Partager sur Facebook
          • Partager sur Twitter
            19 octobre 2018 à 12:08:22 - Message modéré pour le motif suivant : La demande de l'équipe de modération a été honorée


            Pas d'aide concernant le code par MP, le forum est là pour ça :)

              19 octobre 2018 à 13:40:10

              Du coup ta Une idée d’où ça pourrais venir ?

              Pas de soucis lamecarlate

              -
              Edité par Euph0ricks 19 octobre 2018 à 13:43:42

              • Partager sur Facebook
              • Partager sur Twitter
              Cordialement Euph0ricks.
                19 octobre 2018 à 13:45:03

                salut,

                je pense que tu mets une chaine de 3 caractères dans le name => le count() retourne bien la longeuru (3) et tu te fais avoir par le fait que tu n'as qu'un seul input nom dans ton formulaire, tu as copié le formulaire quelque part et tu ne l'as pas adapté à ta sauce CQFD

                • Partager sur Facebook
                • Partager sur Twitter

                PHP : Notice: Undefined offset: 2

                × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                • Editeur
                • Markdown