Problème de variable

Répondre
universdupc
le 23/01/2006 à 08:46
universdupc
SAlut !

Voilà depuis que je suis passé à easyphp 1.8, j'ai eu énormement de problème avec mes scripts. J'ai réussit à en résoudre pas mal, mais sur deux cas je sèche. Je sais vraiment pas pourquoi il accepte pas la forme de ma syntaxe.
Si une personne avait une idéev !

<?php
session_start();
if (!isset($_SESSION['membre_login'])) {
header ('Location: /logiciel/index.php');
exit();
}
?>
<?php
// on inclus les valeurs de configurations
include("conf/config.inc");
?>
<html>
<head>
<title></title>
<LINK REL=stylesheet TYPE="text/css" HREF="css.css">
</head>
<body bgcolor="<?php echo("$color_fond_page"); ?>">
<h3><p><center>Modification du répertoire téléphonique</center></p></h3>
<?

/*_____________________CONNEXION__________________________*/

$db_link=mysql_connect($mysqlhost,$name,$password);

/* _________________RECUP_DES_DONNEES____________________ */

while (list($var, $value) = each($HTTP_GET_VARS))
{
$tab_asso["$var"] = $value;
}

switch ($tab_asso[modifier]){

case 2;
$requete=mysql_db_query("gestion","update gestion_agenda set agenda_nom='$agenda_nom',agenda_prenom='$agenda_prenom',agenda_addresse='$agenda_addresse', agenda_telephone='$agenda_telephone',agenda_email='$agenda_email',agenda_commentaire='$agenda_commentaire' where agenda_id=$agenda_id",$db_link);
echo "<h1 align=center>Mise à jour effectuée<br><br><a href='index.php'>Retour</a>";
break;

default;
$result=mysql_db_query("gestion","select * from gestion_agenda where agenda_id=$agenda_id",$db_link);
$number = MYSQL_NUM_ROWS($result);

$agenda_nom=mysql_result($result,$i,"agenda_nom");
$agenda_prenom=mysql_result($result,$i,"agenda_prenom");
$agenda_addresse=mysql_result($result,$i,"agenda_addresse");
$agenda_telephone=mysql_result($result,$i,"agenda_telephone");
$agenda_email=mysql_result($result,$i,"agenda_email");
$agenda_commentaire=mysql_result($result,$i,"agenda_commentaire");

echo "<hr width='50%'>";
echo "<center><blockquote><table border=0><form method='get' action='modification.php'><input type='hidden' name=modifier value=2><input type='hidden' name=agenda_id value='$agenda_id'>
<tr><td>
<span class='gras'>Nom :</span>
</td><td>
<input type='text' name='agenda_nom' maxlength='50' size='20' value='$agenda_nom'>
</td></tr><tr><td>
<span class='gras'>Prénom :</span>
</td><td>
<input type='text' name='agenda_prenom' maxlength='50' size='20' value='$agenda_prenom'>
</td></tr>
<tr><td>
<span class='gras'>adresse :</span>
</td><td>
<input type='text' name='agenda_addresse' maxlength='50' size='20' value='$agenda_addresse'>
</td></tr>
<tr><td>
<span class='gras'>email :</span>
</td><td>
<input type='text' name='agenda_email' maxlength='50' size='20' value='$agenda_email'>
</td></tr>
<tr><td>
<span class='gras'>telephone :</span>
</td><td>
<input type='text' name='agenda_telephone' maxlength='50' size='20' value='$agenda_telephone'>
</td></tr>
<tr><td>
<span class='gras'>commentaire :</span>
</td><td>
<textarea name='agenda_commentaire' cols='40' rows='10'>$agenda_commentaire</textarea>
</td></tr>
</table></blockquote></center>";
echo "<hr width='50%'>";
echo "<table align='center'><tr><td><input type='submit' value='modifier'></td></form><td><form method=get action='index.php'><input type=submit value='Annuler'></td></form></table>";
break; }

$result=mysql_close($db_link);
?>
</body>
</html>


Il plante à la ligne :

