Page 1 sur 1

question mysql

Posté : 28 nov. 2006, 15:58
par laurentg2003
Bonjour,
J'ai un petit soucis.Je voudrais savoir comment modifier le numero, la clé indicée d'un attribut de mysql.
Un exemple pour mieux comprendre
pour recuperer la 1er marque de voiture dans ma table "voiture"
nom de colonne" marque"
je fais le code suivant echo"$marque[0]";seulement quand j'insere dans la table voiture ,une marque de voiture id à 1 comme valeur(logique)
En gros pour afficher une image de la voiture je fais
echo"<img src="galerie/$id.jpg">(l'id est le numero de l'image coincide)
et pour afficher sa marque si je fais echo"$marque[$id]";et bien j'ai la marque de la voiture suivante d'ou un bidouillage du style:
$numbercol=--$id;
echo"$marque[$numbercol] ";
je voudrais donc que le numero de la 1er colonne soit egale à 1 et pas à 0 que le numero de colonne soit egale au numero id.
existe t'il une fonction php ou plus surement un code sql pour initialiser ce numero à 0 cette clé donc?
Merci :wink:

Posté : 28 nov. 2006, 16:18
par DocType
Pourrais-tu montrer du code stp ? car à vra idire je n'ai pas saisi le problème que tu rencontre. Avoir également la structure de la table nous aiderait à t'aider :wink:

Posté : 28 nov. 2006, 16:56
par laurentg2003
Voici mon code c'est un code de test tout ne fonctionne pas la dessus j'apprends lol
<?php
session_start();
$id = intval($_GET['id']);
/*$url=getenv("HTTP_REFERER");
if($url!="")
{header("Location:erreur.htm"); ;exit; }
else
{*/
if (isset($_SESSION['prénom'])) { 
    echo "session existe";
    } else { 
	header("HTTP/1.0 404 Not Found");

    header("Location:erreur.htm"); ;exit; 
}
$col=$id-1;
$_SESSION["col"]=$col;
$n°=$id;


echo"<title>Profil n°$n°" ;echo":  $prénom[$col]</title>"; 

define("H_DEB_BONS",17);
define("H_FIN_BONS",22);
define("H_FIN_NUIT",05); 
define("H_DEB_NUIT",22);
$bonjour="Bonjour";
$bonsoir="Bonsoir";  
$HEURE=date("H");
echo"$HEURE";
$min=date("i");

//$_SESSION["prénom"] = $prénom ; VISIBLEMENT IL N'EST PAS UTILE DE RECUPERER LA $ DE SESSION CELLE CI ETANT DEFINIE A AFFICHE3.PHP UNE BONNE FOIS POUR TOUTE
//$prénom=$_SESSION["prénom"];


$prénom[$col]=ucfirst($prénom[$col]);


if(($HEURE>17) && ($HEURE<23))
{
echo"<center><H2>$bonsoir, je suis <i>$prénom[$col].</i>  Découvrez mon profil!</H2></center> ";
}
elseif(($HEURE<23) && ($HEURE<04))
{
echo"<center><H2>Il est <i>$heure h:$min mn.</i> Je m'appelle<i> $prénom[$col].</i><br>Découvrez mon profil!Et passer une douce nuit.</H2></center>"; 
}

else
{
echo"<center><H2>$bonjour, je suis <i>$prénom[$col].</i>  Découvrez mon profil!</H2></center>"; 
}
echo"<DIV>"; 
//$_SESSION['age']=$age;

//$age = $_SESSION['age'];
$pays = $_SESSION['pays'];




$pays[$col]=ucfirst($pays[$col]);
echo"<H1>$id</H1>";
echo"<center><a href='profil.php?id=$id'><img src='galerie/$id.jpg'alt='$id'></a><br><br>
<b><br>$prénom[$col]<br>$age[$col] ans<br>$pays[$col]</b></center><br>"; 
echo"Derniere connection le $last_connect à $heure<br>";
$file="vide.php";
$date = fileatime($file);
$l=date("i");
$lastvisit="d/m/Y à H:".$l.":s";
echo"Le dernier accés à votre profil date du ",date($lastvisit,$date),"<br>"; 
require ("param.php");
@$connexion = mysql_pconnect (SERVEUR,NOM,PASSE);

