Précédent   Forum des professionnels en informatique > PHP > Langage > Syntaxe
Syntaxe Forum d'entraide sur la syntaxe de PHP et la POO. Avant de poster -> FAQ syntaxe, Cours d'initiation et cours de POO
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 07/08/2011, 20h10   #1
Membre Expert
 
Avatar de beegees
 
Homme David Vincent (l'homme qui a vu les extra-terrestres)
Développeur Web
Inscription : mars 2004
Messages : 3 239
Détails du profil
Informations personnelles :
Nom : Homme David Vincent (l'homme qui a vu les extra-terrestres)
Âge : 37
Localisation : Belgique

Informations professionnelles :
Activité : Développeur Web
Secteur : Enseignement

Informations forums :
Inscription : mars 2004
Messages : 3 239
Points : 1 046
Points : 1 046
Par défaut Un foreach qui ne tient pas compte de toutes les variables

Bonsoir à tous,

Je suis devant un problème où je n'ai absolument aucune explication :

J'ai un form tout simple :

Code :
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
<form name="maj_ldt" method="post" action="patient.php">
      <ul id="sortable">
    <?php
        $i=0;
	$sql =  "SELECT * FROM neuro_event WHERE patient_id = '".$_SESSION['dmu']."' ORDER BY position ASC";
	echo $sql;
	$req = mysql_query($sql) or die(mysql_error());
	while($d = mysql_fetch_assoc($req)){
	  $i++;
	?>
	<li <?php echo 'id="exam_'.$i.'"'; ?> >
	  <span class="ui-icon ui-icon-arrowthick-2-n-s"></span>
      <?php $examen = explode("_",$d['content_type_id']); ?>
	    <input type="hidden" name="category[<?php echo $i; ?>][id]" value="<?php echo $d["id"]; ?>"/>
	    <input type="hidden" name="category[<?php echo $i; ?>][patient_id]" value="<?php echo $d["patient_id"]; ?>"/>
        <input type="text" name="category[<?php echo $i; ?>][event_date]" disabled="disabled" value="<?php echo $d["event_date"]; ?>"/>
        <input type="hidden" name="category[<?php echo $i; ?>][content_type_id]" value="<?php echo $d["content_type_id"]; ?>"/>
	    <input type="hidden" class="positionInput" name="category[<?php echo $i; ?>][position]" value="<?php echo $d["position"]; ?>"/>
	</li>
	<?php
	}
    ?>
      </ul>
    <input type="submit" value="Enregistrer"/>
    </form>
Qui fait appel à la même page pour être traité avec ce code :

Code :
1
2
3
4
5
6
7
8
9
if(!empty($_POST)){
    $cat = $_POST["category"];
    foreach( $cat as $c){
	extract($c);
	$sql = "UPDATE neuro_event SET patient_id='$patient_id', content_type_id = '$content_type_id', event_date = '$event_date', position=$position WHERE id=$id";
	echo $sql;
	//mysql_query($sql) or die(mysql_error());
    }
}
Le foreach ne reçoit pas un champ

celui-ci :

Code :
 <input type="text" name="category[<?php echo $i; ?>][event_date]" disabled="disabled" value="<?php echo $d["event_date"]; ?>"/>
J'ai cet avertissement :

Citation:
Notice: Undefined variable: event_date in C:\Program Files (x86)\EasyPHP-5.3.6.0\www\Neuro\patient.php on line 11
Si je mets un simple var_dump, j'ai ceci :

Citation:
array
'category' =>
array
2 =>
array
'id' => string '178' (length=3)
'patient_id' => string '20010102FG02' (length=12)
'content_type_id' => string 'irm_20010102FG02_178' (length=20)
'position' => string '1' (length=1)
1 =>
array
'id' => string '170' (length=3)
'patient_id' => string '20010102FG02' (length=12)
'content_type_id' => string 'irm_20010102FG02_170' (length=20)
'position' => string '1' (length=1)
J'ai vérifié avec Firebug, l'input event_date est généré sur la page HTML

là, je sèche... auriez-vous une idée ?

Merci d'avance.

beegees
__________________
beegees est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 00h55   #2
Membre habitué
 
Homme Lucas GAUTHERON
Lycéen
Inscription : décembre 2008
Messages : 106
Détails du profil
Informations personnelles :
Nom : Homme Lucas GAUTHERON

Informations professionnelles :
Activité : Lycéen

Informations forums :
Inscription : décembre 2008
Messages : 106
Points : 145
Points : 145
utilise readonly="readonly" au lieu de disabled="disabled"
lucas74 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/08/2011, 09h07   #3
Rédacteur
 
Avatar de jreaux62
 
Homme Jérôme Réaux
Webdesigner
Inscription : août 2008
Messages : 2 993
Détails du profil
Informations personnelles :
Nom : Homme Jérôme Réaux
Âge : 45
Localisation : France, Pas de Calais (Nord Pas de Calais)

Informations professionnelles :
Activité : Webdesigner
Secteur : Arts - Culture

Informations forums :
Inscription : août 2008
Messages : 2 993
Points : 5 786
Points : 5 786
Envoyer un message via Skype™ à jreaux62
Citation:
Envoyé par lucas74 Voir le message
utilise readonly="readonly" au lieu de disabled="disabled"
++ (testé et approuvé !)
Je ne connaissais pas cette façon de faire. Je suis donc aller voir le manuel pour extract(), et j'ai vu les Avertissements :
Citation:
N'utilisez pas extract() sur des données inconnues, comme les données utilisateurs (i.e. $_GET, $_FILES, etc.). [...]
Citation:
Cette façon de faire n'est pas recommandée et est uniquement documentée ici pour bien comprendre le comportement. [...].
Qui plus est, la requête n'est ABSOLUMENT PAS protégée contre les injections SQL ! -> mysql_real_escape_string()
__________________
"Ce qui se conçoit bien s'énonce clairement - Et les mots pour le dire arrivent aisément."
Nicolas Boileau-Despréaux, Homme de lettres français (1636-1711), principal théoricien de l'esthétique classique.
Site perso Mes tutos DVP : Gestion-Affichage de Nouvelles - Affichage en tableau HTML - Fonctions de redimensionnement d'images
jreaux62 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 12h55.


 
 
 
 
Partenaires

Hébergement Web