switch ($tab_asso[modifier]){
LA GLOBULE
le 23/01/2006 à 10:09
LA GLOBULE
modifier, c'est quoi une constante ou une chaine de caractères ?

$tab_asso[modifier], c'est différent de $tab_asso['modifier'].

Ensuite, teste l'existence de ta variable avec un if isset.
zebden
le 23/01/2006 à 11:45
zebden
Lu,

alors :

while (list($var, $value) = each($HTTP_GET_VARS))
{
$tab_asso["$var"] = $value;
}

Inutile, utilise directement le tableau $_GET ou $HTTP_GET_VARS a moins d'y effectuer une opération sur ces vars. Ca revient à dire "Je monte en haut" (Pléonasme).

Ensuite $tab[var] correspond comme dit Glob, à definir comme clé du tableau $tab, la constante var et non la chaine de caractère var. Evidement si on definit pas var, var va retourner sa propre valeur var.

Concrétement ca donne :

<?php

$tab = Array('toto' => 'tata');

echo $tab[toto]; // Retourne tata.

define('toto', 'autre');
echo $tab[toto]; // Retourne undefined puisque maintenant on appelle $tab['autre'] qui n'existe pas.
?>


Donc il faut bien délimiter vos chaines dans les tableau pour spécifier une chaine de caracs et non une constante.

Pour ton problème. Y a t'il une erreur renvoyée ? as tu fais un echo de ta var ? la clef d'un tableau renvoyé par un form, correspond au name et non à value. Ensuite pourquoi ne passer par la method POST, beaucoup plus sécurisé pour un formulaire ?
zebdinou pour les intimes / Blog : http://www.zebden.fr
universdupc
le 23/01/2006 à 12:52
universdupc
Voici les erreurs renvoyées :

Notice: Undefined index: modifier in c:\scripts\logiciel\repertoire_tel\modification.php on line 32

Notice: Undefined variable: agenda_id in c:\scripts\logiciel\repertoire_tel\modification.php on line 40

Warning: mysql_num_rows(): supplied argument is not a valid MySQL result resource in c:\scripts\logiciel\repertoire_tel\modification.php on line 41

Notice: Undefined variable: i in c:\scripts\logiciel\repertoire_tel\modification.php on line 43

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\scripts\logiciel\repertoire_tel\modification.php on line 43

Notice: Undefined variable: i in c:\scripts\logiciel\repertoire_tel\modification.php on line 44

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\scripts\logiciel\repertoire_tel\modification.php on line 44

Notice: Undefined variable: i in c:\scripts\logiciel\repertoire_tel\modification.php on line 45

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\scripts\logiciel\repertoire_tel\modification.php on line 45

Notice: Undefined variable: i in c:\scripts\logiciel\repertoire_tel\modification.php on line 46

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\scripts\logiciel\repertoire_tel\modification.php on line 46

Notice: Undefined variable: i in c:\scripts\logiciel\repertoire_tel\modification.php on line 47

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\scripts\logiciel\repertoire_tel\modification.php on line 47

Notice: Undefined variable: i in c:\scripts\logiciel\repertoire_tel\modification.php on line 48

Warning: mysql_result(): supplied argument is not a valid MySQL result resource in c:\scripts\logiciel\repertoire_tel\modification.php on line 48

La clef dans le tableau renvoyé correspond à la value. Oui par la methode Post cela serait plus judicuex.
Mais cela me ferais tout modifier la structure de ma page ? non oui =je sais pas.
zebden
le 23/01/2006 à 13:44
zebden
A mon avis, tu n'y couperas pas à modifier la structure de ta page, donc oui.

Pour tes erreurs, $agenda_id et $i n'existent pas, ce qui renvoie ensuite une erreur avec mysql_result qui a comme un paramètre une var qui n'existe pas et une requête fausse.

// SELECT .. FROM `table` WHERE `agenda_id` =

Et la clef de tableau "modifier" n'existe pas non plus.

Pour tester l'existence d'une variable, on utilise la fonction isset. Définis bien agenda_id et $tab['modifier']. Pour mysql_result, prefère la fonction mysql_fetch_assoc , qui insère la ligne que tu souhaites dans un tableau associatif, avec donc comme clés de tableau, les noms des champs séléctionnés. cela evite d'aller chercher la valeur à chaque fois pour chaques champs.
zebdinou pour les intimes / Blog : http://www.zebden.fr
Répondre

Ecrire un message

Votre message vient d'être créé avec succès.
LoadingChargement en cours