encore une fois j'ai une question pour le STACKOVERFLOW hivemind. Voici l'affaire, j'essaie d'insérer toutes mes données $ _POST d'un formulaire dans une table mysql. Avant, je ne:
INSERT INTO forms (Place, Date, Find, username, who_sponsored, hours, comments, howdiditgo, studentleader_name, studentleader_email, description)
VALUES ('$place', '$date','$where', '$username', '$who', '$hours', '$comments', '$how', '$description',)");
où toutes les valeurs de $ ont été déclarés comme $ _POST [ 'Place'], $ _POST [ 'Date'], etc. Maintenant, chaque fois que j'ajouter une nouvelle partie à la forme (comme un autre textarea ou quelque chose), je veux juste créer une nouvelle colonne dans mysql au lieu d'ajouter un autre $ _POST ['foo']. Voici ce que j'ai essayé de faire:
// In the previous form, I have set all input ids to "service[]", so all this data would be in a more specific array than just $POST. Turns out all the $_POST['service'] stuff is null... Here's an example: <input name="placeofservice" type="text" id="service[]">
$forms = serialize($_POST['service']);
var_dump($forms);
mysql_query("INSERT INTO forms VALUES('$forms')")
or die(mysql_error());
L'erreur que je continue à recevoir est: Nombre de colonnes ne correspond pas au nombre de valeurs à la ligne 1. Je sais que cela veut dire que je suis en train de mettre trop de données dans la base de données, car il n'y a pas assez de colonnes pour s'adapter aux données. J'ai vérifié dans les deux sens pour voir si je l'ai bien (ce que, je pense que je fais). Pour référence, voici mon code pour la table de forme et mysql:
<form name="form1" method="post" action="process_form.php">
Place of Service</br>
<input name="placeofservice" type="text" id="service[]"></br>
Date of Service</br>
<input name="dateofservice" type="text" id="service[]"></br>
Where did you find this opportunity?</br>
<input name="where" type="text" id="service[]"></br>
What organization sponsored this opportunity?</br>
<input name="who_sponsored" type="text" id="service[]"></br>
How many hours did you work?</br>
<input name="hours" type="text" id="service[]"></br>
How did it go?</br>
<input type="text" id="service[]" name="howdiditgo" maxlength="100" /></br>
Description of Service:
<textarea name="description" id="service[]" COLS=40 ROWS=6></textarea></br>
Comments:
<textarea name="comments" id="service[]" COLS=40 ROWS=6></textarea></br>
Student Leader Name (If Applicable)</br>
<input name="studentleader_name" type="text" id="service[]"></br>
Student Leader Email(If Applicable)</br>
<input name="studentleader_email" type="text" id="service[]"></br>
<input type="submit" name="Submit" value="Submit">
</form>
Mysql Tableau:
Place | Date | Trouver | form_id | who_sponsored | heures | commentaires | howdiditgo | description studentleader_name | studentleader_email | nom d'utilisateur
REMARQUE: Je prévois également de désinfecter le contenu de ma base de données/$ POST, mais pour mes besoins, je l'ai omis! Si vous avez des questions, ne hésitez pas à poser et je vais poster ici avec EDIT: balises :)
Vous ne devriez pas avoir à ajouter des données sérialisés à la base de données. Vous voudrez peut-être utiliser une base de données orientée document, comme [Mongo] (http://www.mongodb.org/) – quantumSoup
Il peut simplement rester non sérialisé? –