2012-09-24 4 views
1

J'ai un formulaire, dont les champs peuvent être augmentés en cliquant sur le signe '[+]'.Je veux stocker des données de forme dynamiquement croissant dans la base de données

le code que j'utilise pour la forme est Description de Quantité Prix « ;

// Loop to prepare the display of 100 product lines 
for ($i=0; $i<100; $i++) { 

    if ($text['quantity'][$i] == "") $text['quantity'][$i] = 1; 
    if ($text['unit'][$i] == "") $text['unit'][$i] = "0.00"; 
    // Display only the first line 
    if ($nbr_ligne == 0) $nbr_ligne = 1; 
    if ($i >= $nbr_ligne) $display = 'style="display:none"'; 
    echo ' 
    <tr id="cell'.$i.'" '.$display.'> 
     <td> 
      <textarea name="text[detail]['.$i.']">'.stripslashes($text['detail'][$i]).'</textarea> 
      <br /> 
      <a href="javascript:void(0)" onclick="javascript:document.getElementById(\'cell'.($i+1).'\').style.display=\'table-row\'; this.style.display=\'none\'">[+]</a> 
     </td> 
     <td> 
      <input name="text[quantity]['.$i.']" id="q'.$i.'" value="'.stripslashes($text['quantity'][$i]).'" size="4" /> 
     </td> 
     <td> 
      <input name="text[unit]['.$i.']" id="u'.$i.'" value="'.stripslashes($text['unit'][$i]).'" size="7" /> USD 
     </td> 
    </tr>'; 
} 

echo ' 
    </table> 
    <input type="submit" name="save" value="Save" /> 
</form> 
'; 
if(isset($_POST['save'])) 
{ 
    echo $text['quantity']['.$i.']; 

     mysql_connect("localhost","root",""); 
     mysql_select_db("rvt") or die("unable to select db"); 
     extract($_POST); 
     $insert=mysql_query("insert into add(description, quantity, price) values('$text[detail][".$i."]','$text[quantity][".$i."]','$text[unit][".$i."]')"); 
    if($insert) 
    { 
     echo "hi"; 
    } 
} 
?> 

Je veux stocker les données dans la base de données. Ça ne marche pas.

Plz m'aider à stocker des données dans la base de données.

+0

Ça ne marche pas comment? – Petah

+0

@Petah Il n'insère pas les données dans la base de données. –

+0

Mettez en echo mysql_error ($ db) et voyez ce qu'il dit? –

Répondre

0

Votre requête ne fonctionnera pas en raison d'un "bogue" de l'analyseur PHP. Il est pas un analyseur gourmand, donc quelque chose comme:

echo "$array[1][2]"; 

produira effectivement en sortie

Array[2] <---yes, the literal word 'Array'. 

et non quelle que soit la valeur est stockée à l'index 2 du sous-tableau à l'index 1.

car l'analyseur PHP arrête de considérer les références de tableau après le premier ensemble de []. Vous devez utiliser la notation {}:

... values('{$text['detail'][$i]}', etc... 
      ^    ^

note la position du {} et le ' supplémentaire autour de la clé de détail.

De même, veuillez ne pas utiliser extract(), en particulier sur _GET/_POST. Vous reproduisez essentiellement les horribles et horribles vilains jours où register_globals a été activé en PHP. C'est un trou de sécurité qui n'attend que d'être exploité.

+0

Aussi vous devriez vous connecter à DB juste une fois par script php, vous devez donc faire la connexion avant d'utiliser la boucle for –

Questions connexes