if (! $connexion)
{
 echo"<center><H1><b><i>Désolé, le serveur est surchargé.Réessayer plus tard!</i></b></H1></center>\n";
 exit;
}

if (! mysql_select_db (BASE,$connexion))
{
 echo "Désolé,accés à la base " . BASE . " impossible\n";
}

$resultat=mysql_query ("SELECT * FROM user where id='$id'",$connexion);
if ($resultat)
{
while ($valeur = mysql_fetch_assoc($resultat))
{

$last_connect=$valeur['last_connect'];
$heure=$valeur['heure'];
$login_user=$valeur['login_user'];

}
}
//}
?> 
<?php
echo"derniere connection de $login_user le $last_connect à $heure";
?>
 
<br><br><br><br> 

La Base c'est du style nom de table user
id 1
prénom roger
nom dupont
etc


et pour afficher ca
je fais une requete sql et je crée une session
et la c'est la page deux qui affiche le profil
et donc ça fait <img src="galerie/$id.jpg">
prénom : <?php $prenom[$col] ?> ($col=$id-1)
le 1er prénom a le numero de colonne de clé indicé à 0
alors que l'id est 1
ensuite 2ieme prénom numero de clé est 1 et id est 2
et je veux donc que ne numero de clé soit égale à l'id
et donc faire
prénom :<php? echo"$prenom[$id]";
et <img src="galerie/$id.jpg ">;
et pas de bidouillage du style $col=$id-1
ou pire récuperer ça dans une session
voilà
je precise que je test et que je ne me suis pas occupé de la sécurité
merci :wink:

Posté : 28 nov. 2006, 17:22
par DocType
oki, je vois, remonter tout ton tableau d'un index...
le mieux c'est de le reindexer en partant de la plus grande valeur à 0. TU peux faire via un while() associé à count() sur ton tableau. Dans ton while tu définie ta nouvelle clef = clef actuelle +1 :wink:

Posté : 28 nov. 2006, 17:52
par laurentg2003
ok je vois le principe
Tu peux me donner un petit exemple que je visualise mieux? :roll:

Posté : 28 nov. 2006, 17:59
par DocType
solution plus simple
$tableau2 = Array();
foreach($tableau as $key => $value)
{
    $tableau2[$key+1] = $value;
}
Ton tableau au final est $tableau2

Posté : 28 nov. 2006, 18:10
par laurentg2003
ok j'ai compris
super merci pour tout
En fait j'avais pas pensé a ça :lol:

Posté : 28 nov. 2006, 18:17
par laurentg2003
Une derniere question (je suis un enragé lol)
Qu'est qui est le mieux pour afficher des images
ce que je fais
echo'<img src="galerie/$id.jpg">';
Chaque $id d'un profil coresspondant à son image .
Ou le mieux et de créer un champs image dans mysql ou on insere l'url de l'image et de récupérer l'image avec :
echo'<img src="$image">';
:?:

Posté : 28 nov. 2006, 18:32
par DocType
Le mieux c'est ça=>
echo "<img src='galerie/".$id.".jpg'>"; 
Observe bien l'ordre des " ' et la concaténation avec la variable :wink:

Posté : 28 nov. 2006, 18:38
par laurentg2003
oui la on respecte vraiment la bonne syntaxe
dorenavant je coderai comme ça
est ce que cette maniere là
echo'<img src="galerie/$id.jpg">';
pose un probleme de sécurité sinon?

Posté : 28 nov. 2006, 18:47
par DocType
pas réellement, masi ce n'est pas la bonne méthode. Ca peut planter sur certains serveurs, et ce n'est pas optimisé...faut toujours faire ressortir une variable d'une chaîne de caractère. Imagine:
$doc = "boubyouyou";
echo "$doc est identique ou différent de $document ?";
Que va afficher ton script ?...
Il faut donc concaténer les chaines de caractères aux variables pour éviter ces désagréments.

Sinon, en concaténation, un script va plus vite à faire un
echo "boy".$variable;
plutôt que
echo 'boy'.$variable;

Posté : 28 nov. 2006, 18:58
par laurentg2003
d'accord on gagne en efficassité et en vitesse d'exécution. :wink:
je vais réécrire tout mes codes
merci

Posté : 28 nov. 2006, 19:12
par DocType
de rien :wink: